! Basic test of use_device_ptr, checking if the appropriate ! addresses are maintained across target boundaries ! REQUIRES: clang, flang, amdgcn-amd-amdhsa ! RUN: %clang -c -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa \ ! RUN: %S/../../Inputs/target-use-dev-ptr.c -o target-use-dev-ptr_c.o ! RUN: %libomptarget-compile-fortran-generic target-use-dev-ptr_c.o ! RUN: %t | %fcheck-generic program use_device_test use iso_c_binding interface type(c_ptr) function get_ptr() BIND(C) USE, intrinsic :: iso_c_binding implicit none end function get_ptr integer(c_int) function check_result(host, dev) BIND(C) USE, intrinsic :: iso_c_binding implicit none type(c_ptr), value, intent(in) :: host, dev end function check_result end interface type(c_ptr) :: device_ptr, x x = get_ptr() device_ptr = x !$omp target data map(tofrom: x) use_device_ptr(x) device_ptr = x !$omp end target data print *, check_result(x, device_ptr) end program use_device_test ! CHECK: SUCCESS