diff options
author | Jakub Jelinek <jakub@redhat.com> | 2001-01-13 22:54:10 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2001-01-13 22:54:10 +0100 |
commit | 9e2adb2a1cb0144761d6cb57816981d523d6cca8 (patch) | |
tree | c409c04d90245a344cb5f9b78de84f492a8190e5 /gcc | |
parent | 63eaee7147226294b3f12223dfe22aecdfa70cef (diff) | |
download | gcc-9e2adb2a1cb0144761d6cb57816981d523d6cca8.zip gcc-9e2adb2a1cb0144761d6cb57816981d523d6cca8.tar.gz gcc-9e2adb2a1cb0144761d6cb57816981d523d6cca8.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/unroll.c | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cea3dc8..d775e76 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/unroll.c b/gcc/unroll.c index 11be66d..9289595 100644 --- a/gcc/unroll.c +++ b/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. */ |