[Mlir-commits] [mlir] [MLIR][Utils] Fix the overflow issue in computeSuffixProductImpl for 32-bit system. (PR #140567)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon May 19 09:12:04 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Chao Chen (chencha3)
<details>
<summary>Changes</summary>
In `int64_t r = strides.size() - 2`, it may cause overflow on 32-bit system when strides.size() is 1. be cause `strides.size()` is a `size_t` which is a `unsigned int` (32-bit), leading 1 - 2 = 4294967295 (on unsigned computing).
---
Full diff: https://github.com/llvm/llvm-project/pull/140567.diff
1 Files Affected:
- (modified) mlir/lib/Dialect/Utils/IndexingUtils.cpp (+1-1)
``````````diff
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;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/140567
More information about the Mlir-commits
mailing list