diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e12f30159e28b6d19ecf77c025c8e99f4234612..6614b548b2a7460f9c14204854948692ebd1095c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-01-25 Zdenek Dvorak <dvorakz@suse.cz> + + * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more + efficient way. + 2006-01-24 DJ Delorie <dj@redhat.com> * expmed.c (store_bit_field): Don't arbitrarily deny using insv diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c index 0321faa58e81bcac87bac05889bbe306be504b25..e3ec78b7cfcb1412a4676abf500fee176a24bd18 100644 --- a/gcc/loop-iv.c +++ b/gcc/loop-iv.c @@ -250,11 +250,14 @@ iv_analysis_loop_init (struct loop *loop) current_loop = loop; /* Clear the information from the analysis of the previous loop. */ - if (!first_time) - iv_analysis_done (); - df = df_init (DF_HARD_REGS | DF_EQUIV_NOTES); - df_chain_add_problem (df, DF_UD_CHAIN); - bivs = htab_create (10, biv_hash, biv_eq, free); + if (first_time) + { + df = df_init (DF_HARD_REGS | DF_EQUIV_NOTES); + df_chain_add_problem (df, DF_UD_CHAIN); + bivs = htab_create (10, biv_hash, biv_eq, free); + } + else + clear_iv_info (); for (i = 0; i < loop->num_nodes; i++) {