forked from OSchip/llvm-project
[OpenMP] Avoid checking parent reference count in targetDataEnd
The patch has the following benefits: * Eliminates a lock/unlock of the data mapping table. * Clarifies the logic that determines whether a struct member's device-to-host transfer occurs. The old logic, which checks the parent struct's reference count, is a leftover from back when we had a different map interface (as pointed out at <https://reviews.llvm.org/D104924#2846972>). Reviewed By: grokos Differential Revision: https://reviews.llvm.org/D104924
This commit is contained in:
parent
8f4e5474de
commit
1d0456361a
|
@ -731,14 +731,8 @@ int targetDataEnd(ident_t *loc, DeviceTy &Device, int32_t ArgNum,
|
|||
if (!(PM->RTLs.RequiresFlags & OMP_REQ_UNIFIED_SHARED_MEMORY) ||
|
||||
HasCloseModifier) {
|
||||
if ((ArgTypes[I] & OMP_TGT_MAPTYPE_MEMBER_OF) &&
|
||||
!(ArgTypes[I] & OMP_TGT_MAPTYPE_PTR_AND_OBJ)) {
|
||||
// Copy data only if the "parent" struct has RefCount==1.
|
||||
int32_t ParentIdx = getParentIndex(ArgTypes[I]);
|
||||
uint64_t ParentRC = Device.getMapEntryRefCnt(Args[ParentIdx]);
|
||||
assert(ParentRC > 0 && "parent struct not found");
|
||||
if (ParentRC == 1)
|
||||
CopyMember = true;
|
||||
}
|
||||
!(ArgTypes[I] & OMP_TGT_MAPTYPE_PTR_AND_OBJ))
|
||||
CopyMember = IsLast;
|
||||
}
|
||||
|
||||
if ((DelEntry || Always || CopyMember) &&
|
||||
|
|
Loading…
Reference in New Issue