[Mlir-commits] [mlir] 38f8945 - [MLIR][Presburger] Fix stale pivot in Smith normal form (#189789)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Apr 3 23:18:03 PDT 2026
Author: Yue Huang
Date: 2026-04-03T23:17:57-07:00
New Revision: 38f89453620eade48d8486483a0ccebfff446f80
URL: https://github.com/llvm/llvm-project/commit/38f89453620eade48d8486483a0ccebfff446f80
DIFF: https://github.com/llvm/llvm-project/commit/38f89453620eade48d8486483a0ccebfff446f80.diff
LOG: [MLIR][Presburger] Fix stale pivot in Smith normal form (#189789)
The pivot used to fix divisibility in Smith normal form is stale. This
will not affect correctness, but can lower efficiency since the outer
loop will be executed more times.
Thanks for @benquike of discovering this.
Added:
Modified:
mlir/lib/Analysis/Presburger/Matrix.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Analysis/Presburger/Matrix.cpp b/mlir/lib/Analysis/Presburger/Matrix.cpp
index 6ea04543146b7..94e9eb5792dab 100644
--- a/mlir/lib/Analysis/Presburger/Matrix.cpp
+++ b/mlir/lib/Analysis/Presburger/Matrix.cpp
@@ -653,8 +653,6 @@ IntMatrix::computeSmithNormalForm() const {
u.negateRow(i);
}
- DynamicAPInt pivot = d(i, i);
-
// Clear other entries in row i and column i with Euclid's algorithm.
for (unsigned r = i + 1; r < numRows; ++r) {
while (d(r, i) != 0) {
@@ -684,7 +682,7 @@ IntMatrix::computeSmithNormalForm() const {
}
}
- if (auto row = findNonMultipleRow(d, i + 1, pivot)) {
+ if (auto row = findNonMultipleRow(d, i + 1, d(i, i))) {
// Add the row (r) to row i. This brings d(r, c) into the i-th row,
// creating a new value at d(i, c) that will be used to reduce the
// pivot size.
More information about the Mlir-commits
mailing list