]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
pa.md (exception_receiver, [...]): Add blockage on TARGET_64BIT before pic register...
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>
Mon, 9 Sep 2002 21:34:48 +0000 (21:34 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Mon, 9 Sep 2002 21:34:48 +0000 (21:34 +0000)
* pa.md (exception_receiver, builtin_setjmp_receiver): Add blockage
on TARGET_64BIT before pic register restore.

From-SVN: r56985

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

index 6d167bc08920776219ef0016b9d9c9f5a73daa70..6df6abd98d62e372f74384431229d09b1cf4ea0d 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-09  John David Anglin  <dave@hiauly1.hia.nrc.ca>
+
+       * pa.md (exception_receiver, builtin_setjmp_receiver): Add blockage
+       on TARGET_64BIT before pic register restore.
+
 2002-09-09  David Edelsohn  <edelsohn@gnu.org>
 
        * doc/tm.texi (TARGET_HAVE_SRODATA_SECTION): New description.
index 29fe1c874e63f8c5ab3fcf66414bfa9c950ec6de..5da3806eec7219c9e965e74b8cd6a03b9ea3d7ce 100644 (file)
   "flag_pic"
   "
 {
+  /* On the 64-bit port, we need a blockage because there is
+     confusion regarding the dependence of the restore on the
+     frame pointer.  As a result, the frame pointer and pic
+     register restores sometimes are interchanged erroneously.  */
+  if (TARGET_64BIT)
+    emit_insn (gen_blockage ());
   /* Restore the PIC register using hppa_pic_save_rtx ().  The
      PIC register is not saved in the frame in 64-bit ABI.  */
   emit_move_insn (pic_offset_table_rtx, hppa_pic_save_rtx ());
   "flag_pic"
   "
 {
+  if (TARGET_64BIT)
+    emit_insn (gen_blockage ());
   /* Restore the PIC register.  Hopefully, this will always be from
      a stack slot.  The only registers that are valid after a
      builtin_longjmp are the stack and frame pointers.  */