[Mlir-commits] [mlir] Revert "[mlir][Pass] Fix crash when applying a pass to an optional interface" (PR #168847)
Matthias Springer
llvmlistbot at llvm.org
Thu Nov 20 02:31:42 PST 2025
https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/168847
Reverts llvm/llvm-project#168499
>From 6b3939db8b3b0928d32992e9074c4dfceb2861fc Mon Sep 17 00:00:00 2001
From: Matthias Springer <me at matthiasspringer.de>
Date: Thu, 20 Nov 2025 18:31:30 +0800
Subject: [PATCH] =?UTF-8?q?Revert=20"[mlir][Pass]=20Fix=20crash=20when=20a?=
=?UTF-8?q?pplying=20a=20pass=20to=20an=20optional=20interface=20=E2=80=A6?=
=?UTF-8?q?"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 54f69caf1f3e92ee147bac7e508ba65aff5ed1d5.
---
mlir/include/mlir/Pass/Pass.h | 8 --------
mlir/lib/Pass/Pass.cpp | 6 +++---
mlir/test/Dialect/Transform/test-pass-application.mlir | 2 +-
mlir/test/Pass/invalid-unsupported-operation.mlir | 10 ----------
mlir/test/Pass/pipeline-invalid.mlir | 2 +-
5 files changed, 5 insertions(+), 23 deletions(-)
delete mode 100644 mlir/test/Pass/invalid-unsupported-operation.mlir
diff --git a/mlir/include/mlir/Pass/Pass.h b/mlir/include/mlir/Pass/Pass.h
index 448a688243491..16893c6db87b1 100644
--- a/mlir/include/mlir/Pass/Pass.h
+++ b/mlir/include/mlir/Pass/Pass.h
@@ -193,13 +193,6 @@ class Pass {
/// This is useful for generic operation passes to add restrictions on the
/// operations they operate on.
virtual bool canScheduleOn(RegisteredOperationName opName) const = 0;
- virtual bool canScheduleOn(Operation *op) const {
- std::optional<RegisteredOperationName> registeredInfo =
- op->getName().getRegisteredInfo();
- if (!registeredInfo)
- return false;
- return canScheduleOn(*registeredInfo);
- }
/// Schedule an arbitrary pass pipeline on the provided operation.
/// This can be invoke any time in a pass to dynamic schedule more passes.
@@ -443,7 +436,6 @@ class InterfacePass : public OperationPass<> {
/// Indicate if the current pass can be scheduled on the given operation type.
/// For an InterfacePass, this checks if the operation implements the given
/// interface.
- bool canScheduleOn(Operation *op) const final { return isa<InterfaceT>(op); }
bool canScheduleOn(RegisteredOperationName opName) const final {
return opName.hasInterface<InterfaceT>();
}
diff --git a/mlir/lib/Pass/Pass.cpp b/mlir/lib/Pass/Pass.cpp
index 75f882606e0ab..521c7c6be17b6 100644
--- a/mlir/lib/Pass/Pass.cpp
+++ b/mlir/lib/Pass/Pass.cpp
@@ -559,9 +559,9 @@ LogicalResult OpToOpPassAdaptor::run(Pass *pass, Operation *op,
return op->emitOpError() << "trying to schedule a pass on an operation not "
"marked as 'IsolatedFromAbove'";
}
- if (!pass->canScheduleOn(op)) {
- return op->emitOpError() << "trying to schedule pass '" << pass->getName()
- << "' on an unsupported operation";
+ if (!pass->canScheduleOn(*op->getName().getRegisteredInfo())) {
+ return op->emitOpError()
+ << "trying to schedule a pass on an unsupported operation";
}
// Initialize the pass state with a callback for the pass to dynamically
diff --git a/mlir/test/Dialect/Transform/test-pass-application.mlir b/mlir/test/Dialect/Transform/test-pass-application.mlir
index 4806daf7ce73f..ce8f69c58701d 100644
--- a/mlir/test/Dialect/Transform/test-pass-application.mlir
+++ b/mlir/test/Dialect/Transform/test-pass-application.mlir
@@ -386,7 +386,7 @@ module attributes {transform.with_named_sequence} {
// -----
module attributes {transform.with_named_sequence} {
- // expected-error @below {{trying to schedule pass 'DuplicateFunctionEliminationPass' on an unsupported operation}}
+ // expected-error @below {{trying to schedule a pass on an unsupported operation}}
// expected-note @below {{target op}}
func.func @invalid_target_op_type() {
return
diff --git a/mlir/test/Pass/invalid-unsupported-operation.mlir b/mlir/test/Pass/invalid-unsupported-operation.mlir
deleted file mode 100644
index 0ff49448c1daf..0000000000000
--- a/mlir/test/Pass/invalid-unsupported-operation.mlir
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: mlir-opt %s -test-print-liveness -split-input-file -verify-diagnostics
-
-// Unnamed modules do not implement SymbolOpInterface.
-// expected-error @+1 {{trying to schedule pass '(anonymous namespace)::TestLivenessPass' on an unsupported operation}}
-module {}
-
-// -----
-
-// Named modules implement SymbolOpInterface.
-module @named_module {}
diff --git a/mlir/test/Pass/pipeline-invalid.mlir b/mlir/test/Pass/pipeline-invalid.mlir
index 4116e127a24a6..948a13384bc75 100644
--- a/mlir/test/Pass/pipeline-invalid.mlir
+++ b/mlir/test/Pass/pipeline-invalid.mlir
@@ -15,5 +15,5 @@ arith.constant 0
// -----
-// expected-error at below {{trying to schedule pass '(anonymous namespace)::TestFunctionPass' on an unsupported operation}}
+// expected-error at below {{trying to schedule a pass on an unsupported operation}}
module {}
More information about the Mlir-commits
mailing list