blob: b97e5a99de82d87592293f7e9821ca69c2da6306 [file] [edit]
!REQUIRES: flang, amdgpu
!Test derived from the sollve test for has-device-addr.
!RUN: %libomptarget-compile-fortran-run-and-check-generic
module m
use iso_c_binding
contains
subroutine target_has_device_addr()
integer, target :: x
integer, pointer :: first_scalar_device_addr
type(c_ptr) :: cptr_scalar1
integer :: res1, res2
nullify (first_scalar_device_addr)
x = 10
!$omp target enter data map(to: x)
!$omp target data use_device_addr(x)
x = 11
cptr_scalar1 = c_loc(x)
!$omp end target data
call c_f_pointer (cptr_scalar1, first_scalar_device_addr)
!$omp target map(to: x) map(from: res1, res2) &
!$omp & has_device_addr(first_scalar_device_addr)
res1 = first_scalar_device_addr
res2 = x
!$omp end target
print *, "res1", res1, "res2", res2
end subroutine
end module
program p
use m
call target_has_device_addr()
end
!CHECK: res1 11 res2 11