pa.h (MAX_PCREL17F_OFFSET): Define.
* config/pa/pa.h (MAX_PCREL17F_OFFSET): Define. * config/pa/pa.c (pa_attr_length_millicode_call): Use MAX_PCREL17F_OFFSET instead of fixed offset. (pa_attr_length_call): Likewise. (pa_attr_length_indirect_call): Likewise. From-SVN: r188151
This commit is contained in:
parent
aba92f5fe0
commit
a43434ffab
|
@ -1,3 +1,11 @@
|
||||||
|
2012-06-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
|
* config/pa/pa.h (MAX_PCREL17F_OFFSET): Define.
|
||||||
|
* config/pa/pa.c (pa_attr_length_millicode_call): Use
|
||||||
|
MAX_PCREL17F_OFFSET instead of fixed offset.
|
||||||
|
(pa_attr_length_call): Likewise.
|
||||||
|
(pa_attr_length_indirect_call): Likewise.
|
||||||
|
|
||||||
2012-06-03 Oleg Endo <olegendo@gcc.gnu.org>
|
2012-06-03 Oleg Endo <olegendo@gcc.gnu.org>
|
||||||
|
|
||||||
PR target/53512
|
PR target/53512
|
||||||
|
|
|
@ -7457,7 +7457,7 @@ pa_attr_length_millicode_call (rtx insn)
|
||||||
return 24;
|
return 24;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!TARGET_LONG_CALLS && distance < 240000)
|
if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET)
|
||||||
return 8;
|
return 8;
|
||||||
|
|
||||||
if (TARGET_LONG_ABS_CALL && !flag_pic)
|
if (TARGET_LONG_ABS_CALL && !flag_pic)
|
||||||
|
@ -7670,7 +7670,7 @@ pa_attr_length_call (rtx insn, int sibcall)
|
||||||
/* pc-relative branch. */
|
/* pc-relative branch. */
|
||||||
if (!TARGET_LONG_CALLS
|
if (!TARGET_LONG_CALLS
|
||||||
&& ((TARGET_PA_20 && !sibcall && distance < 7600000)
|
&& ((TARGET_PA_20 && !sibcall && distance < 7600000)
|
||||||
|| distance < 240000))
|
|| distance < MAX_PCREL17F_OFFSET))
|
||||||
length += 8;
|
length += 8;
|
||||||
|
|
||||||
/* 64-bit plabel sequence. */
|
/* 64-bit plabel sequence. */
|
||||||
|
@ -8029,7 +8029,7 @@ pa_attr_length_indirect_call (rtx insn)
|
||||||
if (TARGET_FAST_INDIRECT_CALLS
|
if (TARGET_FAST_INDIRECT_CALLS
|
||||||
|| (!TARGET_PORTABLE_RUNTIME
|
|| (!TARGET_PORTABLE_RUNTIME
|
||||||
&& ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
|
&& ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
|
||||||
|| distance < 240000)))
|
|| distance < MAX_PCREL17F_OFFSET)))
|
||||||
return 8;
|
return 8;
|
||||||
|
|
||||||
if (flag_pic)
|
if (flag_pic)
|
||||||
|
|
|
@ -1519,3 +1519,12 @@ do { \
|
||||||
#undef TARGET_HAVE_TLS
|
#undef TARGET_HAVE_TLS
|
||||||
#define TARGET_HAVE_TLS true
|
#define TARGET_HAVE_TLS true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The maximum offset in bytes for a PA 1.X pc-relative call to the
|
||||||
|
head of the preceding stub table. The selected offsets have been
|
||||||
|
chosen so that approximately one call stub is allocated for every
|
||||||
|
86.7 instructions. A long branch stub is two instructions when
|
||||||
|
not generating PIC code. For HP-UX and ELF targets, PIC stubs are
|
||||||
|
seven and four instructions, respectively. */
|
||||||
|
#define MAX_PCREL17F_OFFSET \
|
||||||
|
(flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
|
||||||
|
|
Loading…
Reference in New Issue