================ @@ -195,6 +196,48 @@ EXTERN int omp_target_is_present(const void *Ptr, int DeviceNum) { return Rc; } +/// Check whether a pointer is accessible from a device. +/// the functionality is available in OpenMP 5.1 and later +/// OpenMP 5.1 +/// omp_target_is_accessible checks whether a host pointer is accessible from a +/// device OpenMP 6.0 removes restriction on pointer, allowing any pointer +/// interpreted as a pointer in the address space of the given device. +EXTERN int omp_target_is_accessible(const void *Ptr, size_t Size, + int DeviceNum) { + TIMESCOPE(); + OMPT_IF_BUILT(ReturnAddressSetterRAII RA(__builtin_return_address(0))); + DP("Call to omp_target_is_accessible for device %d, address " DPxMOD + ", size %zu\n", + DeviceNum, DPxPTR(Ptr), Size); + + if (!Ptr) { + DP("Call to omp_target_is_accessible with NULL ptr returning false\n"); + return false; + } + + if (DeviceNum == omp_get_initial_device()) { ---------------- mjklemm wrote:
Please do the correct check in this routine. I agree with your position of creating a new PR for fixing up the other routines. Can you please record that as an issue? https://github.com/llvm/llvm-project/pull/138294 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits