+2010-04-22 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/43482
+ * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
+ loop unrolling in update of exit phis. Fix comment.
+ * tree-vect-slp.c (vect_analyze_slp): Check that there are at
+ least two reduction statements in the loop before starting SLP
+ analysis.
+
2010-04-22 Nick Clifton <nickc@redhat.com>
* config/stormy16/stormy16-lib2.c (__ucmpsi2): Fix thinko.
+2010-04-22 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/43482
+ * gcc.dg/vect/pr43842.c: New test.
+
2010-04-22 Bernd Schmidt <bernds@codesourcery.com>
* gcc.target/i386/wmul-1.c: Add dg-require-effective-target ilp32.
enum vect_def_type dt = vect_unknown_def_type;
int j, i;
VEC (tree, heap) *scalar_results = NULL;
- int group_size = 1, k, ratio;
+ unsigned int group_size = 1, k, ratio;
VEC (tree, heap) *vec_initial_defs = NULL;
VEC (gimple, heap) *phis;
v_out2 = reduce <v_out1>
s_out3 = extract_field <v_out2, 0>
s_out4 = adjust_result <s_out3>
- use <s_out4> */
+ use <s_out4>
+ use <s_out4> */
/* In SLP we may have several statements in NEW_PHIS and REDUCTION_PHIS (in
case that GROUP_SIZE is greater than vectorization factor). Therefore, we
(GROUP_SIZE / number of new vector stmts) scalar results correspond to
the first vector stmt, etc.
(RATIO is equal to (GROUP_SIZE / number of new vector stmts)). */
- ratio = group_size / VEC_length (gimple, new_phis);
- gcc_assert (!(group_size % VEC_length (gimple, new_phis)));
+ if (group_size > VEC_length (gimple, new_phis))
+ {
+ ratio = group_size / VEC_length (gimple, new_phis);
+ gcc_assert (!(group_size % VEC_length (gimple, new_phis)));
+ }
+ else
+ ratio = 1;
for (k = 0; k < group_size; k++)
{
}
/* Find SLP sequences starting from groups of reductions. */
- if (loop_vinfo && VEC_length (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo))
+ if (loop_vinfo && VEC_length (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo)) > 1
&& vect_analyze_slp_instance (loop_vinfo, bb_vinfo,
VEC_index (gimple, reductions, 0)))
ok = true;