From 6ff76c365c69c190001c9a00a85f07a9869494f0 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 23 Apr 2003 21:32:58 -0700 Subject: [PATCH] re PR rtl-optimization/8300 ([sparc] ICE in gen_reg_rtx, at emit-rtl.c:662) 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 | 7 +++++++ gcc/toplev.c | 14 +++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f4ed04596a..5745284bed7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-04-23 Richard Henderson + + 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 * Makefile.in (c-lex.o, LIBCPP_OBJS, cpplex.o): Update. diff --git a/gcc/toplev.c b/gcc/toplev.c index bf879929973..94720ee4132 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -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 ();