Skip to content

Commit 2667dbf

Browse files
authored
[flang] Support fir.boxchar in getTypeAsString (#70997)
1 parent 373c343 commit 2667dbf

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

flang/lib/Optimizer/Dialect/FIRType.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,9 @@ std::string getTypeAsString(mlir::Type ty, const fir::KindMapping &kindMap,
545545
break;
546546
} else if (auto charTy = mlir::dyn_cast_or_null<fir::CharacterType>(ty)) {
547547
name << 'c' << kindMap.getCharacterBitsize(charTy.getFKind());
548-
if (charTy.getLen() != fir::CharacterType::singleton())
548+
if (charTy.getLen() == fir::CharacterType::unknownLen())
549+
name << "xU";
550+
else if (charTy.getLen() != fir::CharacterType::singleton())
549551
name << "x" << charTy.getLen();
550552
break;
551553
} else if (auto seqTy = mlir::dyn_cast_or_null<fir::SequenceType>(ty)) {
@@ -574,6 +576,9 @@ std::string getTypeAsString(mlir::Type ty, const fir::KindMapping &kindMap,
574576
} else if (auto boxTy = mlir::dyn_cast_or_null<fir::BoxType>(ty)) {
575577
name << "box_";
576578
ty = boxTy.getEleTy();
579+
} else if (auto boxcharTy = mlir::dyn_cast_or_null<fir::BoxCharType>(ty)) {
580+
name << "boxchar_";
581+
ty = boxcharTy.getEleTy();
577582
} else if (auto recTy = mlir::dyn_cast_or_null<fir::RecordType>(ty)) {
578583
name << "rec_" << recTy.getName();
579584
break;

flang/unittests/Optimizer/FIRTypesTest.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,4 +313,6 @@ TEST_F(FIRTypesTest, getTypeAsString) {
313313
fir::getTypeAsString(
314314
fir::LLVMPointerType::get(mlir::IntegerType::get(&context, 32)),
315315
*kindMap));
316+
EXPECT_EQ("boxchar_c8xU",
317+
fir::getTypeAsString(fir::BoxCharType::get(&context, 1), *kindMap));
316318
}

0 commit comments

Comments
 (0)