[Mlir-commits] [mlir] 2fcdaba - [mlir][DialectUtils] Fix div by zero crash (#153380)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Aug 13 04:39:01 PDT 2025


Author: Matthias Springer
Date: 2025-08-13T13:38:57+02:00
New Revision: 2fcdabaf39c0af87677155f76d9c284d3cb7fbde

URL: https://github.com/llvm/llvm-project/commit/2fcdabaf39c0af87677155f76d9c284d3cb7fbde
DIFF: https://github.com/llvm/llvm-project/commit/2fcdabaf39c0af87677155f76d9c284d3cb7fbde.diff

LOG: [mlir][DialectUtils] Fix div by zero crash (#153380)

Added: 
    

Modified: 
    mlir/lib/Dialect/Utils/StaticValueUtils.cpp
    mlir/test/Dialect/SCF/canonicalize.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Dialect/Utils/StaticValueUtils.cpp b/mlir/lib/Dialect/Utils/StaticValueUtils.cpp
index e6ef0282101d2..34385d76f133a 100644
--- a/mlir/lib/Dialect/Utils/StaticValueUtils.cpp
+++ b/mlir/lib/Dialect/Utils/StaticValueUtils.cpp
@@ -276,7 +276,7 @@ std::optional<int64_t> constantTripCount(OpFoldResult lb, OpFoldResult ub,
   if (!ubConstant)
     return std::nullopt;
   std::optional<int64_t> stepConstant = getConstantIntValue(step);
-  if (!stepConstant)
+  if (!stepConstant || *stepConstant == 0)
     return std::nullopt;
 
   return llvm::divideCeilSigned(*ubConstant - *lbConstant, *stepConstant);

diff  --git a/mlir/test/Dialect/SCF/canonicalize.mlir b/mlir/test/Dialect/SCF/canonicalize.mlir
index 308cf150aa98e..7804cc7026d67 100644
--- a/mlir/test/Dialect/SCF/canonicalize.mlir
+++ b/mlir/test/Dialect/SCF/canonicalize.mlir
@@ -1912,3 +1912,16 @@ func.func @index_switch_fold_no_res() {
 
 // CHECK-LABEL: func.func @index_switch_fold_no_res()
 //  CHECK-NEXT: "test.op"() : () -> ()
+
+// -----
+
+// CHECK-LABEL: func @scf_for_all_step_size_0()
+//       CHECK:   scf.forall (%{{.*}}) = (0) to (1) step (0)
+func.func @scf_for_all_step_size_0()  {
+  %x = arith.constant 0 : index
+  scf.forall (%i, %j) = (0, 4) to (1, 5) step (%x, 8) {
+    vector.print %x : index
+    scf.forall.in_parallel {}
+  }
+  return
+}


        


More information about the Mlir-commits mailing list