diff --git a/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp b/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp @@ -223,9 +223,12 @@ auto rangeValue = en.value(); // Try to extract a tight constant. LLVM_DEBUG(llvm::dbgs() << "Extract tightest: " << rangeValue.size << "\n"); - IntegerAttr sizeAttr = getSmallestBoundingIndex(rangeValue.size); - Value size = (!sizeAttr) ? rangeValue.size - : b.create(loc, sizeAttr); + FailureOr upperBound = + getConstantUpperBoundForIndex(rangeValue.size); + Value size = + failed(upperBound) + ? rangeValue.size + : b.create(loc, upperBound.getValue()); LLVM_DEBUG(llvm::dbgs() << "Extracted tightest: " << size << "\n"); fullSizes.push_back(size); partialSizes.push_back(