diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a23b9aae9fc..280ca15d4d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-12-28 Ira Rosen + + PR tree-optimization/51684 + * tree-vect-slp.c (vect_schedule_slp_instance): Get gsi of original + statement in case of a pattern. + (vect_schedule_slp): Likewise. + 2011-12-27 Eric Botcazou PR rtl-optimization/51667 diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 23330b2882f..91ed0c70634 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2885,6 +2885,8 @@ vect_schedule_slp_instance (slp_tree node, slp_instance instance, && REFERENCE_CLASS_P (gimple_get_lhs (stmt))) { gimple last_store = vect_find_last_store_in_slp_instance (instance); + if (is_pattern_stmt_p (vinfo_for_stmt (last_store))) + last_store = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (last_store)); si = gsi_for_stmt (last_store); } @@ -2989,6 +2991,8 @@ vect_schedule_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo) if (!STMT_VINFO_DATA_REF (vinfo_for_stmt (store))) break; + if (is_pattern_stmt_p (vinfo_for_stmt (store))) + store = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (store)); /* Free the attached stmt_vec_info and remove the stmt. */ gsi = gsi_for_stmt (store); gsi_remove (&gsi, true);