Skip to content

Commit a8864c6

Browse files
committed
Fixes smoke-fort-dev/flang-471469.
1 parent 97753ee commit a8864c6

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3550,24 +3550,26 @@ static void collectMapDataFromMapOperands(
35503550
mapOp, mapOp.getMapperIdAttr()));
35513551
else
35523552
mapData.Mappers.push_back(nullptr);
3553-
mapData.IsAMapping.push_back(true);
3553+
bool hasMapDescriptor =
3554+
(mapData.Types.back() &
3555+
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DESCRIPTOR) ==
3556+
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DESCRIPTOR;
3557+
mapData.IsAMapping.push_back(!hasMapDescriptor);
35543558
mapData.IsAMember.push_back(checkIsAMember(mapVars, mapOp));
35553559
}
35563560

35573561
auto findMapInfo = [&mapData](llvm::Value *val,
3558-
llvm::OpenMPIRBuilder::DeviceInfoTy devInfoTy,
3559-
size_t memberCount) {
3562+
llvm::OpenMPIRBuilder::DeviceInfoTy devInfoTy) {
3563+
unsigned index = 0;
35603564
bool found = false;
3561-
for (size_t index = 0; index < mapData.OriginalValue.size(); ++index) {
3562-
auto mapInfoOp = dyn_cast<omp::MapInfoOp>(mapData.MapClause[index]);
3563-
if (mapData.IsAMapping[index] && mapData.Pointers[index] == val &&
3564-
mapData.BasePointers[index] == val &&
3565-
memberCount == mapInfoOp.getMembers().size()) {
3565+
for (llvm::Value *basePtr : mapData.OriginalValue) {
3566+
if (basePtr == val && mapData.IsAMapping[index]) {
35663567
found = true;
35673568
mapData.Types[index] |=
35683569
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_RETURN_PARAM;
35693570
mapData.DevicePointers[index] = devInfoTy;
35703571
}
3572+
index++;
35713573
}
35723574
return found;
35733575
};
@@ -3582,7 +3584,7 @@ static void collectMapDataFromMapOperands(
35823584
llvm::Value *origValue = moduleTranslation.lookupValue(offloadPtr);
35833585

35843586
// Check if map info is already present for this entry.
3585-
if (!findMapInfo(origValue, devInfoTy, mapOp.getMembers().size())) {
3587+
if (!findMapInfo(origValue, devInfoTy)) {
35863588
mapData.OriginalValue.push_back(origValue);
35873589
mapData.Pointers.push_back(mapData.OriginalValue.back());
35883590
mapData.IsDeclareTarget.push_back(false);

0 commit comments

Comments
 (0)