[flang-commits] [flang] [flang][OpenMP][DoConcurrent] Emit declare mapper for records (PR #179936)

Kareem Ergawy via flang-commits flang-commits at lists.llvm.org
Mon Mar 9 08:34:06 PDT 2026


================
@@ -583,12 +584,46 @@ class DoConcurrentConversion
     llvm::SmallVector<mlir::Value> boundsOps;
     genBoundsOps(builder, liveIn, rawAddr, boundsOps);
 
+    auto asRecordType = [&](mlir::Type eleType) {
+      fir::RecordType recordType = mlir::dyn_cast<fir::RecordType>(eleType);
+
+      if (auto seqType = mlir::dyn_cast<fir::SequenceType>(eleType))
+        recordType = mlir::dyn_cast<fir::RecordType>(seqType.getElementType());
+
+      return recordType;
+    };
+
+    fir::RecordType recordType = asRecordType(eleType);
+
+    bool requiresImplcitMapper = [&]() {
+      if (!recordType)
+        return false;
+
+      for (auto [fieldName, fieldType] : recordType.getTypeList()) {
+        if (fir::isAllocatableType(fieldType))
+          return true;
+
+        if (asRecordType(fieldType))
+          TODO(liveIn.getLoc(), "Nested record types are not supported yet.");
+      }
+
+      return false;
+    }();
+
+    mlir::FlatSymbolRefAttr mapperId;
+    if (requiresImplcitMapper) {
+      std::string mapperIdName =
+          recordType.getName().str() + llvm::omp::OmpDefaultMapperName;
+      mapperId = Fortran::utils::openmp::getOrGenImplicitDefaultDeclareMapper(
----------------
ergawy wrote:

Done.

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


More information about the flang-commits mailing list