! { dg-do run } ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } ! Fortran version of libgomp.oacc-c-c++-common/lib-95.c program main use iso_c_binding use openacc implicit none (type, external) integer(c_size_t), parameter :: N = 127 integer(c_size_t) :: i integer(acc_handle_kind) :: q = 5 integer(kind=1), allocatable :: h(:), g(:) type(c_ptr) :: d q = 5 allocate (h(-N:N), g(-N:N)) do i = -N, N g(i) = i end do call acc_create_async (h, 2*N + 1, q) call acc_memcpy_to_device_async (acc_deviceptr (h), g, 2*N + 1, q) call acc_wait (q) h = 0 call acc_update_self_async (h, 2*N + 1, q + 1) call acc_delete_async (h, 2*N + 1, q + 1) call acc_wait (q + 1) do i = -N, N if (h(i) /= i) & stop 1 end do deallocate (h, g) end