[5/7] Move the fix for PR65518
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 6 Jul 2016 08:14:41 +0000 (08:14 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 6 Jul 2016 08:14:41 +0000 (08:14 +0000)
commit4fb8ba9d357297206678a3e3eacf9292148eafb5
treebec6504ded7b6f968d307ecd48cfc8553e087464
parent134c85caeba541ff4fb4377fb12729073cbdfe41
[5/7] Move the fix for PR65518

This patch moves the fix for PR65518 to the code that checks whether
load-and-permute operations are supported.   If the group size is
greater than the vectorisation factor, it would still be possible
to fall back to elementwise loads (as for strided groups) rather
than fail vectorisation entirely.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_grouped_load_supported): Add a
single_element_p parameter.
* tree-vect-data-refs.c (vect_grouped_load_supported): Likewise.
Check the PR65518 case here rather than in vectorizable_load.
* tree-vect-loop.c (vect_analyze_loop_2): Update call accordignly.
* tree-vect-stmts.c (vectorizable_load): Likewise.

From-SVN: r238037
gcc/ChangeLog
gcc/tree-vect-data-refs.c
gcc/tree-vect-loop.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h