]> git.ipfire.org Git - thirdparty/gcc.git/commit
middle-end: thread through existing LCSSA variable for alternative exits too [PR113237]
authorTamar Christina <tamar.christina@arm.com>
Fri, 12 Jan 2024 15:25:58 +0000 (15:25 +0000)
committerTamar Christina <tamar.christina@arm.com>
Fri, 12 Jan 2024 15:31:11 +0000 (15:31 +0000)
commit99c0a540d6689ede068f9ba98af6f38c3cd71362
treedbce41ec0c624724aef74811a8f4e4cc40ff8443
parent411de96dbf2bdafc7a90ebbfc63e68afd6388d29
middle-end: thread through existing LCSSA variable for alternative exits too [PR113237]

Builing on top of the previous patch, similar to when we have a single exit if
we have a case where all exits are considered early exits and there are existing
non virtual phi then in order to maintain LCSSA we have to use the existing PHI
variables.  We can't simply clear them and just rebuild them because the order
of the PHIs in the main exit must match the original exit for when we add the
skip_epilog guard.

But the infrastructure is already in place to maintain them, we just have to use
the right value.

gcc/ChangeLog:

PR tree-optimization/113237
* tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use
existing LCSSA variable for exit when all exits are early break.

gcc/testsuite/ChangeLog:

PR tree-optimization/113237
* gcc.dg/vect/vect-early-break_98-pr113237.c: New test.
gcc/testsuite/gcc.dg/vect/vect-early-break_98-pr113237.c [new file with mode: 0644]
gcc/tree-vect-loop-manip.cc