[Mlir-commits] [mlir] [mlir][IntegerRangeAnalysis] expose maybeReplaceWithConstant (PR #133151)

Maksim Levental llvmlistbot at llvm.org
Wed Mar 26 13:19:47 PDT 2025


https://github.com/makslevental created https://github.com/llvm/llvm-project/pull/133151

None

>From 6c7d94f0e95f84b9f0c538cacec3e390f592ea2e Mon Sep 17 00:00:00 2001
From: Maksim Levental <maksim.levental at gmail.com>
Date: Wed, 26 Mar 2025 16:19:09 -0400
Subject: [PATCH] [mlir][IntegerRangeAnalysis] expose maybeReplaceWithConstant

---
 mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h | 4 ++++
 .../lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp | 7 ++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h b/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
index b9e5573d6ad40..b643ca5284187 100644
--- a/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
+++ b/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
@@ -19,6 +19,7 @@
 #define MLIR_ANALYSIS_DATAFLOW_INTEGERANGEANALYSIS_H
 
 #include "mlir/Analysis/DataFlow/SparseAnalysis.h"
+#include "mlir/IR/PatternMatch.h"
 #include "mlir/Interfaces/InferIntRangeInterface.h"
 
 namespace mlir {
@@ -83,6 +84,9 @@ LogicalResult staticallyNonNegative(DataFlowSolver &solver, Operation *op);
 /// to use a non-64-bit index.
 LogicalResult staticallyNonNegative(DataFlowSolver &solver, Value v);
 
+LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
+                                       PatternRewriter &rewriter, Value value);
+
 } // end namespace dataflow
 } // end namespace mlir
 
diff --git a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
index f866c91ef6e39..22e14fabba9a7 100644
--- a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
@@ -57,10 +57,10 @@ static void copyIntegerRange(DataFlowSolver &solver, Value oldVal,
       *oldState);
 }
 
+namespace mlir::dataflow {
 /// Patterned after SCCP
-static LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
-                                              PatternRewriter &rewriter,
-                                              Value value) {
+LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
+                                       PatternRewriter &rewriter, Value value) {
   if (value.use_empty())
     return failure();
   std::optional<APInt> maybeConstValue = getMaybeConstantValue(solver, value);
@@ -95,6 +95,7 @@ static LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
   rewriter.replaceAllUsesWith(value, constOp->getResult(0));
   return success();
 }
+} // namespace mlir::dataflow
 
 namespace {
 class DataFlowListener : public RewriterBase::Listener {



More information about the Mlir-commits mailing list