[llvm] [ConstraintElim] Drop invalid rows instead of failing the elimination (PR #76299)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 28 07:40:34 PST 2023
================
@@ -96,27 +98,34 @@ bool ConstraintSystem::eliminateUsingFM() {
IdxUpper++;
}
- if (MulOverflow(UpperV, ((-1) * LowerLast / GCD), M1))
- return false;
+ if (MulOverflow(UpperV, ((-1) * LowerLast / GCD), M1)) {
+ Valid = false;
+ break;
+ }
if (IdxLower < LowerRow.size() && LowerRow[IdxLower].Id == CurrentId) {
LowerV = LowerRow[IdxLower].Coefficient;
IdxLower++;
}
- if (MulOverflow(LowerV, (UpperLast / GCD), M2))
- return false;
- if (AddOverflow(M1, M2, N))
- return false;
+ if (MulOverflow(LowerV, (UpperLast / GCD), M2)) {
+ Valid = false;
+ break;
+ }
+ if (AddOverflow(M1, M2, N)) {
+ Valid = false;
+ break;
+ }
if (N == 0)
continue;
NR.emplace_back(N, CurrentId);
- NewGCD =
- APIntOps::GreatestCommonDivisor({32, (uint32_t)N}, {32, NewGCD})
+ NextGCD =
----------------
fhahn wrote:
Great spot, you are right. This effectively makes the normalization a no-op. I removed it for now in 9b6127d76db7b7 which slightly reduces compile-time.
https://github.com/llvm/llvm-project/pull/76299
More information about the llvm-commits
mailing list