aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-05-13 14:38:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-05-13 14:38:19 +0000
commit1ece8d4c77cb51f2ac719e7d5cdec740796c67b0 (patch)
tree1a4b7e231a6e126ccbe261f2381092af256bf239
parentba4ad400f1e4f726adb431aedea3c0ddf1e3315a (diff)
downloadgcc-1ece8d4c77cb51f2ac719e7d5cdec740796c67b0.zip
gcc-1ece8d4c77cb51f2ac719e7d5cdec740796c67b0.tar.gz
gcc-1ece8d4c77cb51f2ac719e7d5cdec740796c67b0.tar.bz2
re PR tree-optimization/66129 (FAIL: gcc.dg/vect/vect-strided-*c execution test)
2015-05-13 Richard Biener <rguenther@suse.de> PR tree-optimization/66129 * tree-vect-slp.c (vect_build_slp_tree): Make sure all ops are commutative. (vect_schedule_slp_instance): Fix typo. From-SVN: r223164
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vect-slp.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ada1757..c7cd1ab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-05-13 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/66129
+ * tree-vect-slp.c (vect_build_slp_tree): Make sure all ops are
+ commutative.
+ (vect_schedule_slp_instance): Fix typo.
+
2015-05-13 David Malcolm <dmalcolm@redhat.com>
* common.opt (fdump-internal-locations): New option.
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index c675b1c..b78f7d8 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -1123,6 +1123,7 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
&& oprnds_info[1]->first_dt == vect_internal_def
&& is_gimple_assign (stmt)
&& commutative_tree_code (gimple_assign_rhs_code (stmt))
+ && !SLP_TREE_TWO_OPERATORS (*node)
/* Do so only if the number of not successful permutes was nor more
than a cut-ff as re-trying the recursive match on
possibly each level of the tree would expose exponential
@@ -3459,7 +3460,7 @@ vect_schedule_slp_instance (slp_tree node, slp_instance instance,
tree *melts = XALLOCAVEC (tree, TYPE_VECTOR_SUBPARTS (vectype));
for (l = 0; l < TYPE_VECTOR_SUBPARTS (vectype); ++l)
{
- if (k > group_size)
+ if (k >= group_size)
k = 0;
melts[l] = build_int_cst
(meltype, mask[k++] * TYPE_VECTOR_SUBPARTS (vectype) + l);