[PATCH] Fix PR66129
Richard Biener
rguenther@suse.de
Wed May 13 12:11:00 GMT 2015
The following fixes PR66129.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
Richard.
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.
Index: gcc/tree-vect-slp.c
===================================================================
*** gcc/tree-vect-slp.c (revision 223119)
--- gcc/tree-vect-slp.c (working copy)
*************** vect_build_slp_tree (loop_vec_info loop_
*** 1123,1128 ****
--- 1123,1129 ----
&& 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
*************** vect_schedule_slp_instance (slp_tree nod
*** 3459,3465 ****
tree *melts = XALLOCAVEC (tree, TYPE_VECTOR_SUBPARTS (vectype));
for (l = 0; l < TYPE_VECTOR_SUBPARTS (vectype); ++l)
{
! if (k > group_size)
k = 0;
melts[l] = build_int_cst
(meltype, mask[k++] * TYPE_VECTOR_SUBPARTS (vectype) + l);
--- 3460,3466 ----
tree *melts = XALLOCAVEC (tree, TYPE_VECTOR_SUBPARTS (vectype));
for (l = 0; l < TYPE_VECTOR_SUBPARTS (vectype); ++l)
{
! if (k >= group_size)
k = 0;
melts[l] = build_int_cst
(meltype, mask[k++] * TYPE_VECTOR_SUBPARTS (vectype) + l);
More information about the Gcc-patches
mailing list