diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e12f30159e..6614b548b2a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-01-25 Zdenek Dvorak + + * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more + efficient way. + 2006-01-24 DJ Delorie * expmed.c (store_bit_field): Don't arbitrarily deny using insv diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c index 0321faa58e8..e3ec78b7cfc 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++) {