[Mlir-commits] [mlir] 99720bb - [MLIR][Utils] Fix the overflow issue in computeSuffixProductImpl for 32-bit system. (#140567)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon May 19 11:27:41 PDT 2025
Author: Chao Chen
Date: 2025-05-19T13:27:37-05:00
New Revision: 99720bbb87d4f1968a3e25075e616063fbc18936
URL: https://github.com/llvm/llvm-project/commit/99720bbb87d4f1968a3e25075e616063fbc18936
DIFF: https://github.com/llvm/llvm-project/commit/99720bbb87d4f1968a3e25075e616063fbc18936.diff
LOG: [MLIR][Utils] Fix the overflow issue in computeSuffixProductImpl for 32-bit system. (#140567)
In `int64_t r = strides.size() - 2`, it may cause overflow on 32-bit
system when strides.size() is 1, because `strides.size()` is defined
as `unsigned int`
Added:
Modified:
mlir/lib/Dialect/Utils/IndexingUtils.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Utils/IndexingUtils.cpp b/mlir/lib/Dialect/Utils/IndexingUtils.cpp
index d9edabef6693d..8de77e2c3cb08 100644
--- a/mlir/lib/Dialect/Utils/IndexingUtils.cpp
+++ b/mlir/lib/Dialect/Utils/IndexingUtils.cpp
@@ -24,7 +24,7 @@ SmallVector<ExprType> computeSuffixProductImpl(ArrayRef<ExprType> sizes,
if (sizes.empty())
return {};
SmallVector<ExprType> strides(sizes.size(), unit);
- for (int64_t r = strides.size() - 2; r >= 0; --r)
+ for (int64_t r = static_cast<int64_t>(strides.size()) - 2; r >= 0; --r)
strides[r] = strides[r + 1] * sizes[r + 1];
return strides;
}
More information about the Mlir-commits
mailing list