aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-06-25 08:54:14 +0200
committerRichard Biener <rguenther@suse.de>2021-06-25 10:18:56 +0200
commit05516402f8eb8ec282a13fa1e38d9f9c5b3dd3e5 (patch)
treee2d54778795c2386bbed23042190b5bd1b8b3bc5
parentc6c7ac0499c722ad03259013d6dc50e585a71860 (diff)
downloadgcc-05516402f8eb8ec282a13fa1e38d9f9c5b3dd3e5.zip
gcc-05516402f8eb8ec282a13fa1e38d9f9c5b3dd3e5.tar.gz
gcc-05516402f8eb8ec282a13fa1e38d9f9c5b3dd3e5.tar.bz2
Fixup reduction info on addsub SLP pattern
gcc.dg/vect/pr96854.c shows we need to copy over reduction info to the SLP pattern as already done for the complex patterns. 2021-06-25 Richard Biener <rguenther@suse.de> * tree-vect-slp-patterns.c (addsub_pattern::build): Copy STMT_VINFO_REDUC_DEF from the original representative.
-rw-r--r--gcc/tree-vect-slp-patterns.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/tree-vect-slp-patterns.c b/gcc/tree-vect-slp-patterns.c
index d536494..2671f91 100644
--- a/gcc/tree-vect-slp-patterns.c
+++ b/gcc/tree-vect-slp-patterns.c
@@ -1577,11 +1577,13 @@ addsub_pattern::build (vec_info *vinfo)
(TREE_TYPE (gimple_assign_lhs (rep->stmt))));
gimple_call_set_nothrow (call, true);
gimple_set_bb (call, gimple_bb (rep->stmt));
- SLP_TREE_REPRESENTATIVE (node) = vinfo->add_pattern_stmt (call, rep);
- STMT_VINFO_RELEVANT (SLP_TREE_REPRESENTATIVE (node)) = vect_used_in_scope;
- STMT_SLP_TYPE (SLP_TREE_REPRESENTATIVE (node)) = pure_slp;
- STMT_VINFO_VECTYPE (SLP_TREE_REPRESENTATIVE (node)) = SLP_TREE_VECTYPE (node);
- STMT_VINFO_SLP_VECT_ONLY_PATTERN (SLP_TREE_REPRESENTATIVE (node)) = true;
+ stmt_vec_info new_rep = vinfo->add_pattern_stmt (call, rep);
+ SLP_TREE_REPRESENTATIVE (node) = new_rep;
+ STMT_VINFO_RELEVANT (new_rep) = vect_used_in_scope;
+ STMT_SLP_TYPE (new_rep) = pure_slp;
+ STMT_VINFO_VECTYPE (new_rep) = SLP_TREE_VECTYPE (node);
+ STMT_VINFO_SLP_VECT_ONLY_PATTERN (new_rep) = true;
+ STMT_VINFO_REDUC_DEF (new_rep) = STMT_VINFO_REDUC_DEF (vect_orig_stmt (rep));
SLP_TREE_CODE (node) = ERROR_MARK;
SLP_TREE_LANE_PERMUTATION (node).release ();