! { dg-do run } ! ! Test data located inside common blocks. This test does not exercise ! ACC DECLARE. module const integer, parameter :: n = 100 end module const subroutine check use const implicit none integer i, x(n), y common /BLOCK/ x, y do i = 1, n if (x(i) .ne. y) stop 1 end do end subroutine check module m use const integer a(n), b common /BLOCK/ a, b contains subroutine mod_implicit_incr implicit none integer i !$acc parallel loop do i = 1, n a(i) = b end do !$acc end parallel loop call check end subroutine mod_implicit_incr subroutine mod_explicit_incr implicit none integer i !$acc parallel loop copy(a(1:n)) copyin(b) do i = 1, n a(i) = b end do !$acc end parallel loop call check end subroutine mod_explicit_incr end module m subroutine sub_implicit_incr use const implicit none integer i, x(n), y common /BLOCK/ x, y !$acc parallel loop do i = 1, n x(i) = y end do !$acc end parallel loop call check end subroutine sub_implicit_incr subroutine sub_explicit_incr use const implicit none integer i, x(n), y common /BLOCK/ x, y !$acc parallel loop copy(x(1:n)) copyin(y) do i = 1, n x(i) = y end do !$acc end parallel loop call check end subroutine sub_explicit_incr program main use m implicit none a(:) = -1 b = 5 call mod_implicit_incr a(:) = -2 b = 6 call mod_explicit_incr a(:) = -3 b = 7 call sub_implicit_incr a(:) = -4 b = 8 call sub_explicit_incr end program main