OSDN Git Service

* pa.c (output_call): Relocate non-jump insns in the delay slot of long
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Jan 2009 04:00:28 +0000 (04:00 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Jan 2009 04:00:28 +0000 (04:00 +0000)
absolute calls when generating PA 2.0 code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143113 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/pa/pa.c

index 0fda2b4..f61a382 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * pa.c (output_call): Relocate non-jump insns in the delay slot of long
+       absolute calls when generating PA 2.0 code.
+
 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/38583
index 2182086..960814f 100644 (file)
@@ -7547,7 +7547,9 @@ output_call (rtx insn, rtx call_dest, int sibcall)
          if (seq_length != 0
              && GET_CODE (NEXT_INSN (insn)) != JUMP_INSN
              && !sibcall
-             && (!TARGET_PA_20 || indirect_call))
+             && (!TARGET_PA_20
+                 || indirect_call
+                 || ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic)))
            {
              /* A non-jump insn in the delay slot.  By definition we can
                 emit this insn before the call (and in fact before argument