[committed] Fix longjmp expander on hppa

Message ID b8bd6194-35bb-5829-1f2b-43e436e9072a@bell.net
State New
Headers show
Series
  • [committed] Fix longjmp expander on hppa
Related show

Commit Message

John David Anglin July 1, 2019, 5:06 p.m.
With the recent update to setjmp, we now need to restore the hard frame pointer
directly from the saved frame pointer.  We don't need to adjust for the offset between
the virtual_stack_vars_rtx and the hard frame pointer.

Tested on hppa-unknwon-linux-gnu, hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11.

Committed to trunk.

Dave
-- 
John David Anglin  dave.anglin@bell.net

2019-07-01  Wilco Dijkstra  <wdijkstr@arm.com>
	    John David Anglin  <danglin@gcc.gnu.org>setjmp

	PR target/90963
	* config/pa/pa.md (builtin_longjmp): Restore hard_frame_pointer_rtx
	using saved frame pointer.

Patch

Index: config/pa/pa.md
===================================================================
--- config/pa/pa.md	(revision 272852)
+++ config/pa/pa.md	(working copy)
@@ -8700,9 +8700,7 @@ 
      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 @@ 
   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);