diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b664cdf..5d00c15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-03-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + * pa.c (attr_length_call): Partially revert change of 2007-03-09. + (output_call): Likewise. + 2007-03-16 Richard Sandiford <richard@codesourcery.com> * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define. diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index c696520..ce38cf1 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -7273,7 +7273,7 @@ attr_length_call (rtx insn, int sibcall) length += 12; /* long pc-relative branch sequence. */ - else if ((TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call)) + else if ((TARGET_SOM && TARGET_LONG_PIC_SDIFF_CALL) || (TARGET_64BIT && !TARGET_GAS) || (TARGET_GAS && !TARGET_SOM && (TARGET_LONG_PIC_PCREL_CALL || local_call))) @@ -7386,7 +7386,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) of increasing length and complexity. In most cases, they don't allow an instruction in the delay slot. */ if (!((TARGET_LONG_ABS_CALL || local_call) && !flag_pic) - && !(TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call)) + && !(TARGET_SOM && TARGET_LONG_PIC_SDIFF_CALL) && !(TARGET_GAS && !TARGET_SOM && (TARGET_LONG_PIC_PCREL_CALL || local_call)) && !TARGET_64BIT) @@ -7434,7 +7434,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) } else { - if ((TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call)) + if ((TARGET_SOM && TARGET_LONG_PIC_SDIFF_CALL) || (TARGET_64BIT && !TARGET_GAS)) { /* The HP assembler and linker can handle relocations |