Fix EXTRACT_LAST_REDUCTION handling of pattern stmts
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 10 Dec 2019 12:20:02 +0000 (12:20 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 10 Dec 2019 12:20:02 +0000 (12:20 +0000)
commit9ec35478ccf0f3539988a054b7996278706a7710
tree9974f682114645a158aad0e51d9eb6a784cdc345
parentca49c831ca9c042db6cea746c21040c1ada18abb
Fix EXTRACT_LAST_REDUCTION handling of pattern stmts

Unlike most vector ops, extract-last reductions replace the original
scalar code in-situ rather than adding an adjacent vector implementation.
I.e.:

   dest_1 = COND_EXPR <...>;

becomes:

   dest_1 = .EXTRACT_LAST (...);

gcc.dg/vect/vect-cond-reduc-4.c was ICEing for SVE because we tried
to replace the pattern statement in this way, rather than replacing
the original scalar statement.

2019-12-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-stmts.c (vect_finish_replace_stmt): Always use the
original scalar statement rather than a pattern statement.
(vectorizable_condition): Likewise, in the handling of extract-last
reductions.

From-SVN: r279162
gcc/ChangeLog
gcc/tree-vect-stmts.c