diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2019-07-01 16:55:42 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2019-07-01 16:55:42 +0000 |
commit | 25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a (patch) | |
tree | 30c146c0cf339b3673442abcf97ccdd6ea92ea73 /gcc | |
parent | 8ad8180392d0ec351e337c9e06c0543b4ae5e849 (diff) | |
download | gcc-25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a.zip gcc-25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a.tar.gz gcc-25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a.tar.bz2 |
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 <danglin@gcc.gnu.org>
From-SVN: r272891
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/pa/pa.md | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5072232..caee23e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-07-01 Wilco Dijkstra <wdijkstr@arm.com> + John David Anglin <danglin@gcc.gnu.org> + + PR target/90963 + * config/pa/pa.md (builtin_longjmp): Restore hard_frame_pointer_rtx + using saved frame pointer. + 2019-07-01 Eric Botcazou <ebotcazou@adacore.com> PR middle-end/64242 diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 809a7b7..3867a55 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); |