[llvm-branch-commits] [flang] [Flang][OpenMP] - When mapping a `fir.boxchar`, map the underlying data pointer as a member (PR #141715)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue May 27 20:58:38 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- flang/include/flang/Optimizer/Builder/DirectivesCommon.h flang/lib/Optimizer/Dialect/FIRType.cpp flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp flang/lib/Optimizer/OpenMP/MapsForPrivatizedSymbols.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/flang/include/flang/Optimizer/Builder/DirectivesCommon.h b/flang/include/flang/Optimizer/Builder/DirectivesCommon.h
index be11b9b5e..ce960ea19 100644
--- a/flang/include/flang/Optimizer/Builder/DirectivesCommon.h
+++ b/flang/include/flang/Optimizer/Builder/DirectivesCommon.h
@@ -160,7 +160,8 @@ genBoundsOpFromBoxChar(fir::FirOpBuilder &builder, mlir::Location loc,
     if (info.isPresent) {
       llvm::SmallVector<mlir::Type> resTypes = {idxTy, idxTy};
       mlir::Operation::result_range ifRes =
-          builder.genIfOp(loc, resTypes, info.isPresent, /*withElseRegion=*/true)
+          builder
+              .genIfOp(loc, resTypes, info.isPresent, /*withElseRegion=*/true)
               .genThen([&]() {
                 mlir::Value boxChar =
                     fir::isa_ref_type(info.addr.getType())
@@ -171,13 +172,15 @@ genBoundsOpFromBoxChar(fir::FirOpBuilder &builder, mlir::Location loc,
                 mlir::Type refType = builder.getRefType(boxCharType.getEleTy());
                 auto unboxed = builder.create<fir::UnboxCharOp>(
                     loc, refType, lenType, boxChar);
-                mlir::SmallVector<mlir::Value> results = {unboxed.getResult(1), one };
+                mlir::SmallVector<mlir::Value> results = {unboxed.getResult(1),
+                                                          one};
                 builder.create<fir::ResultOp>(loc, results);
               })
-          .genElse([&]() {
-            mlir::SmallVector<mlir::Value> results = {zero, zero };
-            builder.create<fir::ResultOp>(loc, results); })
-          .getResults();
+              .genElse([&]() {
+                mlir::SmallVector<mlir::Value> results = {zero, zero};
+                builder.create<fir::ResultOp>(loc, results);
+              })
+              .getResults();
       return {ifRes[0], ifRes[1]};
     }
     // We have already established that info.addr.getType() is a boxchar
diff --git a/flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp b/flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
index 51237840f..f052cf8d2 100644
--- a/flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+++ b/flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
@@ -295,15 +295,17 @@ class MapInfoFinalizationPass
     if (mlir::isa<fir::ReferenceType>(op.getVarPtr().getType()))
       boxChar = builder.create<fir::LoadOp>(loc, op.getVarPtr());
 
-    fir::BoxCharType boxCharType = mlir::dyn_cast<fir::BoxCharType>(boxChar.getType());
-    mlir::Value boxAddr = builder.create<fir::BoxOffsetOp>(loc, op.getVarPtr(), fir::BoxFieldAttr::base_addr);
+    fir::BoxCharType boxCharType =
+        mlir::dyn_cast<fir::BoxCharType>(boxChar.getType());
+    mlir::Value boxAddr = builder.create<fir::BoxOffsetOp>(
+        loc, op.getVarPtr(), fir::BoxFieldAttr::base_addr);
 
     uint64_t mapTypeToImplicit = static_cast<
         std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
         llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO |
         llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_IMPLICIT);
 
-    mlir::ArrayAttr  newMembersAttr;
+    mlir::ArrayAttr newMembersAttr;
     llvm::SmallVector<llvm::SmallVector<int64_t>> memberIdx = {{0}};
     newMembersAttr = builder.create2DI64ArrayAttr(memberIdx);
 
@@ -324,10 +326,10 @@ class MapInfoFinalizationPass
 
     mlir::omp::MapInfoOp newMapInfoOp = builder.create<mlir::omp::MapInfoOp>(
         op.getLoc(), op.getResult().getType(), varPtr,
-        mlir::TypeAttr::get(llvm::cast<mlir::omp::PointerLikeType>(varPtr.getType())
-                            .getElementType()),
-        op.getMapTypeAttr(),
-        op.getMapCaptureTypeAttr(),
+        mlir::TypeAttr::get(
+            llvm::cast<mlir::omp::PointerLikeType>(varPtr.getType())
+                .getElementType()),
+        op.getMapTypeAttr(), op.getMapCaptureTypeAttr(),
         /*varPtrPtr=*/mlir::Value{},
         /*members=*/llvm::SmallVector<mlir::Value>{memberMapInfoOp},
         /*member_index=*/newMembersAttr,
diff --git a/flang/lib/Optimizer/OpenMP/MapsForPrivatizedSymbols.cpp b/flang/lib/Optimizer/OpenMP/MapsForPrivatizedSymbols.cpp
index 70f051789..b6caeca70 100644
--- a/flang/lib/Optimizer/OpenMP/MapsForPrivatizedSymbols.cpp
+++ b/flang/lib/Optimizer/OpenMP/MapsForPrivatizedSymbols.cpp
@@ -217,16 +217,19 @@ class MapsForPrivatizedSymbolsPass
       }
     } else {
       mlir::Location loc = var.getLoc();
-      fir::factory::AddrAndBoundsInfo info = fir::factory::getDataOperandBaseAddr(builder, var, /*isOptional=*/false, loc);
+      fir::factory::AddrAndBoundsInfo info =
+          fir::factory::getDataOperandBaseAddr(builder, var,
+                                               /*isOptional=*/false, loc);
       fir::ExtendedValue extendedValue =
           hlfir::translateToExtendedValue(loc, builder,
                                           hlfir::Entity{info.addr},
-                                          /*continguousHint=*/true).first;
+                                          /*continguousHint=*/true)
+              .first;
       llvm::SmallVector<mlir::Value> boundsOpsVec =
           fir::factory::genImplicitBoundsOps<mlir::omp::MapBoundsOp,
                                              mlir::omp::MapBoundsType>(
-                builder, info, extendedValue,
-                /*dataExvIsAssumedSize=*/false, loc);
+              builder, info, extendedValue,
+              /*dataExvIsAssumedSize=*/false, loc);
       for (auto bounds : boundsOpsVec)
         boundsOps.push_back(bounds);
     }

``````````

</details>


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


More information about the llvm-branch-commits mailing list