pa.c (attr_length_call): Revise condition for long pc-relative branch.
* pa.c (attr_length_call): Revise condition for long pc-relative branch. (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local calls on the SOM target. Don't use "LONG_PIC_PCREL" call sequence on SOM target. From-SVN: r122784
This commit is contained in:
parent
48137d59c3
commit
751d985534
@ -1,3 +1,10 @@
|
||||
2007-03-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* pa.c (attr_length_call): Revise condition for long pc-relative branch.
|
||||
(output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
|
||||
calls on the SOM target. Don't use "LONG_PIC_PCREL" call sequence on
|
||||
SOM target.
|
||||
|
||||
2007-03-09 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* gcc.c: Document %{, in big comment at top.
|
||||
|
@ -7273,9 +7273,10 @@ attr_length_call (rtx insn, int sibcall)
|
||||
length += 12;
|
||||
|
||||
/* long pc-relative branch sequence. */
|
||||
else if ((TARGET_SOM && TARGET_LONG_PIC_SDIFF_CALL)
|
||||
else if ((TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call))
|
||||
|| (TARGET_64BIT && !TARGET_GAS)
|
||||
|| (TARGET_GAS && (TARGET_LONG_PIC_PCREL_CALL || local_call)))
|
||||
|| (TARGET_GAS && !TARGET_SOM
|
||||
&& (TARGET_LONG_PIC_PCREL_CALL || local_call)))
|
||||
{
|
||||
length += 20;
|
||||
|
||||
@ -7385,8 +7386,9 @@ 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)
|
||||
&& !(TARGET_GAS && (TARGET_LONG_PIC_PCREL_CALL || local_call))
|
||||
&& !(TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call))
|
||||
&& !(TARGET_GAS && !TARGET_SOM
|
||||
&& (TARGET_LONG_PIC_PCREL_CALL || local_call))
|
||||
&& !TARGET_64BIT)
|
||||
indirect_call = 1;
|
||||
|
||||
@ -7432,7 +7434,7 @@ output_call (rtx insn, rtx call_dest, int sibcall)
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((TARGET_SOM && TARGET_LONG_PIC_SDIFF_CALL)
|
||||
if ((TARGET_SOM && (TARGET_LONG_PIC_SDIFF_CALL || local_call))
|
||||
|| (TARGET_64BIT && !TARGET_GAS))
|
||||
{
|
||||
/* The HP assembler and linker can handle relocations
|
||||
@ -7446,7 +7448,8 @@ output_call (rtx insn, rtx call_dest, int sibcall)
|
||||
CODE_LABEL_NUMBER (xoperands[1]));
|
||||
output_asm_insn ("ldo R'%0-%l1(%%r1),%%r1", xoperands);
|
||||
}
|
||||
else if (TARGET_GAS && (TARGET_LONG_PIC_PCREL_CALL || local_call))
|
||||
else if (TARGET_GAS && !TARGET_SOM
|
||||
&& (TARGET_LONG_PIC_PCREL_CALL || local_call))
|
||||
{
|
||||
/* GAS currently can't generate the relocations that
|
||||
are needed for the SOM linker under HP-UX using this
|
||||
|
Loading…
Reference in New Issue
Block a user