From 25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Mon, 1 Jul 2019 16:55:42 +0000 Subject: [PATCH] re PR target/90963 (FAIL: gcc.c-torture/execute/built-in-setjmp.c execution test) PR target/90963 * config/pa/pa.md (builtin_longjmp): Restore hard_frame_pointer_rtx using saved frame pointer. Co-Authored-By: John David Anglin From-SVN: r272891 --- gcc/ChangeLog | 7 +++++++ gcc/config/pa/pa.md | 6 ++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5072232ae41..caee23e7f78 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-07-01 Wilco Dijkstra + John David Anglin + + PR target/90963 + * config/pa/pa.md (builtin_longjmp): Restore hard_frame_pointer_rtx + using saved frame pointer. + 2019-07-01 Eric Botcazou PR middle-end/64242 diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 809a7b7853c..3867a55bca8 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -8700,9 +8700,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" restoring the gp. */ emit_move_insn (pv, lab); - /* Restore the stack and frame pointers. The virtual_stack_vars_rtx - is saved instead of the hard_frame_pointer_rtx in the save area. - We need to adjust for the offset between these two values. */ + /* Restore the stack and frame pointers. */ fp = copy_to_reg (fp); emit_stack_restore (SAVE_NONLOCAL, stack); @@ -8710,7 +8708,7 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" emit_insn (gen_blockage ()); emit_clobber (hard_frame_pointer_rtx); emit_clobber (frame_pointer_rtx); - emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); + emit_move_insn (hard_frame_pointer_rtx, fp); emit_use (hard_frame_pointer_rtx); emit_use (stack_pointer_rtx); -- 2.30.2