[flang-commits] [flang] [OpenMP][Flang] Emit default declare mappers implicitly for derived types (PR #140562)
Sergio Afonso via flang-commits
flang-commits at lists.llvm.org
Tue Jul 1 08:01:35 PDT 2025
================
@@ -1102,23 +1102,30 @@ void ClauseProcessor::processMapObjects(
auto getDefaultMapperID = [&](const omp::Object &object,
std::string &mapperIdName) {
- if (!mlir::isa<mlir::omp::DeclareMapperOp>(
- firOpBuilder.getRegion().getParentOp())) {
- const semantics::DerivedTypeSpec *typeSpec = nullptr;
-
- if (object.sym()->owner().IsDerivedType())
- typeSpec = object.sym()->owner().derivedTypeSpec();
- else if (object.sym()->GetType() &&
- object.sym()->GetType()->category() ==
- semantics::DeclTypeSpec::TypeDerived)
- typeSpec = &object.sym()->GetType()->derivedTypeSpec();
-
- if (typeSpec) {
- mapperIdName = typeSpec->name().ToString() + ".default";
+ const semantics::DerivedTypeSpec *typeSpec = nullptr;
+
+ if (object.sym()->GetType() && object.sym()->GetType()->category() ==
+ semantics::DeclTypeSpec::TypeDerived)
+ typeSpec = &object.sym()->GetType()->derivedTypeSpec();
+ else if (object.sym()->owner().IsDerivedType())
+ typeSpec = object.sym()->owner().derivedTypeSpec();
+
+ if (typeSpec) {
+ mapperIdName = typeSpec->name().ToString() + ".omp.default.mapper";
+ if (auto *sym = converter.getCurrentScope().FindSymbol(mapperIdName))
+ mapperIdName = converter.mangleName(mapperIdName, sym->owner());
+ else
mapperIdName =
converter.mangleName(mapperIdName, *typeSpec->GetScope());
- }
}
+
+ // Make sure we don't return a mapper to self
----------------
skatrak wrote:
```suggestion
// Make sure we don't return a mapper to self.
```
https://github.com/llvm/llvm-project/pull/140562
More information about the flang-commits
mailing list