diff options
author | Richard Biener <rguenther@suse.de> | 2019-09-20 09:54:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-09-20 09:54:54 +0000 |
commit | d63eadac7db10d4846bdffa93fd164cb035fb102 (patch) | |
tree | ef1dc5db6c4ed322f9ed8485cabbf001647679c7 /gcc/tree-vect-patterns.c | |
parent | 9ba4312712a96eba938c9d280e57f71929cdef41 (diff) | |
download | gcc-d63eadac7db10d4846bdffa93fd164cb035fb102.zip gcc-d63eadac7db10d4846bdffa93fd164cb035fb102.tar.gz gcc-d63eadac7db10d4846bdffa93fd164cb035fb102.tar.bz2 |
re PR testsuite/91821 (r275928 breaks gcc.target/powerpc/sad-vectorize-2.c)
2019-09-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/91821
* tree-vect-loop.c (check_reduction_path): Check we can compute
reduc_idx.
(vect_is_simple_reduction): Set STMT_VINFO_REDUC_IDX.
* tree-vect-patterns.c (vect_reassociating_reduction_p): Return
operands in canonical order.
* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
STMT_VINFO_REDUC_IDX.
* tree-vectorizer.h (_stmt_vec_info::reduc_idx): New.
(STMT_VINFO_REDUC_IDX): Likewise.
From-SVN: r275996
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r-- | gcc/tree-vect-patterns.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 2f86f9e..baa9a4c 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -868,6 +868,8 @@ vect_reassociating_reduction_p (stmt_vec_info stmt_info, tree_code code, *op0_out = gimple_assign_rhs1 (assign); *op1_out = gimple_assign_rhs2 (assign); + if (commutative_tree_code (code) && STMT_VINFO_REDUC_IDX (stmt_info) == 0) + std::swap (*op0_out, *op1_out); return true; } |