mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 19:51:34 +08:00
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>
|
||||
|
||||
* 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>
|
||||
|
||||
PR middle-end/58956
|
||||
|
21
gcc/testsuite/gcc.dg/torture/pr59164.c
Normal file
21
gcc/testsuite/gcc.dg/torture/pr59164.c
Normal file
@ -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;
|
||||
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))
|
||||
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 1.\n");
|
||||
return false;
|
||||
}
|
||||
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");
|
||||
"not vectorized: can't create required "
|
||||
"epilog loop\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user