aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/alpha
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-12-16 15:50:11 +0000
committerTristan Gingold <gingold@gcc.gnu.org>2011-12-16 15:50:11 +0000
commit39420b1a23af0b59acb034b1091842547ce4cea6 (patch)
tree82392caacae913bf7da61a9a99721d902f81a4c6 /gcc/config/alpha
parentc675ab909a8d6babc357c115f1bd24505fb91aab (diff)
downloadgcc-39420b1a23af0b59acb034b1091842547ce4cea6.zip
gcc-39420b1a23af0b59acb034b1091842547ce4cea6.tar.gz
gcc-39420b1a23af0b59acb034b1091842547ce4cea6.tar.bz2
alpha.c (alpha_use_linkage): Follow transparent alias.
2011-12-16 Tristan Gingold <gingold@adacore.com> * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias. (alpha_write_one_linkage): Use assemble_name to emit linkage name. From-SVN: r182407
Diffstat (limited to 'gcc/config/alpha')
-rw-r--r--gcc/config/alpha/alpha.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index e970227..9048aa4 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -9541,10 +9541,20 @@ alpha_use_linkage (rtx func, bool lflag, bool rflag)
{
size_t buf_len;
char *linksym;
+ tree id;
if (name[0] == '*')
name++;
+ /* Follow transparent alias, as this is used for CRTL translations. */
+ id = maybe_get_identifier (name);
+ if (id)
+ {
+ while (IDENTIFIER_TRANSPARENT_ALIAS (id))
+ id = TREE_CHAIN (id);
+ name = IDENTIFIER_POINTER (id);
+ }
+
buf_len = strlen (name) + 8 + 9;
linksym = (char *) alloca (buf_len);
snprintf (linksym, buf_len, "$%d..%s..lk", cfun->funcdef_no, name);
@@ -9577,7 +9587,7 @@ alpha_write_one_linkage (splay_tree_node node, void *data)
if (link->rkind == KIND_CODEADDR)
{
/* External and used, request code address. */
- fprintf (stream, "\t.code_address %s\n", name);
+ fprintf (stream, "\t.code_address ");
}
else
{
@@ -9586,14 +9596,16 @@ alpha_write_one_linkage (splay_tree_node node, void *data)
{
/* Locally defined, build linkage pair. */
fprintf (stream, "\t.quad %s..en\n", name);
- fprintf (stream, "\t.quad %s\n", name);
+ fprintf (stream, "\t.quad ");
}
else
{
/* External, request linkage pair. */
- fprintf (stream, "\t.linkage %s\n", name);
+ fprintf (stream, "\t.linkage ");
}
}
+ assemble_name (stream, name);
+ fputs ("\n", stream);
return 0;
}