diff options
author | Richard Henderson <rth@redhat.com> | 2003-04-23 21:32:58 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-04-23 21:32:58 -0700 |
commit | 6ff76c365c69c190001c9a00a85f07a9869494f0 (patch) | |
tree | 3de8e231f3f692100e47e40fdfaa4f1fe7d8ca77 /gcc | |
parent | 5c894b968cceaf2e8f259b592003266a64eea79f (diff) | |
download | gcc-6ff76c365c69c190001c9a00a85f07a9869494f0.zip gcc-6ff76c365c69c190001c9a00a85f07a9869494f0.tar.gz gcc-6ff76c365c69c190001c9a00a85f07a9869494f0.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/toplev.c | 14 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f4ed04..5745284 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/toplev.c b/gcc/toplev.c index bf87992..94720ee 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 (); |