Make fix for PR 83965 handle SLP reduction chains
commit921e542ba9c6bd82c2df73e412b8be42092a15c5
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Feb 2018 16:17:00 +0000 (26 16:17 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Feb 2018 16:17:00 +0000 (26 16:17 +0000)
tree59edac294bea33d8f9fd7c5da312c8c3aaf1b4b2
parent3345ca9a37e308bf9f8e11aaf97a2985f8f18155
Make fix for PR 83965 handle SLP reduction chains

This patch prevents pattern-matching of fold-left SLP reduction chains,
which the previous patch for 83965 didn't handle properly.  It only
stops the last statement in the group from being matched, but that's
enough to cause the group to be dissolved later.

A better fix would be to put all the information about the reduction
on the the first statement in the reduction chain, so that every
statement in the group can tell what the group is doing.  That doesn't
seem like stage 4 material though.

2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83965
* tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
that grouped statements are part of a reduction chain.  Return
true if the statement is not marked as a reduction itself but
is part of a group.
(vect_recog_dot_prod_pattern): Don't check whether the statement
is part of a group here.
(vect_recog_sad_pattern): Likewise.
(vect_recog_widen_sum_pattern): Likewise.

gcc/testsuite/
PR tree-optimization/83965
* gcc.dg/vect/pr83965-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257995 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr83965-2.c [new file with mode: 0644]
gcc/tree-vect-patterns.c