On Thu, Feb 21, 2013 at 11:02:56PM +0000, Steve Ellcey wrote: > Have you gotten any reports of problems with this patch? It seems to be > sending cc1 into an infinite > loop during the GCC testsuite for me. I am testing the mips-mti-linux-gnu > target and tests like > gcc.target/mips/call-saved-1.c are causing cc1 to suck up all my memory and > swap space before the > test times out. > > I will keep digging and see if I can figure out what is going on but I wanted > to see if anyone else has > reported this problem.
I think this should fix this (but totally untested except for call-saved-1.c, and it doesn't make any sense to test on non-mips). The problem I believe is that Aldy has changed init_optabs and insn-opinit.c to use this_fn_optabs instead of this_target_optabs, but it is only set in invoke_set_current_function_hook. During save_target_globals we want to init this_target_optabs, so we need to temporarily switch this_fn_optabs to make that happen. 2013-02-22 Jakub Jelinek <ja...@redhat.com> PR target/52555 * target-globals.c (save_target_globals): For init_reg_sets and target_reinit remporarily set this_fn_optabs to this_target_optabs. --- gcc/target-globals.c.jj 2013-02-19 07:40:03.000000000 +0100 +++ gcc/target-globals.c 2013-02-22 10:55:36.725435859 +0100 @@ -67,6 +67,7 @@ struct target_globals * save_target_globals (void) { struct target_globals *g; + struct target_optabs *saved_this_fn_optabs = this_fn_optabs; g = ggc_alloc_target_globals (); g->flag_state = XCNEW (struct target_flag_state); @@ -86,8 +87,10 @@ save_target_globals (void) g->bb_reorder = XCNEW (struct target_bb_reorder); g->lower_subreg = XCNEW (struct target_lower_subreg); restore_target_globals (g); + this_fn_optabs = this_target_optabs; init_reg_sets (); target_reinit (); + this_fn_optabs = saved_this_fn_optabs; return g; } Jakub