From 2dd6af4ef1c8af6a5ea0c610a71413f7bf5dd1af Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sat, 18 Jun 2016 11:10:10 +0000 Subject: [PATCH] re PR bootstrap/71435 (sparc bootstrap failure since r235625) PR bootstrap/71435 * reload1.c (reload): Pass 0 to finish_spills when called because update_eliminables_and_spill returns true and remove did_spill. (finish_spills): Adjust comment and document GLOBAL parameter. From-SVN: r237571 --- gcc/ChangeLog | 7 +++++++ gcc/reload1.c | 23 +++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d493884eb5d..dc901dacda0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-06-18 Eric Botcazou + + PR bootstrap/71435 + * reload1.c (reload): Pass 0 to finish_spills when called because + update_eliminables_and_spill returns true and remove did_spill. + (finish_spills): Adjust comment and document GLOBAL parameter. + 2016-06-17 DJ Delorie PR target/71338 diff --git a/gcc/reload1.c b/gcc/reload1.c index d6fcece1b73..5622e895e4b 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -897,7 +897,6 @@ reload (rtx_insn *first, int global) for (;;) { int something_changed; - int did_spill; HOST_WIDE_INT starting_frame_size; starting_frame_size = get_frame_size (); @@ -982,7 +981,7 @@ reload (rtx_insn *first, int global) if (something_was_spilled || starting_frame_size != get_frame_size ()) { if (update_eliminables_and_spill ()) - finish_spills (global); + finish_spills (0); continue; } @@ -1001,8 +1000,6 @@ reload (rtx_insn *first, int global) is used. */ CLEAR_REG_SET (&spilled_pseudos); - did_spill = 0; - something_changed = 0; /* If we allocated any new memory locations, make another pass @@ -1019,7 +1016,7 @@ reload (rtx_insn *first, int global) if (update_eliminables_and_spill ()) { - did_spill = 1; + finish_spills (0); something_changed = 1; } else @@ -1027,11 +1024,10 @@ reload (rtx_insn *first, int global) select_reload_regs (); if (failure) goto failed; + if (insns_need_reload) + something_changed |= finish_spills (global); } - if (insns_need_reload != 0 || did_spill) - something_changed |= finish_spills (global); - if (! something_changed) break; @@ -4281,10 +4277,13 @@ spill_hard_reg (unsigned int regno, int cant_eliminate) SET_REGNO_REG_SET (&spilled_pseudos, i); } -/* After find_reload_regs has been run for all insn that need reloads, - and/or spill_hard_regs was called, this function is used to actually - spill pseudo registers and try to reallocate them. It also sets up the - spill_regs array for use by choose_reload_regs. */ +/* After spill_hard_reg was called and/or find_reload_regs was run for all + insns that need reloads, this function is used to actually spill pseudo + registers and try to reallocate them. It also sets up the spill_regs + array for use by choose_reload_regs. + + GLOBAL nonzero means we should attempt to reallocate any pseudo registers + that we displace from hard registers. */ static int finish_spills (int global) -- 2.30.2