[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