[flang-commits] [flang] [MLIR][OpenMP] Add Lowering support for implicitly linking to default declare mappers (PR #131006)

Akash Banerjee via flang-commits flang-commits at lists.llvm.org
Thu Mar 13 07:21:10 PDT 2025


================
@@ -2234,6 +2234,16 @@ genTargetOp(lower::AbstractConverter &converter, lower::SymMap &symTable,
       fir::ExtendedValue dataExv = converter.getSymbolExtendedValue(sym);
       name << sym.name().ToString();
 
+      mlir::FlatSymbolRefAttr mapperId;
+      if (sym.GetType()->category() == semantics::DeclTypeSpec::TypeDerived) {
+        auto &typeSpec = sym.GetType()->derivedTypeSpec();
+        std::string mapperIdName = typeSpec.name().ToString() + ".default";
+        mapperIdName = converter.mangleName(mapperIdName, *typeSpec.GetScope());
+        if (converter.getModuleOp().lookupSymbol(mapperIdName))
+          mapperId = mlir::FlatSymbolRefAttr::get(&converter.getMLIRContext(),
+                                                  mapperIdName);
+      }
----------------
TIFitis wrote:

This change is for catching the implicit use of a derived type member inside a target region without it appearing in a map clause.

Eg:
```
!$omp target
  x%num = 10
!$omp end target
```

The last sub-test in the new test added checks for this.

https://github.com/llvm/llvm-project/pull/131006


More information about the flang-commits mailing list