Skip to content

Commit

Permalink
[flang] Represent unknown extent correctly in getTypeAsString
Browse files Browse the repository at this point in the history
Reviewed By: razvanlupusoru

Differential Revision: https://reviews.llvm.org/D155655
  • Loading branch information
clementval committed Jul 19, 2023
1 parent 3c6ed55 commit 703bf4c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
8 changes: 6 additions & 2 deletions flang/lib/Optimizer/Dialect/FIRType.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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_";
Expand Down
5 changes: 5 additions & 0 deletions flang/unittests/Optimizer/FIRTypesTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}

0 comments on commit 703bf4c

Please sign in to comment.