[Mlir-commits] [mlir] [MLIR][Presburger] Fix stale pivot in Smith normal form (PR #189789)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Mar 31 20:43:36 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Yue Huang (AdUhTkJm)
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/189789.diff
1 Files Affected:
- (modified) mlir/lib/Analysis/Presburger/Matrix.cpp (+1-3)
``````````diff
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.
``````````
</details>
https://github.com/llvm/llvm-project/pull/189789
More information about the Mlir-commits
mailing list