[flang-commits] [flang] 703bf4c - [flang] Represent unknown extent correctly in getTypeAsString

Valentin Clement via flang-commits flang-commits at lists.llvm.org
Wed Jul 19 08:57:03 PDT 2023


Author: Valentin Clement
Date: 2023-07-19T08:56:54-07:00
New Revision: 703bf4c7996628c0ec179c6309858049bc11203f

URL: https://github.com/llvm/llvm-project/commit/703bf4c7996628c0ec179c6309858049bc11203f
DIFF: https://github.com/llvm/llvm-project/commit/703bf4c7996628c0ec179c6309858049bc11203f.diff

LOG: [flang] Represent unknown extent correctly in getTypeAsString

Reviewed By: razvanlupusoru

Differential Revision: https://reviews.llvm.org/D155655

Added: 
    

Modified: 
    flang/lib/Optimizer/Dialect/FIRType.cpp
    flang/unittests/Optimizer/FIRTypesTest.cpp

Removed: 
    


################################################################################
diff  --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp
index 60d35b2c818e32..b3f5653815c3f0 100644
--- a/flang/lib/Optimizer/Dialect/FIRType.cpp
+++ b/flang/lib/Optimizer/Dialect/FIRType.cpp
@@ -518,8 +518,12 @@ std::string getTypeAsString(mlir::Type ty, const fir::KindMapping &kindMap,
         name << "x" << charTy.getLen();
       break;
     } else if (auto seqTy = mlir::dyn_cast_or_null<fir::SequenceType>(ty)) {
-      for (auto extent : seqTy.getShape())
-        name << extent << 'x';
+      for (auto extent : seqTy.getShape()) {
+        if (extent == fir::SequenceType::getUnknownExtent())
+          name << "?x";
+        else
+          name << extent << 'x';
+      }
       ty = seqTy.getEleTy();
     } else if (auto refTy = mlir::dyn_cast_or_null<fir::ReferenceType>(ty)) {
       name << "ref_";

diff  --git a/flang/unittests/Optimizer/FIRTypesTest.cpp b/flang/unittests/Optimizer/FIRTypesTest.cpp
index 819f50a21ab6f0..6a9842c8ed2d07 100644
--- a/flang/unittests/Optimizer/FIRTypesTest.cpp
+++ b/flang/unittests/Optimizer/FIRTypesTest.cpp
@@ -304,4 +304,9 @@ TEST_F(FIRTypesTest, getTypeAsString) {
   components.emplace_back("p1", mlir::IntegerType::get(&context, 64));
   derivedTy.finalize({}, components);
   EXPECT_EQ("rec_derived", fir::getTypeAsString(derivedTy, *kindMap));
+  mlir::Type dynArrTy =
+      fir::SequenceType::get({fir::SequenceType::getUnknownExtent(),
+                                 fir::SequenceType::getUnknownExtent()},
+          ty);
+  EXPECT_EQ("?x?xi64", fir::getTypeAsString(dynArrTy, *kindMap));
 }


        


More information about the flang-commits mailing list