diff --git a/mlir/test/lib/Analysis/TestLiveness.cpp b/mlir/test/lib/Analysis/TestLiveness.cpp --- a/mlir/test/lib/Analysis/TestLiveness.cpp +++ b/mlir/test/lib/Analysis/TestLiveness.cpp @@ -28,6 +28,15 @@ return "Print the contents of a constructed liveness information."; } void runOnOperation() override { + if (!isa(Pass::getOperation())) { + auto passName = getArgument(); + Pass::getOperation()->emitError() + << passName + << " pass can operate on an operation with SymbolOpInteface.\n" + << "NOTE: The option may need to be fixed to `-pass-pipeline=" + << "\"builtin.module(func.func(" << passName << "))\"`\n"; + return signalPassFailure(); + } llvm::errs() << "Testing : " << getOperation().getName() << "\n"; getAnalysis().print(llvm::errs()); } diff --git a/mlir/test/lib/Analysis/TestMemRefStrideCalculation.cpp b/mlir/test/lib/Analysis/TestMemRefStrideCalculation.cpp --- a/mlir/test/lib/Analysis/TestMemRefStrideCalculation.cpp +++ b/mlir/test/lib/Analysis/TestMemRefStrideCalculation.cpp @@ -30,6 +30,16 @@ /// Traverse AllocOp and compute strides of each MemRefType independently. void TestMemRefStrideCalculation::runOnOperation() { + if (!isa(Pass::getOperation())) { + auto passName = getArgument(); + Pass::getOperation()->emitError() + << passName + << " pass can operate on an operation with SymbolOpInteface.\n" + << "NOTE: The option may need to be fixed to `-pass-pipeline=" + << "\"builtin.module(func.func(" << passName << "))\"`\n"; + return signalPassFailure(); + } + llvm::outs() << "Testing: " << getOperation().getName() << "\n"; getOperation().walk([&](memref::AllocOp allocOp) { auto memrefType = cast(allocOp.getResult().getType()); diff --git a/mlir/test/lib/Analysis/TestSlice.cpp b/mlir/test/lib/Analysis/TestSlice.cpp --- a/mlir/test/lib/Analysis/TestSlice.cpp +++ b/mlir/test/lib/Analysis/TestSlice.cpp @@ -26,6 +26,16 @@ return "Print operations in topological order"; } void runOnOperation() override { + if (!isa(Pass::getOperation())) { + auto passName = getArgument(); + Pass::getOperation()->emitError() + << passName + << " pass can operate on an operation with SymbolOpInteface.\n" + << "NOTE: The option may need to be fixed to `-pass-pipeline=" + << "\"builtin.module(func.func(" << passName << "))\"`\n"; + return signalPassFailure(); + } + std::map ops; getOperation().walk([&ops](Operation *op) { if (auto originalOrderAttr = op->getAttrOfType(kOrderMarker)) diff --git a/mlir/test/lib/IR/TestDiagnostics.cpp b/mlir/test/lib/IR/TestDiagnostics.cpp --- a/mlir/test/lib/IR/TestDiagnostics.cpp +++ b/mlir/test/lib/IR/TestDiagnostics.cpp @@ -31,6 +31,16 @@ TestDiagnosticFilterPass(const TestDiagnosticFilterPass &) {} void runOnOperation() override { + if (!isa(Pass::getOperation())) { + auto passName = getArgument(); + Pass::getOperation()->emitError() + << passName + << " pass can operate on an operation with SymbolOpInteface.\n" + << "NOTE: The option may need to be fixed to `-pass-pipeline=" + << "\"builtin.module(func.func(" << passName << "{filters=..}))\"`\n"; + return signalPassFailure(); + } + llvm::errs() << "Test '" << getOperation().getName() << "'\n"; // Build a diagnostic handler that has filtering capabilities. diff --git a/mlir/test/lib/IR/TestDominance.cpp b/mlir/test/lib/IR/TestDominance.cpp --- a/mlir/test/lib/IR/TestDominance.cpp +++ b/mlir/test/lib/IR/TestDominance.cpp @@ -101,6 +101,16 @@ } void runOnOperation() override { + if (!isa(Pass::getOperation())) { + auto passName = getArgument(); + Pass::getOperation()->emitError() + << passName + << " pass can operate on an operation with SymbolOpInteface.\n" + << "NOTE: The option may need to be fixed to `-pass-pipeline=" + << "\"builtin.module(func.func(" << passName << "))\"`\n"; + return signalPassFailure(); + } + llvm::errs() << "Testing : " << getOperation().getName() << "\n"; DominanceTest dominanceTest(getOperation());