PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / data-5.f90
bloba8843dedc22281b4762ce0ecc5378e48a2bf6cfb
1 ! { dg-do run }
2 ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }
4 program refcount_test
5 use openacc
6 integer, allocatable :: h(:)
7 integer i, N
9 N = 256
10 allocate (h(N))
12 do i = 1, N
13 h(i) = i
14 end do
16 !$acc enter data create (h(1:N))
17 !$acc enter data copyin (h(1:N))
18 !$acc enter data copyin (h(1:N))
19 !$acc enter data copyin (h(1:N))
21 call acc_update_self (h)
22 do i = 1, N
23 if (h(i) .eq. i) c = c + 1
24 end do
25 ! h[] should be filled with uninitialized device values,
26 ! abort if it's not.
27 if (c .eq. N) call abort
29 h(:) = 0
31 !$acc parallel present (h(1:N))
32 do i = 1, N
33 h(i) = 111
34 end do
35 !$acc end parallel
37 ! No actual copyout should happen.
38 call acc_copyout (h)
39 do i = 1, N
40 if (h(i) .ne. 0) call abort
41 end do
43 !$acc exit data delete (h(1:N))
45 ! This should not actually be deleted yet.
46 if (acc_is_present (h) .eqv. .FALSE.) call abort
48 !$acc exit data copyout (h(1:N)) finalize
50 do i = 1, N
51 if (h(i) .ne. 111) call abort
52 end do
54 if (acc_is_present (h) .eqv. .TRUE.) call abort
56 end program refcount_test