diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop-iv.c | 13 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e12f30..6614b54 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 0321faa..e3ec78b 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++) { |