diff options
author | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-03-30 16:25:06 +0000 |
---|---|---|
committer | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-03-30 16:25:06 +0000 |
commit | cdc5a7d9aca2a3abe98fb1d7f14e18debabe9bcf (patch) | |
tree | a6d93d32728e9765930d5770cf3d2ab2ae1af32c | |
parent | 78365a39870f28ae1f76c823231a92d6280c74c3 (diff) |
Respect transparent alias chains of assembler names (PR target/69917)
Backport from mainline
2016-03-23 Ilya Enkovich <enkovich.gnu@gmail.com>
PR target/69917
* config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Follow
transparent alias chain for decl assembler name.
* config/sol2.c (solaris_assemble_visibility): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@234578 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/sol2.h | 5 | ||||
-rw-r--r-- | gcc/config/sol2.c | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb553379408..bdfcd45cc57 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-03-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + Backport from mainline + 2016-03-23 Ilya Enkovich <enkovich.gnu@gmail.com> + + PR target/69917 + * config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Follow + transparent alias chain for decl assembler name. + * config/sol2.c (solaris_assemble_visibility): Likewise. + 2016-03-30 Vladimir Makarov <vmakarov@redhat.com> Backported from the mainline diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index f213388413a..0ed4b68c15b 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -137,8 +137,9 @@ along with GCC; see the file COPYING3. If not see /* The Solaris assembler wants a .local for non-exported aliases. */ #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \ do { \ - const char *declname = \ - IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \ + tree id = DECL_ASSEMBLER_NAME (DECL); \ + ultimate_transparent_alias_target (&id); \ + const char *declname = IDENTIFIER_POINTER (id); \ ASM_OUTPUT_DEF ((FILE), declname, \ IDENTIFIER_POINTER (TARGET)); \ if (! TREE_PUBLIC (DECL)) \ diff --git a/gcc/config/sol2.c b/gcc/config/sol2.c index d256776a980..cdc133bab0c 100644 --- a/gcc/config/sol2.c +++ b/gcc/config/sol2.c @@ -155,8 +155,11 @@ solaris_assemble_visibility (tree decl, int vis ATTRIBUTE_UNUSED) }; const char *name, *type; + tree id = DECL_ASSEMBLER_NAME (decl); - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); + while (IDENTIFIER_TRANSPARENT_ALIAS (id)) + id = TREE_CHAIN (id); + name = IDENTIFIER_POINTER (id); type = visibility_types[vis]; fprintf (asm_out_file, "\t.%s\t", type); |