1! { dg-do run } 2! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } 3 4program main 5 use openacc 6 implicit none 7 8 integer, parameter :: N = 256 9 integer, allocatable :: h(:) 10 integer :: i 11 12 allocate (h(N)) 13 14 do i = 1, N 15 h(i) = i 16 end do 17 18 call acc_copyin (h) 19 20 do i = 1, N 21 h(i) = i + i 22 end do 23 24 call acc_update_device (h, sizeof (h)) 25 26 if (acc_is_present (h) .neqv. .TRUE.) stop 1 27 28 h(:) = 0 29 30 call acc_copyout (h, sizeof (h)) 31 32 do i = 1, N 33 if (h(i) /= i + i) stop 2 34 end do 35 36 call acc_copyin (h, sizeof (h)) 37 38 h(:) = 0 39 40 call acc_update_self (h, sizeof (h)) 41 42 if (acc_is_present (h) .neqv. .TRUE.) stop 3 43 44 do i = 1, N 45 if (h(i) /= i + i) stop 4 46 end do 47 48 call acc_delete (h) 49 50 if (acc_is_present (h) .neqv. .FALSE.) stop 5 51 52end program 53