Commit 47c32082 by Richard Biener Committed by Richard Biener

re PR tree-optimization/59164 (ice: tree check: expected tree that contains…

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
parent 04ef64d5
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>
* graphite-sese-to-poly.c: Include expr.h.
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>
PR middle-end/58956
* gcc.dg/torture/pr58956.c: New testcase.
......
/* { 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;
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: */
gcc_assert (single_pred_p (exit_bb));
......
......@@ -1588,24 +1588,19 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
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))
< exact_log2 (vectorization_factor)))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required.\n");
if (!vect_can_advance_ivs_p (loop_vinfo))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"not vectorized: can't create epilog loop 1.\n");
return false;
}
if (!slpeel_can_duplicate_loop_p (loop, single_exit (loop)))
dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required\n");
if (!vect_can_advance_ivs_p (loop_vinfo)
|| !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");
"not vectorized: can't create required "
"epilog loop\n");
return false;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment