diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp index 9f71129d39d09..437dbcfea5288 100644 --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -2176,6 +2176,7 @@ OperationLegalizer::legalizeWithFold(Operation *op, (void)rewriterImpl; // Try to fold the operation. + StringRef opName = op->getName().getStringRef(); SmallVector replacementValues; SmallVector newOps; rewriter.setInsertionPoint(op); @@ -2195,6 +2196,12 @@ OperationLegalizer::legalizeWithFold(Operation *op, LLVM_DEBUG(logFailure(rewriterImpl.logger, "failed to legalize generated constant '{0}'", newOp->getName())); + if (!config.allowPatternRollback) { + // Rolling back a folder is like rolling back a pattern. + llvm::report_fatal_error( + "op '" + opName + + "' folder rollback of IR modifications requested"); + } // Legalization failed: erase all materialized constants. for (Operation *op : newOps) rewriter.eraseOp(op);