aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-23 21:32:58 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-04-23 21:32:58 -0700
commit6ff76c365c69c190001c9a00a85f07a9869494f0 (patch)
tree3de8e231f3f692100e47e40fdfaa4f1fe7d8ca77 /gcc
parent5c894b968cceaf2e8f259b592003266a64eea79f (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/toplev.c14
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 ();