From: Eric Botcazou Date: Sat, 15 Jun 2002 01:12:06 +0000 (+0000) Subject: loop.c (check_final_value): Use v->always_executed instead of v->always_computable. X-Git-Tag: releases/gcc-3.1.1~151 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=124797a9610fa874a6375dad5e1456946d59c162;p=thirdparty%2Fgcc.git loop.c (check_final_value): Use v->always_executed instead of v->always_computable. * loop.c (check_final_value): Use v->always_executed instead of v->always_computable. * unroll.c (final_giv_value): Don't calculate the final value as a function of the biv if the giv is not computed for every loop iteration. From-SVN: r54635 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4ea5b89f7cb3..a7a67e26ffb9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-06-14 Eric Botcazou + + * loop.c (check_final_value): Use v->always_executed + instead of v->always_computable. + * unroll.c (final_giv_value): Don't calculate the final + value as a function of the biv if the giv is not computed + for every loop iteration. + 2002-06-14 Eric Botcazou PR c/6677 diff --git a/gcc/loop.c b/gcc/loop.c index a913574b16c1..4045cedb47a7 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -5851,7 +5851,7 @@ check_final_value (loop, v) #endif if ((final_value = final_giv_value (loop, v)) - && (v->always_computable || last_use_this_basic_block (v->dest_reg, v->insn))) + && (v->always_executed || last_use_this_basic_block (v->dest_reg, v->insn))) { int biv_increment_seen = 0, before_giv_insn = 0; rtx p = v->insn; diff --git a/gcc/unroll.c b/gcc/unroll.c index 6936a710244f..6be951e27922 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -3305,7 +3305,8 @@ final_giv_value (loop, v) /* Try to calculate the final value as a function of the biv it depends upon. The only exit from the loop must be the fall through at the bottom - (otherwise it may not have its final value when the loop exits). */ + and the insn that sets the giv must be executed on every iteration + (otherwise the giv may not have its final value when the loop exits). */ /* ??? Can calculate the final giv value by subtracting off the extra biv increments times the giv's mult_val. The loop must have @@ -3313,7 +3314,8 @@ final_giv_value (loop, v) to be known. */ if (n_iterations != 0 - && ! loop->exit_count) + && ! loop->exit_count + && v->always_executed) { /* ?? It is tempting to use the biv's value here since these insns will be put after the loop, and hence the biv will have its final value