diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a59ac958ab3525bcfe0b7091c25bf61f14a54d52..35d72cf28dddd3ddf97f36d1e7f230dd3d63a7ae 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
+
+	* loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
+
 2006-01-20  Richard Sandiford  <richard@codesourcery.com>
 
 	* stmt.c (case_bit_test_cmp): Stabilize the sort using code
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index e3ec78b7cfcb1412a4676abf500fee176a24bd18..0321faa58e81bcac87bac05889bbe306be504b25 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -250,14 +250,11 @@ iv_analysis_loop_init (struct loop *loop)
   current_loop = loop;
 
   /* Clear the information from the analysis of the previous loop.  */
-  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 ();
+  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);
 
   for (i = 0; i < loop->num_nodes; i++)
     {