[ConstraintElim] Update existing constraint system in place (NFC).
authorFlorian Hahn <flo@fhahn.com>
Mon, 6 Feb 2023 16:43:42 +0000 (16:43 +0000)
committerFlorian Hahn <flo@fhahn.com>
Mon, 6 Feb 2023 16:43:42 +0000 (16:43 +0000)
commit8537a7c91c55152534baae0735c8a7e466d489ac
tree50e27f9b5841049b384983127178104e789395e4
parent0b8eff1f8724c6d8e890227597060109cb55e1ca
[ConstraintElim] Update existing constraint system in place (NFC).

This patch breaks up the solving step into 2 phases:

1. Collect all rows where the variable to eliminate is != 0 and remove
   it from the original system.
2. Process all collect rows to build new set of constraints, add them to
   the original system.

This is much more efficient for excessive cases, as this avoids a large
number of moves to the new system. This reduces the time spent in
ConstraintElimination for the test case shared in D135915 from ~3s to
0.6s.
llvm/lib/Analysis/ConstraintSystem.cpp