[llvm-branch-commits] [flang] [llvm] [mlir] [OpenMP][MLIR] Modify OpenMP Dialect lowering to support attach mapping (PR #179023)
Sergio Afonso via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Apr 6 08:28:47 PDT 2026
================
@@ -5306,18 +5386,41 @@ static void processMapWithMembersOf(LLVM::ModuleTranslation &moduleTranslation,
// Clang maps array without bounds as pointers (which we do not
// currently do), whereas we treat them as arrays in all cases
// currently.
- processIndividualMap(mapData, memberDataIdx, combinedInfo, targetDirective,
- mapDataIndex);
+ processIndividualMap(builder, ompBuilder, mapData, memberDataIdx,
+ combinedInfo, targetDirective,
+ llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_NONE,
+ true, mapDataIndex);
return;
}
- llvm::omp::OpenMPOffloadMappingFlags memberOfParentFlag =
+ auto collectMapInfoIdxs =
+ [&](llvm::SmallVectorImpl<int64_t> &mapsAndInfoIdx) {
+ auto parentClause =
+ llvm::cast<omp::MapInfoOp>(mapData.MapClause[mapDataIndex]);
+ mapsAndInfoIdx.push_back(getMapDataMemberIdx(mapData, parentClause));
+ for (auto member : parentClause.getMembers())
+ mapsAndInfoIdx.push_back(getMapDataMemberIdx(
+ mapData, llvm::cast<omp::MapInfoOp>(member.getDefiningOp())));
+ };
+
+ llvm::SmallVector<int64_t> mapInfoIdx;
+ collectMapInfoIdxs(mapInfoIdx);
+
+ llvm::omp::OpenMPOffloadMappingFlags memberOfFlag =
+ ompBuilder.getMemberOfFlag(combinedInfo.Types.size());
+ for (size_t i = 0; i < mapInfoIdx.size(); i++) {
+ // Index == 0 is the parent map and if it gets here it's an unattachable
+ // type and should have OMP_MAP_TARGET_PARAM applied and no MEMBER_OF flag.
+ if (i == 0) {
mapParentWithMembers(moduleTranslation, builder, ompBuilder, dl,
- combinedInfo, mapData, mapDataIndex,
+ combinedInfo, mapData, mapInfoIdx[i], memberOfFlag,
targetDirective);
- processMapMembersWithParent(moduleTranslation, builder, ompBuilder, dl,
- combinedInfo, mapData, mapDataIndex,
- memberOfParentFlag, targetDirective);
+ } else {
+ processIndividualMap(builder, ompBuilder, mapData, mapInfoIdx[i],
+ combinedInfo, targetDirective, memberOfFlag, false,
----------------
skatrak wrote:
```suggestion
combinedInfo, targetDirective, memberOfFlag, /*isTargetParam=*/ false,
```
https://github.com/llvm/llvm-project/pull/179023
More information about the llvm-branch-commits
mailing list