diff --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp --- a/flang/lib/Optimizer/Dialect/FIRType.cpp +++ b/flang/lib/Optimizer/Dialect/FIRType.cpp @@ -489,7 +489,9 @@ ty = fir::unwrapRefType(ty); while (ty) { if (fir::isa_trivial(ty)) { - if (ty.isIntOrIndex()) { + if (mlir::isa(ty)) { + name << "idx"; + } else if (ty.isIntOrIndex()) { name << 'i' << ty.getIntOrFloatBitWidth(); } else if (ty.isa()) { name << 'f' << ty.getIntOrFloatBitWidth(); diff --git a/flang/unittests/Optimizer/FIRTypesTest.cpp b/flang/unittests/Optimizer/FIRTypesTest.cpp --- a/flang/unittests/Optimizer/FIRTypesTest.cpp +++ b/flang/unittests/Optimizer/FIRTypesTest.cpp @@ -277,4 +277,6 @@ mlir::Type ty = mlir::IntegerType::get(&context, 64); mlir::Type arrTy = fir::SequenceType::get({10, 20}, ty); EXPECT_EQ("10x20xi64", fir::getTypeAsString(arrTy, *kindMap)); + EXPECT_EQ( + "idx", fir::getTypeAsString(mlir::IndexType::get(&context), *kindMap)); }