Commit 7aaf280e by John David Anglin Committed by John David Anglin

pa-protos.h (get_deferred_plabel): New prototype.

	* pa-protos.h (get_deferred_plabel): New prototype.
	* pa.c (get_plabel): Rename to get_deferred_plabel.  Return plabel.
	Make global.
	(output_call): Adjust calls.

From-SVN: r105838
parent 4fed8f8f
2005-10-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa-protos.h (get_deferred_plabel): New prototype.
* pa.c (get_plabel): Rename to get_deferred_plabel. Return plabel.
Make global.
(output_call): Adjust calls.
2005-10-24 Alan Modra <amodra@bigpond.net.au> 2005-10-24 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Explain * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Explain
......
...@@ -132,6 +132,7 @@ extern enum direction function_arg_padding (enum machine_mode, tree); ...@@ -132,6 +132,7 @@ extern enum direction function_arg_padding (enum machine_mode, tree);
extern int non_hard_reg_operand (rtx, enum machine_mode); extern int non_hard_reg_operand (rtx, enum machine_mode);
extern int eq_neq_comparison_operator (rtx, enum machine_mode); extern int eq_neq_comparison_operator (rtx, enum machine_mode);
extern int insn_refs_are_delayed (rtx); extern int insn_refs_are_delayed (rtx);
extern rtx get_deferred_plabel (rtx);
#endif /* RTX_CODE */ #endif /* RTX_CODE */
/* Prototype function used in macro CONST_OK_FOR_LETTER_P. */ /* Prototype function used in macro CONST_OK_FOR_LETTER_P. */
......
...@@ -127,7 +127,6 @@ static bool pa_scalar_mode_supported_p (enum machine_mode); ...@@ -127,7 +127,6 @@ static bool pa_scalar_mode_supported_p (enum machine_mode);
static bool pa_commutative_p (rtx x, int outer_code); static bool pa_commutative_p (rtx x, int outer_code);
static void copy_fp_args (rtx) ATTRIBUTE_UNUSED; static void copy_fp_args (rtx) ATTRIBUTE_UNUSED;
static int length_fp_args (rtx) ATTRIBUTE_UNUSED; static int length_fp_args (rtx) ATTRIBUTE_UNUSED;
static struct deferred_plabel *get_plabel (rtx) ATTRIBUTE_UNUSED;
static inline void pa_file_start_level (void) ATTRIBUTE_UNUSED; static inline void pa_file_start_level (void) ATTRIBUTE_UNUSED;
static inline void pa_file_start_space (int) ATTRIBUTE_UNUSED; static inline void pa_file_start_space (int) ATTRIBUTE_UNUSED;
static inline void pa_file_start_file (int) ATTRIBUTE_UNUSED; static inline void pa_file_start_file (int) ATTRIBUTE_UNUSED;
...@@ -5224,8 +5223,11 @@ pa_hpux64_hpas_file_start (void) ...@@ -5224,8 +5223,11 @@ pa_hpux64_hpas_file_start (void)
} }
#undef aputs #undef aputs
static struct deferred_plabel * /* Search the deferred plabel list for SYMBOL and return its internal
get_plabel (rtx symbol) label. If an entry for SYMBOL is not found, a new entry is created. */
rtx
get_deferred_plabel (rtx symbol)
{ {
const char *fname = XSTR (symbol, 0); const char *fname = XSTR (symbol, 0);
size_t i; size_t i;
...@@ -5263,7 +5265,7 @@ get_plabel (rtx symbol) ...@@ -5263,7 +5265,7 @@ get_plabel (rtx symbol)
mark_referenced (id); mark_referenced (id);
} }
return &deferred_plabels[i]; return deferred_plabels[i].internal_label;
} }
static void static void
...@@ -7103,9 +7105,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) ...@@ -7103,9 +7105,7 @@ output_call (rtx insn, rtx call_dest, int sibcall)
/* ??? As far as I can tell, the HP linker doesn't support the /* ??? As far as I can tell, the HP linker doesn't support the
long pc-relative sequence described in the 64-bit runtime long pc-relative sequence described in the 64-bit runtime
architecture. So, we use a slightly longer indirect call. */ architecture. So, we use a slightly longer indirect call. */
struct deferred_plabel *p = get_plabel (call_dest); xoperands[0] = get_deferred_plabel (call_dest);
xoperands[0] = p->internal_label;
xoperands[1] = gen_label_rtx (); xoperands[1] = gen_label_rtx ();
/* If this isn't a sibcall, we put the load of %r27 into the /* If this isn't a sibcall, we put the load of %r27 into the
...@@ -7232,9 +7232,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) ...@@ -7232,9 +7232,7 @@ output_call (rtx insn, rtx call_dest, int sibcall)
essentially an inline implementation of $$dyncall. essentially an inline implementation of $$dyncall.
We don't actually try to call $$dyncall as this is We don't actually try to call $$dyncall as this is
as difficult as calling the function itself. */ as difficult as calling the function itself. */
struct deferred_plabel *p = get_plabel (call_dest); xoperands[0] = get_deferred_plabel (call_dest);
xoperands[0] = p->internal_label;
xoperands[1] = gen_label_rtx (); xoperands[1] = gen_label_rtx ();
/* Since the call is indirect, FP arguments in registers /* Since the call is indirect, FP arguments in registers
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment