mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-07 22:37:44 +08:00
unroll.c (loop_iterations): If we cannot prove iteration variable is set once in each iteration, punt.
* unroll.c (loop_iterations): If we cannot prove iteration variable is set once in each iteration, punt. From-SVN: r38996
This commit is contained in:
parent
63eaee7147
commit
9e2adb2a1c
@ -1,3 +1,8 @@
|
||||
2001-01-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* unroll.c (loop_iterations): If we cannot prove iteration variable
|
||||
is set once in each iteration, punt.
|
||||
|
||||
Sun Jan 14 00:23:15 2001 Denis Chertykov <denisc@overta.ru>
|
||||
|
||||
* config/avr/avr.md ("strlenhi"): Remove clobber of input address.
|
||||
|
15
gcc/unroll.c
15
gcc/unroll.c
@ -3577,6 +3577,13 @@ loop_iterations (loop)
|
||||
/* Grab initial value, only useful if it is a constant. */
|
||||
bl = REG_IV_CLASS (ivs, REGNO (iteration_var));
|
||||
initial_value = bl->initial_value;
|
||||
if (!bl->biv->always_executed || bl->biv->maybe_multiple)
|
||||
{
|
||||
if (loop_dump_stream)
|
||||
fprintf (loop_dump_stream,
|
||||
"Loop iterations: Basic induction var not set once in each iteration.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
increment = biv_total_increment (bl);
|
||||
}
|
||||
@ -3589,6 +3596,14 @@ loop_iterations (loop)
|
||||
if (REGNO (v->src_reg) >= ivs->n_regs)
|
||||
abort ();
|
||||
|
||||
if (!v->always_executed || v->maybe_multiple)
|
||||
{
|
||||
if (loop_dump_stream)
|
||||
fprintf (loop_dump_stream,
|
||||
"Loop iterations: General induction var not set once in each iteration.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
bl = REG_IV_CLASS (ivs, REGNO (v->src_reg));
|
||||
|
||||
/* Increment value is mult_val times the increment value of the biv. */
|
||||
|
Loading…
Reference in New Issue
Block a user