re PR rtl-optimization/8300 ([sparc] ICE in gen_reg_rtx, at emit-rtl.c:662)
authorRichard Henderson <rth@redhat.com>
Thu, 24 Apr 2003 04:32:58 +0000 (21:32 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 24 Apr 2003 04:32:58 +0000 (21:32 -0700)
PR opt/8300
* toplev.c (rest_of_compilation): Delay no_new_pseudos until
after initialize_uninitialized_subregs; update reg info assuming
new pseudos were created.

From-SVN: r66030

gcc/ChangeLog
gcc/toplev.c

index 2f4ed04596a60e81b64c3491eafea91913483e0f..5745284bed770791e7aaf4242eb8703818e5015c 100644 (file)
@@ -1,3 +1,10 @@
+2003-04-23  Richard Henderson  <rth@redhat.com>
+
+       PR opt/8300
+       * toplev.c (rest_of_compilation): Delay no_new_pseudos until
+       after initialize_uninitialized_subregs; update reg info assuming
+       new pseudos were created.
+
 2003-04-23  Neil Booth  <neil@daikokuya.co.uk>
 
        * Makefile.in (c-lex.o, LIBCPP_OBJS, cpplex.o): Update.
index bf879929973546ef7e30c9ac1f7cd960235460a3..94720ee41327080e4fe1f2eae5a94f4baf8fc63b 100644 (file)
@@ -3216,8 +3216,6 @@ rest_of_compilation (decl)
                 | (flag_thread_jumps ? CLEANUP_THREADING : 0));
   timevar_pop (TV_FLOW);
 
-  no_new_pseudos = 1;
-
   if (warn_uninitialized || extra_warnings)
     {
       uninitialized_vars_warning (DECL_INITIAL (decl));
@@ -3227,17 +3225,19 @@ rest_of_compilation (decl)
 
   if (optimize)
     {
-      clear_bb_flags ();
       if (!flag_new_regalloc && initialize_uninitialized_subregs ())
        {
-         /* Insns were inserted, so things might look a bit different.  */
+         /* Insns were inserted, and possibly pseudos created, so
+            things might look a bit different.  */
          insns = get_insns ();
-         update_life_info_in_dirty_blocks (UPDATE_LIFE_GLOBAL_RM_NOTES,
-                                           PROP_LOG_LINKS | PROP_REG_INFO
-                                           | PROP_DEATH_NOTES);
+         allocate_reg_life_data ();
+         update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES,
+                           PROP_LOG_LINKS | PROP_REG_INFO | PROP_DEATH_NOTES);
        }
     }
 
+  no_new_pseudos = 1;
+
   close_dump_file (DFI_life, print_rtl_with_bb, insns);
 
   ggc_collect ();