diff --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp index 68b7bd3eafd9..c0fd3d3f86df 100644 --- a/flang/lib/Optimizer/Dialect/FIRType.cpp +++ b/flang/lib/Optimizer/Dialect/FIRType.cpp @@ -115,11 +115,6 @@ fir::ComplexType parseComplex(mlir::DialectAsmParser &parser) { return parseKindSingleton(parser); } -// `shapeshift` `<` rank `>` -ShapeShiftType parseShapeShift(mlir::DialectAsmParser &parser) { - return parseRankSingleton(parser); -} - // `slice` `<` rank `>` SliceType parseSlice(mlir::DialectAsmParser &parser) { return parseRankSingleton(parser); @@ -386,10 +381,9 @@ mlir::Type fir::parseFirType(FIROpsDialect *dialect, if (typeNameLit == "ref") return parseReference(parser, loc); if (typeNameLit == "shape") - // TODO move to generatedTypeParser when all types have been moved - return ShapeType::parse(dialect->getContext(), parser); + return generatedTypeParser(dialect->getContext(), parser, typeNameLit); if (typeNameLit == "shapeshift") - return ShapeShiftType::parse(dialect->getContext(), parser); + return generatedTypeParser(dialect->getContext(), parser, typeNameLit); if (typeNameLit == "slice") return parseSlice(parser); if (typeNameLit == "tdesc") @@ -1414,16 +1408,6 @@ void fir::printFirType(FIROpsDialect *, mlir::Type ty, os << '>'; return; } - if (auto type = ty.dyn_cast()) { - // TODO when all type are moved to TableGen can be replaced by - // generatedTypePrinter - type.print(p); - return; - } - if (auto type = ty.dyn_cast()) { - type.print(p); - return; - } if (auto type = ty.dyn_cast()) { os << "slice<" << type.getRank() << '>'; return; @@ -1497,6 +1481,10 @@ void fir::printFirType(FIROpsDialect *, mlir::Type ty, os << '>'; return; } + + if (mlir::succeeded(generatedTypePrinter(ty, p))) { + return; + } } bool fir::isa_unknown_size_box(mlir::Type t) {