! See also "lib-16.f90".
! { dg-do run }
! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }

program main
  implicit none
  include "openacc_lib.h"

  integer, parameter :: N = 256
  integer, allocatable :: h(:)
  integer :: i
  integer :: async = 5

  allocate (h(N))

  do i = 1, N
    h(i) = i
  end do 

  call acc_copyin (h)

  do i = 1, N
    h(i) = i + i
  end do 

  call acc_update_device_async (h, sizeof (h), async)

  if (acc_is_present (h) .neqv. .TRUE.) stop 1

  call acc_wait (async)

  h(:) = 0

  call acc_copyout_async (h, sizeof (h), async)

  call acc_wait (async)

  do i = 1, N
    if (h(i) /= i + i) stop 2
  end do 

  call acc_copyin (h, sizeof (h))

  h(:) = 0

  call acc_update_self_async (h, sizeof (h), async)
  
  if (acc_is_present (h) .neqv. .TRUE.) stop 3

  call acc_wait (async)

  do i = 1, N
    if (h(i) /= i + i) stop 4
  end do 

  call acc_delete_async (h, async)

  call acc_wait (async)

  if (acc_is_present (h) .neqv. .FALSE.) stop 5
  
end program
