[ConstraintSystem] Remove last variable, use move instead of copy. (NFC)
authorFlorian Hahn <flo@fhahn.com>
Thu, 2 Feb 2023 16:03:26 +0000 (16:03 +0000)
committerFlorian Hahn <flo@fhahn.com>
Thu, 2 Feb 2023 16:03:27 +0000 (16:03 +0000)
commit1373f203cea89abc21f257b4f965cf8697ebd076
tree2e6e170ac12aad917992249152f1e3d174daff6e
parent735f117f4d0deb9644d65c8fe8a80add058e7a2b
[ConstraintSystem] Remove last variable, use move instead of copy. (NFC)

At the moment, a large amount of time is spent construction vectors
by pushing back all elements except the first variable. For large
inputs, such as discussed in https://reviews.llvm.org/D135915#4057050
this can result in excessive compile-time.

Instead, it is more efficient to remove the last variable. Then the
original vector can be re-used by simply popping the last element and
then moving the contents to the new system.

This improves time spent in ConstraintElimination for the linked
reproducer from ~43s to ~3s.
llvm/lib/Analysis/ConstraintSystem.cpp