From 4e75439e8cd423b97d428ee580dd20d981d61be4 Mon Sep 17 00:00:00 2001 From: danglin Date: Mon, 24 Oct 2005 02:38:25 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105838 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/pa/pa-protos.h | 1 + gcc/config/pa/pa.c | 18 ++++++++---------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54db2b25b4e..d27482234ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-10-23 John David Anglin + + * 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 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Explain diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h index 3bc4c309585..7422cd9d378 100644 --- a/gcc/config/pa/pa-protos.h +++ b/gcc/config/pa/pa-protos.h @@ -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 eq_neq_comparison_operator (rtx, enum machine_mode); extern int insn_refs_are_delayed (rtx); +extern rtx get_deferred_plabel (rtx); #endif /* RTX_CODE */ /* Prototype function used in macro CONST_OK_FOR_LETTER_P. */ diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index d7ce82bbe29..adeabed8cba 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -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 void copy_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_space (int) ATTRIBUTE_UNUSED; static inline void pa_file_start_file (int) ATTRIBUTE_UNUSED; @@ -5224,8 +5223,11 @@ pa_hpux64_hpas_file_start (void) } #undef aputs -static struct deferred_plabel * -get_plabel (rtx symbol) +/* Search the deferred plabel list for SYMBOL and return its internal + 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); size_t i; @@ -5263,7 +5265,7 @@ get_plabel (rtx symbol) mark_referenced (id); } - return &deferred_plabels[i]; + return deferred_plabels[i].internal_label; } static void @@ -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 long pc-relative sequence described in the 64-bit runtime architecture. So, we use a slightly longer indirect call. */ - struct deferred_plabel *p = get_plabel (call_dest); - - xoperands[0] = p->internal_label; + xoperands[0] = get_deferred_plabel (call_dest); xoperands[1] = gen_label_rtx (); /* 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) essentially an inline implementation of $$dyncall. We don't actually try to call $$dyncall as this is as difficult as calling the function itself. */ - struct deferred_plabel *p = get_plabel (call_dest); - - xoperands[0] = p->internal_label; + xoperands[0] = get_deferred_plabel (call_dest); xoperands[1] = gen_label_rtx (); /* Since the call is indirect, FP arguments in registers -- 2.11.4.GIT