diff --git a/mlir/tools/mlir-tblgen/RewriterGen.cpp b/mlir/tools/mlir-tblgen/RewriterGen.cpp --- a/mlir/tools/mlir-tblgen/RewriterGen.cpp +++ b/mlir/tools/mlir-tblgen/RewriterGen.cpp @@ -623,7 +623,13 @@ "\n"); } os.indent(4) << "\n"; - os.indent(4) << "rewriter.replaceOp(op0, tblgen_repl_values);\n"; + // Skip the op replacement if the result pattern doesn't return results. + // This is a special case where the result pattern by NativeCodeCall with + // value returned. + os.indent(4) << "if (tblgen_repl_values.empty())\n"; + os.indent(4) << " rewriter.eraseOp(op0);\n"; + os.indent(4) << "else\n"; + os.indent(4) << " rewriter.replaceOp(op0, tblgen_repl_values);\n"; } LLVM_DEBUG(llvm::dbgs() << "--- done emitting rewrite logic ---\n");