From: Jakub Jelinek Date: Sat, 13 Jan 2001 21:54:10 +0000 (+0100) Subject: unroll.c (loop_iterations): If we cannot prove iteration variable is set once in... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9e2adb2a1cb0144761d6cb57816981d523d6cca8;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cea3dc86717..d775e76da5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-01-13 Jakub Jelinek + + * 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 * config/avr/avr.md ("strlenhi"): Remove clobber of input address. diff --git a/gcc/unroll.c b/gcc/unroll.c index 11be66d89cc..9289595d039 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. */