aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2019-07-01 16:55:42 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2019-07-01 16:55:42 +0000
commit25cd9afbc1dc6bd9d4afccab3f09f0fbc811291a (patch)
tree30c146c0cf339b3673442abcf97ccdd6ea92ea73
parent8ad8180392d0ec351e337c9e06c0543b4ae5e849 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/pa/pa.md6
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);