Author: Aiden Grossman Date: 2026-05-08T09:09:50-07:00 New Revision: 28b1ebc656b26c826b035b9f58e282f7b5a86077
URL: https://github.com/llvm/llvm-project/commit/28b1ebc656b26c826b035b9f58e282f7b5a86077 DIFF: https://github.com/llvm/llvm-project/commit/28b1ebc656b26c826b035b9f58e282f7b5a86077.diff LOG: Revert "[mlir][core] in -mlir-print-ir-*, dump the pass options as well (#195…" This reverts commit 11e91bdcc6e1ddc81d95fa592e09728d4b346f2b. Added: Modified: mlir/lib/Pass/IRPrinting.cpp mlir/test/Pass/dynamic-pipeline-nested.mlir mlir/test/Pass/dynamic-pipeline.mlir mlir/test/Pass/ir-printing.mlir mlir/test/Pass/run-reproducer.mlir mlir/test/python/pass_manager.py Removed: ################################################################################ diff --git a/mlir/lib/Pass/IRPrinting.cpp b/mlir/lib/Pass/IRPrinting.cpp index 032d4f7e2d67d..c11dbc627c0be 100644 --- a/mlir/lib/Pass/IRPrinting.cpp +++ b/mlir/lib/Pass/IRPrinting.cpp @@ -48,6 +48,18 @@ class IRPrinterInstrumentation : public PassInstrumentation { static void printIR(Operation *op, bool printModuleScope, raw_ostream &out, OpPrintingFlags flags) { + // Otherwise, check to see if we are not printing at module scope. + if (!printModuleScope) + return op->print(out << " //----- //\n", + op->getBlock() ? flags.useLocalScope() : flags); + + // Otherwise, we are printing at module scope. + out << " ('" << op->getName() << "' operation"; + if (auto symbolName = + op->getAttrOfType<StringAttr>(SymbolTable::getSymbolAttrName())) + out << ": @" << symbolName.getValue(); + out << ") //----- //\n"; + // Find the top-level operation. auto *topLevelOp = op; while (auto *parentOp = topLevelOp->getParentOp()) @@ -55,24 +67,6 @@ static void printIR(Operation *op, bool printModuleScope, raw_ostream &out, topLevelOp->print(out, flags); } -static void printIRHeader(raw_ostream &out, StringRef title, Pass *pass, - Operation *op, bool printModuleScope, - bool failed = false) { - out << "// -----// IR Dump " << title << " " << pass->getName(); - if (failed) - out << " Failed"; - out << ": "; - pass->printAsTextualPipeline(out); - if (printModuleScope) { - out << " ('" << op->getName() << "' operation"; - if (auto symbolName = - op->getAttrOfType<StringAttr>(SymbolTable::getSymbolAttrName())) - out << ": @" << symbolName.getValue(); - out << ")"; - } - out << " //----- //\n"; -} - /// Instrumentation hooks. void IRPrinterInstrumentation::runBeforePass(Pass *pass, Operation *op) { if (isa<OpToOpPassAdaptor>(pass)) @@ -82,7 +76,8 @@ void IRPrinterInstrumentation::runBeforePass(Pass *pass, Operation *op) { beforePassFingerPrints.try_emplace(pass, op); config->printBeforeIfEnabled(pass, op, [&](raw_ostream &out) { - printIRHeader(out, "Before", pass, op, config->shouldPrintAtModuleScope()); + out << "// -----// IR Dump Before " << pass->getName() << " (" + << pass->getArgument() << ")"; printIR(op, config->shouldPrintAtModuleScope(), out, config->getOpPrintingFlags()); out << "\n\n"; @@ -112,7 +107,8 @@ void IRPrinterInstrumentation::runAfterPass(Pass *pass, Operation *op) { } config->printAfterIfEnabled(pass, op, [&](raw_ostream &out) { - printIRHeader(out, "After", pass, op, config->shouldPrintAtModuleScope()); + out << "// -----// IR Dump After " << pass->getName() << " (" + << pass->getArgument() << ")"; printIR(op, config->shouldPrintAtModuleScope(), out, config->getOpPrintingFlags()); out << "\n\n"; @@ -126,8 +122,8 @@ void IRPrinterInstrumentation::runAfterPassFailed(Pass *pass, Operation *op) { beforePassFingerPrints.erase(pass); config->printAfterIfEnabled(pass, op, [&](raw_ostream &out) { - printIRHeader(out, "After", pass, op, config->shouldPrintAtModuleScope(), - /*failed=*/true); + out << formatv("// -----// IR Dump After {0} Failed ({1})", pass->getName(), + pass->getArgument()); printIR(op, config->shouldPrintAtModuleScope(), out, config->getOpPrintingFlags()); out << "\n\n"; diff --git a/mlir/test/Pass/dynamic-pipeline-nested.mlir b/mlir/test/Pass/dynamic-pipeline-nested.mlir index 5f480e42b084f..ac2fdd3265b63 100644 --- a/mlir/test/Pass/dynamic-pipeline-nested.mlir +++ b/mlir/test/Pass/dynamic-pipeline-nested.mlir @@ -10,7 +10,7 @@ func.func @f() { // CHECK: IR Dump Before // CHECK-SAME: TestDynamicPipelinePass -// CHECK: module @inner_mod1 +// CHECK-NEXT: module @inner_mod1 module @inner_mod1 { // We use the mlir-print-ir-after-all dumps to check the granularity of the // scheduling: if we are nesting we expect to see to individual "Dump Before @@ -18,11 +18,11 @@ module @inner_mod1 { // the CSE pass to run on the `inner_mod1` module directly. // CHECK: Dump Before CSE -// NOTNESTED: @inner_mod1 -// NESTED: @foo +// NOTNESTED-NEXT: @inner_mod1 +// NESTED-NEXT: @foo module @foo {} // Only in the nested case we have a second run of the pass here. // NESTED: Dump Before CSE -// NESTED: @baz +// NESTED-NEXT: @baz module @baz {} } diff --git a/mlir/test/Pass/dynamic-pipeline.mlir b/mlir/test/Pass/dynamic-pipeline.mlir index 7cae9284f44d2..5e31ba476aeb0 100644 --- a/mlir/test/Pass/dynamic-pipeline.mlir +++ b/mlir/test/Pass/dynamic-pipeline.mlir @@ -10,20 +10,20 @@ func.func @f() { // CHECK: IR Dump Before // CHECK-SAME: TestDynamicPipelinePass -// CHECK: module @inner_mod1 +// CHECK-NEXT: module @inner_mod1 // MOD2-ONLY: dynamic-pipeline skip op name: inner_mod1 module @inner_mod1 { // MOD1: Dump Before CSE -// MOD1: @foo +// MOD1-NEXT: @foo // MOD1: Dump Before Canonicalizer -// MOD1: @foo +// MOD1-NEXT: @foo func.func @foo() { return } // MOD1: Dump Before CSE -// MOD1: @baz +// MOD1-NEXT: @baz // MOD1: Dump Before Canonicalizer -// MOD1: @baz +// MOD1-NEXT: @baz func.func @baz() { return } @@ -31,13 +31,13 @@ module @inner_mod1 { // CHECK: IR Dump Before // CHECK-SAME: TestDynamicPipelinePass -// CHECK: module @inner_mod2 +// CHECK-NEXT: module @inner_mod2 // MOD1-ONLY: dynamic-pipeline skip op name: inner_mod2 module @inner_mod2 { // MOD2: Dump Before CSE -// MOD2: @foo +// MOD2-NEXT: @foo // MOD2: Dump Before Canonicalizer -// MOD2: @foo +// MOD2-NEXT: @foo func.func @foo() { return } diff --git a/mlir/test/Pass/ir-printing.mlir b/mlir/test/Pass/ir-printing.mlir index 360b347043722..467d76fdaa7f6 100644 --- a/mlir/test/Pass/ir-printing.mlir +++ b/mlir/test/Pass/ir-printing.mlir @@ -5,7 +5,6 @@ // RUN: mlir-opt %s -mlir-disable-threading=true -pass-pipeline='builtin.module(func.func(cse,canonicalize))' -mlir-print-ir-before=cse -mlir-print-ir-module-scope -o /dev/null 2>&1 | FileCheck -check-prefix=BEFORE_MODULE %s // RUN: mlir-opt %s -mlir-disable-threading=true -pass-pipeline='builtin.module(func.func(cse,cse))' -mlir-print-ir-after-all -mlir-print-ir-after-change -o /dev/null 2>&1 | FileCheck -check-prefix=AFTER_ALL_CHANGE %s // RUN: not mlir-opt %s -mlir-disable-threading=true -pass-pipeline='builtin.module(func.func(cse,test-pass-failure))' -mlir-print-ir-after-failure -o /dev/null 2>&1 | FileCheck -check-prefix=AFTER_FAILURE %s -// RUN: mlir-opt %s -mlir-disable-threading=true -pass-pipeline='builtin.module(func.func(canonicalize{max-iterations=5}))' -mlir-print-ir-before=canonicalize -o /dev/null 2>&1 | FileCheck -check-prefix=OPTIONS %s func.func @foo() { %0 = arith.constant 0 : i32 @@ -16,55 +15,53 @@ func.func @bar() { return } -// BEFORE: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE: func @foo() -// BEFORE: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE: func @bar() -// BEFORE-NOT: // -----// IR Dump Before{{.*}}CanonicalizerPass: canonicalize //----- // +// BEFORE: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE-NEXT: func @foo() +// BEFORE: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE-NEXT: func @bar() +// BEFORE-NOT: // -----// IR Dump Before{{.*}}CanonicalizerPass (canonicalize) //----- // // BEFORE-NOT: // -----// IR Dump After -// BEFORE_ALL: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE_ALL: func @foo() -// BEFORE_ALL: // -----// IR Dump Before{{.*}}CanonicalizerPass: canonicalize{{.*}} //----- // -// BEFORE_ALL: func @foo() -// BEFORE_ALL: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE_ALL: func @bar() -// BEFORE_ALL: // -----// IR Dump Before{{.*}}CanonicalizerPass: canonicalize{{.*}} //----- // -// BEFORE_ALL: func @bar() +// BEFORE_ALL: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE_ALL-NEXT: func @foo() +// BEFORE_ALL: // -----// IR Dump Before{{.*}}CanonicalizerPass (canonicalize) //----- // +// BEFORE_ALL-NEXT: func @foo() +// BEFORE_ALL: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE_ALL-NEXT: func @bar() +// BEFORE_ALL: // -----// IR Dump Before{{.*}}CanonicalizerPass (canonicalize) //----- // +// BEFORE_ALL-NEXT: func @bar() // BEFORE_ALL-NOT: // -----// IR Dump After // AFTER-NOT: // -----// IR Dump Before -// AFTER: // -----// IR Dump After{{.*}}CSEPass: cse //----- // -// AFTER: func @foo() -// AFTER: // -----// IR Dump After{{.*}}CSEPass: cse //----- // -// AFTER: func @bar() -// AFTER-NOT: // -----// IR Dump After{{.*}}CanonicalizerPass: canonicalize{{.*}} //----- // +// AFTER: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // +// AFTER-NEXT: func @foo() +// AFTER: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // +// AFTER-NEXT: func @bar() +// AFTER-NOT: // -----// IR Dump After{{.*}}CanonicalizerPass (canonicalize) //----- // // AFTER_ALL-NOT: // -----// IR Dump Before -// AFTER_ALL: // -----// IR Dump After{{.*}}CSEPass: cse //----- // -// AFTER_ALL: func @foo() -// AFTER_ALL: // -----// IR Dump After{{.*}}CanonicalizerPass: canonicalize{{.*}} //----- // -// AFTER_ALL: func @foo() -// AFTER_ALL: // -----// IR Dump After{{.*}}CSEPass: cse //----- // -// AFTER_ALL: func @bar() -// AFTER_ALL: // -----// IR Dump After{{.*}}CanonicalizerPass: canonicalize{{.*}} //----- // -// AFTER_ALL: func @bar() +// AFTER_ALL: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // +// AFTER_ALL-NEXT: func @foo() +// AFTER_ALL: // -----// IR Dump After{{.*}}CanonicalizerPass (canonicalize) //----- // +// AFTER_ALL-NEXT: func @foo() +// AFTER_ALL: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // +// AFTER_ALL-NEXT: func @bar() +// AFTER_ALL: // -----// IR Dump After{{.*}}CanonicalizerPass (canonicalize) //----- // +// AFTER_ALL-NEXT: func @bar() -// BEFORE_MODULE: // -----// IR Dump Before{{.*}}CSEPass: cse ('func.func' operation: @foo) //----- // +// BEFORE_MODULE: // -----// IR Dump Before{{.*}}CSEPass (cse) ('func.func' operation: @foo) //----- // // BEFORE_MODULE: func @foo() // BEFORE_MODULE: func @bar() -// BEFORE_MODULE: // -----// IR Dump Before{{.*}}CSEPass: cse ('func.func' operation: @bar) //----- // +// BEFORE_MODULE: // -----// IR Dump Before{{.*}}CSEPass (cse) ('func.func' operation: @bar) //----- // // BEFORE_MODULE: func @foo() // BEFORE_MODULE: func @bar() -// AFTER_ALL_CHANGE: // -----// IR Dump After{{.*}}CSEPass: cse //----- // -// AFTER_ALL_CHANGE: func @foo() -// AFTER_ALL_CHANGE-NOT: // -----// IR Dump After{{.*}}CSEPass: cse //----- // +// AFTER_ALL_CHANGE: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // +// AFTER_ALL_CHANGE-NEXT: func @foo() +// AFTER_ALL_CHANGE-NOT: // -----// IR Dump After{{.*}}CSEPass (cse) //----- // // We expect that only 'foo' changed during CSE, and the second run of CSE did // nothing. // AFTER_FAILURE-NOT: // -----// IR Dump After{{.*}}CSE -// AFTER_FAILURE: // -----// IR Dump After{{.*}}TestFailurePass Failed: test-pass-failure{{.*}} //----- // +// AFTER_FAILURE: // -----// IR Dump After{{.*}}TestFailurePass Failed (test-pass-failure) //----- // // AFTER_FAILURE: func @foo() - -// OPTIONS: // -----// IR Dump Before{{.*}}CanonicalizerPass: canonicalize{cse-between-iterations=false{{[[:space:]]*}}max-iterations=5 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true} //----- // diff --git a/mlir/test/Pass/run-reproducer.mlir b/mlir/test/Pass/run-reproducer.mlir index 5b3b21090d169..68f634d2038fc 100644 --- a/mlir/test/Pass/run-reproducer.mlir +++ b/mlir/test/Pass/run-reproducer.mlir @@ -26,9 +26,9 @@ func.func @bar() { } #-} -// BEFORE: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE: func @foo() -// BEFORE: // -----// IR Dump Before{{.*}}CSEPass: cse //----- // -// BEFORE: func @bar() -// BEFORE-NOT: // -----// IR Dump Before{{.*}}CanonicalizerPass: canonicalize //----- // +// BEFORE: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE-NEXT: func @foo() +// BEFORE: // -----// IR Dump Before{{.*}}CSEPass (cse) //----- // +// BEFORE-NEXT: func @bar() +// BEFORE-NOT: // -----// IR Dump Before{{.*}}CanonicalizerPass (canonicalize) //----- // // BEFORE-NOT: // -----// IR Dump After diff --git a/mlir/test/python/pass_manager.py b/mlir/test/python/pass_manager.py index 39b57d321033a..a097af92d1f0a 100644 --- a/mlir/test/python/pass_manager.py +++ b/mlir/test/python/pass_manager.py @@ -275,7 +275,7 @@ def testPrintIrAfterAll(): pm = PassManager.parse("builtin.module(canonicalize)") ctx.enable_multithreading(False) pm.enable_ir_printing() - # CHECK: // -----// IR Dump After CanonicalizerPass: canonicalize{{.*}} //----- // + # CHECK: // -----// IR Dump After CanonicalizerPass (canonicalize) //----- // # CHECK: module { # CHECK: func.func @main() { # CHECK: return @@ -301,14 +301,14 @@ def testPrintIrBeforeAndAfterAll(): pm = PassManager.parse("builtin.module(canonicalize)") ctx.enable_multithreading(False) pm.enable_ir_printing(print_before_all=True, print_after_all=True) - # CHECK: // -----// IR Dump Before CanonicalizerPass: canonicalize{{.*}} //----- // + # CHECK: // -----// IR Dump Before CanonicalizerPass (canonicalize) //----- // # CHECK: module { # CHECK: func.func @main() { # CHECK: %[[C10:.*]] = arith.constant 10 : i64 # CHECK: return # CHECK: } # CHECK: } - # CHECK: // -----// IR Dump After CanonicalizerPass: canonicalize{{.*}} //----- // + # CHECK: // -----// IR Dump After CanonicalizerPass (canonicalize) //----- // # CHECK: module { # CHECK: func.func @main() { # CHECK: return _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
