re PR tree-optimization/60510 (SLP blocks loop vectorization (with reduction))
authorRichard Biener <rguenther@suse.de>
Mon, 3 Jul 2017 13:44:13 +0000 (13:44 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 3 Jul 2017 13:44:13 +0000 (13:44 +0000)
commit6b5e165bd8236e1bcd4e7bc3a6fdc0f63ed9410a
tree0f6bd84c32cd696d16c9597b34acd016ebf22683
parent9607b014b29416b51200e8b7167bf47354d4b4f9
re PR tree-optimization/60510 (SLP blocks loop vectorization (with reduction))

2017-07-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/60510
* tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
the scalar reduction PHI and use it.
(vectorizable_reduction): Properly guard the single_defuse_cycle
path for non-SLP reduction chains where we cannot use it.
Rework reduc_def/index and vector type deduction.  Rework
vector operand gathering during reduction op code-gen.
* tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
chains dissolve the chain and leave it to non-SLP reduction
handling.

* gfortran.dg/vect/pr60510.f: New testcase.

From-SVN: r249919
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/vect/pr60510.f [new file with mode: 0644]
gcc/tree-vect-loop.c
gcc/tree-vect-slp.c