diff options
author | Tristan Gingold <gingold@adacore.com> | 2011-12-16 15:50:11 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@gcc.gnu.org> | 2011-12-16 15:50:11 +0000 |
commit | 39420b1a23af0b59acb034b1091842547ce4cea6 (patch) | |
tree | 82392caacae913bf7da61a9a99721d902f81a4c6 /gcc/config | |
parent | c675ab909a8d6babc357c115f1bd24505fb91aab (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/config/alpha/alpha.c | 18 |
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; } |