non-scalar-data.f90: Don't pass parameter variables to subroutines.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / non-scalar-data.f90
blob94e4228e7a974bbe8dcd09320167025ac8344527
1 ! Ensure that a non-scalar dummy arguments which are implicitly used inside
2 ! offloaded regions are properly mapped using present_or_copy.
4 ! { dg-do run }
6 program main
7 implicit none
9 integer,parameter :: size = 100
10 integer :: array(size), i, n
12 n = size
14 !$acc data copy(array)
15 call kernels(array, n)
17 !$acc update host(array)
19 do i = 1, n
20 if (array(i) .ne. i) call abort
21 end do
23 call parallel(array, n)
24 !$acc end data
26 do i = 1, n
27 if (array(i) .ne. i+i) call abort
28 end do
29 end program main
31 subroutine kernels (array, n)
32 integer, dimension (n) :: array
33 integer :: n, i
35 !$acc kernels
36 do i = 1, n
37 array(i) = i
38 end do
39 !$acc end kernels
40 end subroutine kernels
43 subroutine parallel (array, n)
44 integer, dimension (n) :: array
45 integer :: n, i
47 !$acc parallel
48 do i = 1, n
49 array(i) = i+i
50 end do
51 !$acc end parallel
52 end subroutine parallel