diff options
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 3463ffb..4ecfd49 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -981,7 +981,7 @@ expand_builtin_setjmp_setup (rtx buf_addr, rtx receiver_label) mem = gen_rtx_MEM (Pmode, buf_addr); set_mem_alias_set (mem, setjmp_alias_set); - emit_move_insn (mem, targetm.builtin_setjmp_frame_value ()); + emit_move_insn (mem, hard_frame_pointer_rtx); mem = gen_rtx_MEM (Pmode, plus_constant (Pmode, buf_addr, GET_MODE_SIZE (Pmode))), @@ -1023,31 +1023,6 @@ expand_builtin_setjmp_receiver (rtx receiver_label) if (chain && REG_P (chain)) emit_clobber (chain); - /* Now put in the code to restore the frame pointer, and argument - pointer, if needed. */ - if (! targetm.have_nonlocal_goto ()) - { - /* First adjust our frame pointer to its actual value. It was - previously set to the start of the virtual area corresponding to - the stacked variables when we branched here and now needs to be - adjusted to the actual hardware fp value. - - Assignments to virtual registers are converted by - instantiate_virtual_regs into the corresponding assignment - to the underlying register (fp in this case) that makes - the original assignment true. - So the following insn will actually be decrementing fp by - TARGET_STARTING_FRAME_OFFSET. */ - emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); - - /* Restoring the frame pointer also modifies the hard frame pointer. - Mark it used (so that the previous assignment remains live once - the frame pointer is eliminated) and clobbered (to represent the - implicit update from the assignment). */ - emit_use (hard_frame_pointer_rtx); - emit_clobber (hard_frame_pointer_rtx); - } - if (!HARD_FRAME_POINTER_IS_ARG_POINTER && fixed_regs[ARG_POINTER_REGNUM]) { /* If the argument pointer can be eliminated in favor of the |