summaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/pa/pa.c')
-rw-r--r--gcc/config/pa/pa.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index d12c1be910a..41e5dc05c78 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -117,6 +117,7 @@ static int pa_issue_rate PARAMS ((void));
static void pa_select_section PARAMS ((tree, int, unsigned HOST_WIDE_INT))
ATTRIBUTE_UNUSED;
static void pa_encode_section_info PARAMS ((tree, int));
+static const char *pa_strip_name_encoding PARAMS ((const char *));
/* Save the operands last given to a compare for use when we
generate a scc or bcc insn. */
@@ -188,6 +189,8 @@ int n_deferred_plabels = 0;
#undef TARGET_ENCODE_SECTION_INFO
#define TARGET_ENCODE_SECTION_INFO pa_encode_section_info
+#undef TARGET_STRIP_NAME_ENCODING
+#define TARGET_STRIP_NAME_ENCODING pa_strip_name_encoding
struct gcc_target targetm = TARGET_INITIALIZER;
@@ -6285,7 +6288,7 @@ output_call (insn, call_dest, sibcall)
/* Gross. We have just implicitly taken the address of this
function, mark it as such. */
- STRIP_NAME_ENCODING (real_name, name);
+ real_name = (*targetm.strip_name_encoding) (name);
TREE_SYMBOL_REFERENCED (get_identifier (real_name)) = 1;
}
@@ -6460,6 +6463,15 @@ pa_encode_section_info (decl, first)
}
}
+/* This is sort of inverse to pa_encode_section_info. */
+
+static const char *
+pa_strip_name_encoding (str)
+ const char *str;
+{
+ return str + (*str == '*' || *str == '@');
+}
+
int
function_label_operand (op, mode)
rtx op;