[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