mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
pa.c (override_options): Treat TARGET_FAST_INDIRECT_CALLS just like TARGET_NO_SPACE_REGS.
* pa/pa.c (override_options): Treat TARGET_FAST_INDIRECT_CALLS
just like TARGET_NO_SPACE_REGS.
(output_millicode_call): Likewise.
* pa/pa.h (TARGET_FAST_INDIRECT_CALLS): Define.
(TARGET_SWITCHES): Add "fast-indirect-calls".
* pa/pa.md: Treat TARGET_FAST_INDIRECT_CALLS just like
TARGET_NO_SPACE_REGS in various call/millicode call patterns.
From-SVN: r12640
This commit is contained in:
@@ -116,7 +116,7 @@ override_options ()
|
||||
warning ("PIC code generation is not supported in the portable runtime model\n");
|
||||
}
|
||||
|
||||
if (flag_pic && TARGET_NO_SPACE_REGS)
|
||||
if (flag_pic && (TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS))
|
||||
{
|
||||
warning ("PIC code generation is not compatable with fast indirect calls\n");
|
||||
}
|
||||
@@ -4550,7 +4550,7 @@ output_millicode_call (insn, call_dest)
|
||||
|
||||
/* If we're allowed to use be/ble instructions, then this is the
|
||||
best sequence to use for a long millicode call. */
|
||||
if (TARGET_NO_SPACE_REGS
|
||||
if (TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS
|
||||
|| ! (flag_pic || TARGET_PORTABLE_RUNTIME))
|
||||
{
|
||||
xoperands[0] = call_dest;
|
||||
|
||||
@@ -109,6 +109,9 @@ extern int target_flags;
|
||||
in shared libraries on hpux10. */
|
||||
#define TARGET_LONG_LOAD_STORE (target_flags & 512)
|
||||
|
||||
/* Use a faster sequence for indirect calls. */
|
||||
#define TARGET_FAST_INDIRECT_CALLS (target_flags & 1024)
|
||||
|
||||
/* Macro to define tables used to set the flags.
|
||||
This is a list in braces of pairs in braces,
|
||||
each pair being { "NAME", VALUE }
|
||||
@@ -138,6 +141,8 @@ extern int target_flags;
|
||||
{"no-soft-float", -256}, \
|
||||
{"long-load-store", 512}, \
|
||||
{"no-long-load-store", -512},\
|
||||
{"fast-indirect-calls", 1024},\
|
||||
{"no-fast-indirect-calls", -1024},\
|
||||
{"linker-opt", 0}, \
|
||||
{ "", TARGET_DEFAULT | TARGET_CPU_DEFAULT}}
|
||||
|
||||
|
||||
@@ -3123,7 +3123,7 @@
|
||||
(const_int 4)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -3177,7 +3177,7 @@
|
||||
(const_int 4)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -3230,7 +3230,7 @@
|
||||
(const_int 4)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -3280,7 +3280,7 @@
|
||||
(const_int 4)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -3330,7 +3330,7 @@
|
||||
(const_int 4)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -4145,7 +4145,7 @@
|
||||
rtx xoperands[2];
|
||||
|
||||
/* First the special case for kernels, level 0 systems, etc. */
|
||||
if (TARGET_NO_SPACE_REGS)
|
||||
if (TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS)
|
||||
return \"ble 0(%%sr4,%%r22)\;copy %%r31,%%r2\";
|
||||
|
||||
/* Now the normal case -- we can reach $$dyncall directly or
|
||||
@@ -4181,7 +4181,7 @@
|
||||
(set (attr "length")
|
||||
(cond [
|
||||
;; First NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -4305,7 +4305,7 @@
|
||||
rtx xoperands[2];
|
||||
|
||||
/* First the special case for kernels, level 0 systems, etc. */
|
||||
if (TARGET_NO_SPACE_REGS)
|
||||
if (TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS)
|
||||
return \"ble 0(%%sr4,%%r22)\;copy %%r31,%%r2\";
|
||||
|
||||
/* Now the normal case -- we can reach $$dyncall directly or
|
||||
@@ -4341,7 +4341,7 @@
|
||||
(set (attr "length")
|
||||
(cond [
|
||||
;; First NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 8)
|
||||
|
||||
@@ -5214,7 +5214,7 @@
|
||||
(const_int 28)
|
||||
|
||||
;; NO_SPACE_REGS
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS")
|
||||
(ne (symbol_ref "TARGET_NO_SPACE_REGS || TARGET_FAST_INDIRECT_CALLS")
|
||||
(const_int 0))
|
||||
(const_int 32)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user