[llvm-branch-commits] [flang] [Flang][OpenMP][MLIR] Initial derived type member map support (PR #82853)
Sergio Afonso via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Apr 23 05:50:21 PDT 2024
================
@@ -218,17 +223,34 @@ bool ClauseProcessor::processMotionClauses(
// Explicit map captures are captured ByRef by default,
// optimisation passes may alter this to ByCopy or other capture
// types to optimise
- mlir::Value mapOp = createMapInfoOp(
+ mlir::omp::MapInfoOp mapOp = createMapInfoOp(
firOpBuilder, clauseLocation, symAddr, mlir::Value{},
- asFortran.str(), bounds, {},
+ asFortran.str(), bounds, {}, mlir::DenseIntElementsAttr{},
static_cast<
std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
mapTypeBits),
mlir::omp::VariableCaptureKind::ByRef, symAddr.getType());
- result.mapVars.push_back(mapOp);
+ if (object.id()->owner().IsDerivedType()) {
+ if (auto dataRef{ExtractDataRef(object.designator)}) {
+ const Fortran::semantics::Symbol *parentSym =
+ &dataRef->GetFirstSymbol();
+ assert(parentSym &&
+ "Could not find parent symbol during lower of "
+ "a component member in OpenMP map clause");
+ parentMemberIndices[parentSym].push_back(
+ {generateMemberPlacementIndices(object, semaCtx), mapOp});
+ }
+ } else {
+ result.mapVars.push_back(mapOp);
+ mapSymbols.push_back(object.id());
+ }
}
});
+
+ insertChildMapInfoIntoParent(converter, parentMemberIndices, result.mapVars,
+ nullptr, nullptr, &mapSymbols);
----------------
skatrak wrote:
Nit: Add comments for unnamed arguments.
https://github.com/llvm/llvm-project/pull/82853
More information about the llvm-branch-commits
mailing list