re PR tree-optimization/66129 (FAIL: gcc.dg/vect/vect-strided-*c execution test)
authorRichard Biener <rguenther@suse.de>
Wed, 13 May 2015 14:38:19 +0000 (14:38 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 13 May 2015 14:38:19 +0000 (14:38 +0000)
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

gcc/ChangeLog
gcc/tree-vect-slp.c

index ada1757d34af086ff0573b729a71e470383278c7..c7cd1ab9449d386aee91e14645d97bc1c0c7171c 100644 (file)
@@ -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.
index c675b1cf5db4b51f418270f6ec746b8500219f83..b78f7d82d3525e010ec18c2b5c2be17eb13add03 100644 (file)
@@ -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);