From 045d7161a0fbbde5c70c2d1aef786c578f423a61 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sat, 15 Jun 2002 01:10:49 +0000 Subject: [PATCH] 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: r54634 --- gcc/ChangeLog | 8 ++++++++ gcc/loop.c | 3 ++- gcc/unroll.c | 6 ++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2bb93edc14c..07c1bae0470 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 * loop.c (for_each_insn_in_loop): Fix formatting and comments. diff --git a/gcc/loop.c b/gcc/loop.c index d3b62af6ceb..dc64b5c889a 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -5943,7 +5943,8 @@ 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 3b81d223ac7..a795dcbc202 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -3249,7 +3249,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 @@ -3257,7 +3258,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 -- 2.30.2