diff options
author | Ilya Enkovich <enkovich.gnu@gmail.com> | 2016-03-23 10:55:37 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2016-03-23 10:55:37 +0000 |
commit | b01e88e56b3ad6bf76c18500035bc4ed8ef036cd (patch) | |
tree | b39ec88a3b2e9242d7504ef78712e0c0319c3dfc | |
parent | 4af0f474d71bd0923a236a025faf071c03eb6353 (diff) | |
download | gcc-b01e88e56b3ad6bf76c18500035bc4ed8ef036cd.zip gcc-b01e88e56b3ad6bf76c18500035bc4ed8ef036cd.tar.gz gcc-b01e88e56b3ad6bf76c18500035bc4ed8ef036cd.tar.bz2 |
re PR target/69917 (gcc.target/i386/chkp-hidden-def.c FAILs)
gcc/
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.
From-SVN: r234423
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/sol2.h | 5 | ||||
-rw-r--r-- | gcc/config/sol2.c | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f425113..21366dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm1020e.md (1020call_op): Reduce reservation diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index e56e554..368c2d2 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 560a07b..47b41fd 100644 --- a/gcc/config/sol2.c +++ b/gcc/config/sol2.c @@ -142,8 +142,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); |