[flang-commits] [flang] [FIR] add a fir.shape_extents operation (PR #199361)

via flang-commits flang-commits at lists.llvm.org
Sat May 23 09:48:46 PDT 2026


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 origin/main HEAD --extensions cpp -- flang/lib/Optimizer/CodeGen/CodeGen.cpp flang/lib/Optimizer/CodeGen/TypeConverter.cpp flang/lib/Optimizer/Dialect/FIROps.cpp flang/lib/Optimizer/Transforms/FIRToMemRef.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

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

``````````diff
diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
index 523ca462d..f71455aad 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -4597,15 +4597,16 @@ struct ShapeOpConversion : public fir::FIROpConversion<fir::ShapeOp> {
     for (auto [i, extent] : llvm::enumerate(adaptor.getExtents())) {
       mlir::Value extentI64 =
           integerCast(loc, rewriter, i64Ty, extent, /*fold=*/true);
-      structVal =
-          mlir::LLVM::InsertValueOp::create(rewriter, loc, structVal, extentI64, i);
+      structVal = mlir::LLVM::InsertValueOp::create(rewriter, loc, structVal,
+                                                    extentI64, i);
     }
     rewriter.replaceOp(op, structVal);
     return mlir::success();
   }
 };
 
-struct ShapeExtentsOpConversion : public fir::FIROpConversion<fir::ShapeExtentsOp> {
+struct ShapeExtentsOpConversion
+    : public fir::FIROpConversion<fir::ShapeExtentsOp> {
   using FIROpConversion::FIROpConversion;
 
   llvm::LogicalResult
@@ -4619,8 +4620,8 @@ struct ShapeExtentsOpConversion : public fir::FIROpConversion<fir::ShapeExtentsO
     mlir::Value llvmShape = adaptor.getShape();
     llvm::SmallVector<mlir::Value> results;
     for (unsigned i = 0; i < op.getNumResults(); ++i) {
-      mlir::Value extentI64 =
-          mlir::LLVM::ExtractValueOp::create(rewriter, loc, i64Ty, llvmShape, i);
+      mlir::Value extentI64 = mlir::LLVM::ExtractValueOp::create(
+          rewriter, loc, i64Ty, llvmShape, i);
       mlir::Type resultTy = convertType(op.getExtents()[i].getType());
       results.push_back(
           integerCast(loc, rewriter, resultTy, extentI64, /*fold=*/true));
diff --git a/flang/lib/Optimizer/Transforms/FIRToMemRef.cpp b/flang/lib/Optimizer/Transforms/FIRToMemRef.cpp
index 3f2a049d8..c33a2103a 100644
--- a/flang/lib/Optimizer/Transforms/FIRToMemRef.cpp
+++ b/flang/lib/Optimizer/Transforms/FIRToMemRef.cpp
@@ -339,14 +339,14 @@ bool FIRToMemRef::materializeShapeExtents(
 
   if (auto extentsOp = shapeVal.getDefiningOp<fir::ShapeExtentsOp>()) {
     shapeVec.append(extentsOp.getExtents().begin(),
-                   extentsOp.getExtents().end());
+                    extentsOp.getExtents().end());
     return true;
   }
 
   if (mlir::isa<fir::ShapeType>(shapeVal.getType())) {
     auto extentsOp = fir::ShapeExtentsOp::create(rewriter, loc, shapeVal);
     shapeVec.append(extentsOp.getExtents().begin(),
-                   extentsOp.getExtents().end());
+                    extentsOp.getExtents().end());
     return true;
   }
 
@@ -364,7 +364,8 @@ void FIRToMemRef::collectSliceInfoFrom(OpTy op, SliceInfo &info) const {
       if (Operation *shapeValOp = shapeVal.getDefiningOp()) {
         if (auto shapeOp = dyn_cast<fir::ShapeOp>(shapeValOp)) {
           populateShape(info.shapeVec, shapeOp);
-        } else if (auto shapeShiftOp = dyn_cast<fir::ShapeShiftOp>(shapeValOp)) {
+        } else if (auto shapeShiftOp =
+                       dyn_cast<fir::ShapeShiftOp>(shapeValOp)) {
           populateShapeAndShift(info.shapeVec, info.shiftVec, shapeShiftOp);
         } else if (auto shiftOp = dyn_cast<fir::ShiftOp>(shapeValOp)) {
           populateShift(info.shiftVec, shiftOp);

``````````

</details>


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


More information about the flang-commits mailing list