]> git.ipfire.org Git - thirdparty/gcc.git/commit
middle-end: update vector loop upper bounds when early break vect [PR113734]
authorTamar Christina <tamar.christina@arm.com>
Tue, 13 Feb 2024 11:04:38 +0000 (11:04 +0000)
committerTamar Christina <tamar.christina@arm.com>
Tue, 13 Feb 2024 11:05:11 +0000 (11:05 +0000)
commit491e57451df47cda88f658601a92d6d006ae09d7
tree6f6e067a6b0ab85f5bfb57b12519f2afe0b5ad3b
parent0d810b7d133c72b7e62b294ffaaf131560ce2391
middle-end: update vector loop upper bounds when early break vect [PR113734]

When doing early break vectorization we should treat the final iteration as
possibly being partial.  This so that when we calculate the vector loop upper
bounds we take into account that final iteration could have done some work.

The attached testcase shows that if we don't then cunroll may unroll the loop an
if the upper bound is wrong we lose a vector iteration.

This is similar to how we adjust the scalar loop bounds for the PEELED case.

gcc/ChangeLog:

PR tree-optimization/113734
* tree-vect-loop.cc (vect_transform_loop): Treat the final iteration of
an early break loop as partial.

gcc/testsuite/ChangeLog:

PR tree-optimization/113734
* gcc.dg/vect/vect-early-break_117-pr113734.c: New test.
gcc/testsuite/gcc.dg/vect/vect-early-break_117-pr113734.c [new file with mode: 0644]
gcc/tree-vect-loop.cc