diff --git a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp index 1cb9453ccf3c9..602d80a45993e 100644 --- a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp +++ b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp @@ -91,8 +91,11 @@ LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver, if (!constOp) return failure(); - copyIntegerRange(solver, value, constOp->getResult(0)); - rewriter.replaceAllUsesWith(value, constOp->getResult(0)); + OpResult res = constOp->getResult(0); + if (solver.lookupState(res)) + solver.eraseState(res); + copyIntegerRange(solver, value, res); + rewriter.replaceAllUsesWith(value, res); return success(); } } // namespace mlir::dataflow