mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/59164 (ice: tree check: expected tree that contains ‘decl minimal’ structure, have ‘integer_cst’ in get_var_info, at tree-into-ssa.c:380)
2013-11-19 Richard Biener <rguenther@suse.de> PR tree-optimization/59164 * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Uncomment assert. * tree-vect-loop.c (vect_analyze_loop_operations): Adjust check whether we can create an epilogue loop to reflect the cases where we create one. * gcc.dg/torture/pr59164.c: New testcase. From-SVN: r205030
This commit is contained in:
parent
04ef64d536
commit
47c32082dd
|
|
@ -1,3 +1,12 @@
|
||||||
|
2013-11-19 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/59164
|
||||||
|
* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
|
||||||
|
Uncomment assert.
|
||||||
|
* tree-vect-loop.c (vect_analyze_loop_operations): Adjust
|
||||||
|
check whether we can create an epilogue loop to reflect the
|
||||||
|
cases where we create one.
|
||||||
|
|
||||||
2013-11-19 Andrew MacLeod <amacleod@redhat.com>
|
2013-11-19 Andrew MacLeod <amacleod@redhat.com>
|
||||||
|
|
||||||
* graphite-sese-to-poly.c: Include expr.h.
|
* graphite-sese-to-poly.c: Include expr.h.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2013-11-19 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/59164
|
||||||
|
* gcc.dg/torture/pr59164.c: New testcase.
|
||||||
|
|
||||||
2013-11-19 Richard Biener <rguenther@suse.de>
|
2013-11-19 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/58956
|
PR middle-end/58956
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
int a, d, e;
|
||||||
|
long b[10];
|
||||||
|
int c[10][8];
|
||||||
|
|
||||||
|
int fn1(p1)
|
||||||
|
{
|
||||||
|
return 1 >> p1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn2(void)
|
||||||
|
{
|
||||||
|
int f;
|
||||||
|
for (a=1; a <= 4; a++)
|
||||||
|
{
|
||||||
|
f = fn1(0 < c[a][0]);
|
||||||
|
if (f || d)
|
||||||
|
e = b[a] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1673,7 +1673,7 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
|
||||||
gimple_stmt_iterator gsi, gsi1;
|
gimple_stmt_iterator gsi, gsi1;
|
||||||
basic_block update_bb = update_e->dest;
|
basic_block update_bb = update_e->dest;
|
||||||
|
|
||||||
/* gcc_assert (vect_can_advance_ivs_p (loop_vinfo)); */
|
gcc_checking_assert (vect_can_advance_ivs_p (loop_vinfo));
|
||||||
|
|
||||||
/* Make sure there exists a single-predecessor exit bb: */
|
/* Make sure there exists a single-predecessor exit bb: */
|
||||||
gcc_assert (single_pred_p (exit_bb));
|
gcc_assert (single_pred_p (exit_bb));
|
||||||
|
|
|
||||||
|
|
@ -1588,24 +1588,19 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo)
|
if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)
|
||||||
|| ((int) tree_ctz (LOOP_VINFO_NITERS (loop_vinfo))
|
|| ((int) tree_ctz (LOOP_VINFO_NITERS (loop_vinfo))
|
||||||
< exact_log2 (vectorization_factor)))
|
< exact_log2 (vectorization_factor)))
|
||||||
{
|
{
|
||||||
if (dump_enabled_p ())
|
if (dump_enabled_p ())
|
||||||
dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required.\n");
|
dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required\n");
|
||||||
if (!vect_can_advance_ivs_p (loop_vinfo))
|
if (!vect_can_advance_ivs_p (loop_vinfo)
|
||||||
|
|| !slpeel_can_duplicate_loop_p (loop, single_exit (loop)))
|
||||||
{
|
{
|
||||||
if (dump_enabled_p ())
|
if (dump_enabled_p ())
|
||||||
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
||||||
"not vectorized: can't create epilog loop 1.\n");
|
"not vectorized: can't create required "
|
||||||
return false;
|
"epilog loop\n");
|
||||||
}
|
|
||||||
if (!slpeel_can_duplicate_loop_p (loop, single_exit (loop)))
|
|
||||||
{
|
|
||||||
if (dump_enabled_p ())
|
|
||||||
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
|
||||||
"not vectorized: can't create epilog loop 2.\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue