Restructure vect_analyze_loop
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 6 Nov 2019 12:29:27 +0000 (12:29 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 6 Nov 2019 12:29:27 +0000 (12:29 +0000)
commit72d6aeecd95ec49fff1d258e4631167a03351cbb
tree8b8727a7b29d7018382a537635114d75a45e8c4a
parent756b23a81c539aec9f8108cb8d6a6313aef02a99
Restructure vect_analyze_loop

Once vect_analyze_loop has found a valid loop_vec_info X, we carry
on searching for alternatives if (1) X doesn't satisfy simdlen or
(2) we want to vectorize the epilogue of X.  I have a patch that
optionally adds a third reason: we want to see if there are cheaper
alternatives to X.

This patch restructures vect_analyze_loop so that it's easier
to add more reasons for continuing.  There's supposed to be no
behavioural change.

If we wanted to, we could allow vectorisation of epilogues once
loop->simdlen has been reached by changing "loop->simdlen" to
"simdlen" in the new vect_epilogues condition.  That should be
a separate change though.

2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-loop.c (vect_analyze_loop): Break out of the main
loop when we've finished, rather than returning directly from
the loop.  Use a local variable to track whether we're still
searching for the preferred simdlen.  Make vect_epilogues
record whether the next iteration should try to treat the
loop as an epilogue.

From-SVN: r277879
gcc/ChangeLog
gcc/tree-vect-loop.c