diff options
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 5a01045..82b106e 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -914,10 +914,9 @@ reload (rtx_insn *first, int global) spill_hard_reg (from, 1); } -#if !HARD_FRAME_POINTER_IS_FRAME_POINTER - if (frame_pointer_needed) + if (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed) spill_hard_reg (HARD_FRAME_POINTER_REGNUM, 1); -#endif + finish_spills (global); /* From now on, we may need to generate moves differently. We may also @@ -3281,13 +3280,13 @@ eliminate_regs_in_insn (rtx_insn *insn, int replace) for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) if (ep->from_rtx == SET_DEST (old_set) && ep->can_eliminate) { -#if !HARD_FRAME_POINTER_IS_FRAME_POINTER /* If this is setting the frame pointer register to the hardware frame pointer register and this is an elimination that will be done (tested above), this insn is really adjusting the frame pointer downward to compensate for the adjustment done before a nonlocal goto. */ - if (ep->from == FRAME_POINTER_REGNUM + if (!HARD_FRAME_POINTER_IS_FRAME_POINTER + && ep->from == FRAME_POINTER_REGNUM && ep->to == HARD_FRAME_POINTER_REGNUM) { rtx base = SET_SRC (old_set); @@ -3347,7 +3346,6 @@ eliminate_regs_in_insn (rtx_insn *insn, int replace) goto done; } } -#endif /* In this case this insn isn't serving a useful purpose. We will delete it in reload_as_needed once we know that this |