Index: mlir/lib/IR/AsmPrinter.cpp =================================================================== --- mlir/lib/IR/AsmPrinter.cpp +++ mlir/lib/IR/AsmPrinter.cpp @@ -923,8 +923,7 @@ }; } // namespace -SSANameState::SSANameState( - Operation *op, const OpPrintingFlags &printerFlags) +SSANameState::SSANameState(Operation *op, const OpPrintingFlags &printerFlags) : printerFlags(printerFlags) { llvm::SaveAndRestore valueIDSaver(nextValueID); llvm::SaveAndRestore argumentIDSaver(nextArgumentID); @@ -1676,12 +1675,14 @@ /// Print the given dialect symbol to the stream. static void printDialectSymbol(raw_ostream &os, StringRef symPrefix, - StringRef dialectName, StringRef symString) { + StringRef dialectName, StringRef symString, + bool shouldPrintGenericOp) { os << symPrefix << dialectName; // If this symbol name is simple enough, print it directly in pretty form, // otherwise, we print it as an escaped string. - if (isDialectSymbolSimpleEnoughForPrettyForm(symString)) { + if (!shouldPrintGenericOp && + isDialectSymbolSimpleEnoughForPrettyForm(symString)) { os << '.' << symString; return; } @@ -1765,7 +1766,8 @@ printDialectAttribute(attr); } else if (auto opaqueAttr = attr.dyn_cast()) { printDialectSymbol(os, "#", opaqueAttr.getDialectNamespace(), - opaqueAttr.getAttrData()); + opaqueAttr.getAttrData(), + printerFlags.shouldPrintGenericOpForm()); } else if (attr.isa()) { os << "unit"; return; @@ -2045,7 +2047,8 @@ TypeSwitch(type) .Case([&](OpaqueType opaqueTy) { printDialectSymbol(os, "!", opaqueTy.getDialectNamespace(), - opaqueTy.getTypeData()); + opaqueTy.getTypeData(), + printerFlags.shouldPrintGenericOpForm()); }) .Case([&](Type) { os << "index"; }) .Case([&](Type) { os << "bf16"; }) @@ -2217,7 +2220,8 @@ DialectAsmPrinter printer(subPrinter); dialect.printAttribute(attr, printer); } - printDialectSymbol(os, "#", dialect.getNamespace(), attrName); + printDialectSymbol(os, "#", dialect.getNamespace(), attrName, + printerFlags.shouldPrintGenericOpForm()); } void AsmPrinter::Impl::printDialectType(Type type) { @@ -2231,7 +2235,8 @@ DialectAsmPrinter printer(subPrinter); dialect.printType(type, printer); } - printDialectSymbol(os, "!", dialect.getNamespace(), typeName); + printDialectSymbol(os, "!", dialect.getNamespace(), typeName, + printerFlags.shouldPrintGenericOpForm()); } void AsmPrinter::Impl::printEscapedString(StringRef str) { Index: mlir/test/Dialect/LLVMIR/func.mlir =================================================================== --- mlir/test/Dialect/LLVMIR/func.mlir +++ mlir/test/Dialect/LLVMIR/func.mlir @@ -4,7 +4,7 @@ module { // GENERIC: "llvm.func" - // GENERIC: function_type = !llvm.func + // GENERIC: function_type = !llvm<"func"> // GENERIC-SAME: sym_name = "foo" // GENERIC-SAME: () -> () // CHECK: llvm.func @foo() @@ -12,7 +12,7 @@ }) {sym_name = "foo", function_type = !llvm.func} : () -> () // GENERIC: "llvm.func" - // GENERIC: function_type = !llvm.func + // GENERIC: function_type = !llvm<"func"> // GENERIC-SAME: sym_name = "bar" // GENERIC-SAME: () -> () // CHECK: llvm.func @bar(i64, i64) -> i64 @@ -27,7 +27,7 @@ // GENERIC: llvm.return llvm.return %arg0 : i64 - // GENERIC: function_type = !llvm.func + // GENERIC: function_type = !llvm<"func"> // GENERIC-SAME: sym_name = "baz" // GENERIC-SAME: () -> () }) {sym_name = "baz", function_type = !llvm.func} : () -> () @@ -128,7 +128,7 @@ // Check that it is present in the generic format using its numeric value. // // CHECK: llvm.func @external_func - // GENERIC: linkage = #llvm.linkage + // GENERIC: linkage = #llvm<"linkage"> llvm.func external @external_func() // CHECK-LABEL: llvm.func @arg_struct_attr(