[flang-commits] [flang] [Flang][HLFIR] Lower PACK(array, .TRUE.) to hlfir.reshape (PR #213603)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Mon Aug 3 05:31:19 PDT 2026
================
@@ -209,6 +210,45 @@ class HlfirReshapeLowering : public HlfirTransformationalIntrinsic {
mlir::Type stmtResultType) override;
};
+class HlfirPackAsReshapeLowering : public HlfirTransformationalIntrinsic {
+public:
+ using HlfirTransformationalIntrinsic::HlfirTransformationalIntrinsic;
+
+protected:
+ mlir::Value
+ lowerImpl(const Fortran::lower::PreparedActualArguments &loweredActuals,
+ const fir::IntrinsicArgumentLoweringRules *argLowering,
+ mlir::Type stmtResultType) override {
+ auto operands = getOperandVector(loweredActuals, argLowering);
+ assert(operands.size() >= 2);
+ mlir::Value array = operands[0];
+ mlir::Type resultType = computeResultType(array, stmtResultType);
+ mlir::Value sizeArray = array;
+ if (!fir::isa_box_type(array.getType())) {
+ hlfir::Entity arrayEntity = loweredActuals[0]->getActual(loc, builder);
+ auto [exv, cleanup] =
+ hlfir::translateToExtendedValue(loc, builder, arrayEntity);
+ addCleanup(cleanup);
+ sizeArray = builder.createBox(loc, exv);
+ }
+ mlir::Value totalSize = fir::runtime::genSize(builder, loc, sizeArray);
+ mlir::Type indexType = builder.getIndexType();
+ mlir::Type extentType = builder.getDefaultIntegerType();
----------------
tblah wrote:
Default integer can be i32, but `totalSize` will be i64.
https://github.com/llvm/llvm-project/pull/213603
More information about the flang-commits
mailing list