================ @@ -444,6 +486,29 @@ DeviceTy::getTgtPtrBegin(void *HstPtrBegin, int64_t Size, bool UpdateRefCount, LR.TPR.getEntry()->dynRefCountToStr().c_str(), DynRefCountAction, LR.TPR.getEntry()->holdRefCountToStr().c_str(), HoldRefCountAction); LR.TPR.TargetPointer = (void *)TP; + + // If this entry is not marked as being host pointer (the way the + // implementation works today this is never true, mistake?) then we + // have to check if this is a host pointer or not. This is a host pointer + // if the host address matches the target address. + if ((PM->RTLs.RequiresFlags & OMP_REQ_UNIFIED_SHARED_MEMORY) && + !LR.TPR.Flags.IsHostPointer) { + // If addresses match it means that we are dealing with a host pointer + // which has to be marked as one and present flag reset: + if (LR.TPR.getEntry()->TgtPtrBegin == LR.TPR.getEntry()->HstPtrBegin) { + LR.TPR.Flags.IsPresent = false; ---------------- carlobertolli wrote:
Again, still odd: do we not always use getTargetPointer to add a new entry and before calling getTgtPtrBegin? Again, it might be that I do not understand how these APIs are used. https://github.com/llvm/llvm-project/pull/69005 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits