diff --git a/mlir/lib/Dialect/Arith/IR/InferIntRangeInterfaceImpls.cpp b/mlir/lib/Dialect/Arith/IR/InferIntRangeInterfaceImpls.cpp index 8682294c8a697..59c9759d35393 100644 --- a/mlir/lib/Dialect/Arith/IR/InferIntRangeInterfaceImpls.cpp +++ b/mlir/lib/Dialect/Arith/IR/InferIntRangeInterfaceImpls.cpp @@ -40,6 +40,11 @@ void arith::ConstantOp::inferResultRanges(ArrayRef argRanges, setResultRange(getResult(), ConstantIntRanges::constant(value)); return; } + if (auto splatAttr = llvm::dyn_cast_or_null(getValue())) { + setResultRange(getResult(), ConstantIntRanges::constant( + splatAttr.getSplatValue())); + return; + } if (auto arrayCstAttr = llvm::dyn_cast_or_null(getValue())) { std::optional result;