aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2016-03-30 16:25:06 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2016-03-30 16:25:06 +0000
commitcdc5a7d9aca2a3abe98fb1d7f14e18debabe9bcf (patch)
treea6d93d32728e9765930d5770cf3d2ab2ae1af32c
parent78365a39870f28ae1f76c823231a92d6280c74c3 (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/ChangeLog10
-rw-r--r--gcc/config/i386/sol2.h5
-rw-r--r--gcc/config/sol2.c5
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);