re PR target/90963 (FAIL: gcc.c-torture/execute/built-in-setjmp.c execution test)
authorWilco Dijkstra <wdijkstr@arm.com>
Mon, 1 Jul 2019 16:55:42 +0000 (16:55 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Mon, 1 Jul 2019 16:55:42 +0000 (16:55 +0000)
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

gcc/ChangeLog
gcc/config/pa/pa.md

index 5072232ae41df6b7af657c5290370fe9ad95fb06..caee23e7f785ad504c47ce7a90783c3835b1883c 100644 (file)
@@ -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
index 809a7b7853cf3b27625e2cd917bcb841060e0d57..3867a55bca8b22742fcc7e7d9aa107dc54e6fb02 100644 (file)
@@ -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);