46 lines · plain
1!REQUIRES: flang, amdgpu2 3!Test derived from the sollve test for has-device-addr.4 5!RUN: %libomptarget-compile-fortran-run-and-check-generic6 7module m8 use iso_c_binding9 10contains11 subroutine target_has_device_addr()12 integer, target :: x13 integer, pointer :: first_scalar_device_addr14 type(c_ptr) :: cptr_scalar115 16 integer :: res1, res217 18 nullify (first_scalar_device_addr)19 x = 1020 21 !$omp target enter data map(to: x)22 !$omp target data use_device_addr(x)23 x = 1124 cptr_scalar1 = c_loc(x)25 !$omp end target data26 27 call c_f_pointer (cptr_scalar1, first_scalar_device_addr)28 29 !$omp target map(to: x) map(from: res1, res2) &30 !$omp & has_device_addr(first_scalar_device_addr)31 res1 = first_scalar_device_addr32 res2 = x33 !$omp end target34 print *, "res1", res1, "res2", res235 end subroutine36end module37 38 39program p40 use m41 42 call target_has_device_addr()43end44 45!CHECK: res1 11 res2 1146