diff options
author | Kai Tietz <kai.tietz@onevision.com> | 2011-01-13 20:01:57 +0000 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2011-01-13 21:01:57 +0100 |
commit | a2b63a20016d041e501d6c6541d059befbb244b9 (patch) | |
tree | 278e301a60748bc6875711d5bc89ab30014083bf /gcc/config | |
parent | 3752f75a6d54bf6a19a29da309f5433f8889f69f (diff) | |
download | gcc-a2b63a20016d041e501d6c6541d059befbb244b9.zip gcc-a2b63a20016d041e501d6c6541d059befbb244b9.tar.gz gcc-a2b63a20016d041e501d6c6541d059befbb244b9.tar.bz2 |
re PR c++/47213 (ICE: SIGSEGV in determine_visibility (decl2.c:2076) with -fvisibility-ms-compat)
2011-01-13 Kai Tietz <kai.tietz@onevision.com>
PR c++/47213
* g++.dg/ext/pr47213.C: New.
2011-01-13 Kai Tietz <kai.tietz@onevision.com>
PR c++/47213
* cp-tree.h (CLASSTYPE_VISIBILITY): Use
TYPE_MAIN_DECL instead of TYPE_NAME.
(CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
* decl2.c (determine_visibility): Add check
of CLASS_TYPE_P for underlying_type.
2011-01-13 Kai Tietz <kai.tietz@onevision.com>
PR c++/47213
* config/i386/cygming.h (TARGET_ASM_ASSEMBLE_VISIBILITY):
PE specific hook.
* config/i386/i386-protos.h (i386_pe_assemble_visibility):
New function prototype.
* config/i386/winnt.c (i386_pe_assemble_visibility):
Warn only if attribute was specified by user.
From-SVN: r168763
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/cygming.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/i386-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/i386/winnt.c | 16 |
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index be97d80..9c32dda 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -465,6 +465,9 @@ do { \ #define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION i386_pe_adjust_class_at_definition #define TARGET_MANGLE_DECL_ASSEMBLER_NAME i386_pe_mangle_decl_assembler_name +#undef TARGET_ASM_ASSEMBLE_VISIBILITY +#define TARGET_ASM_ASSEMBLE_VISIBILITY i386_pe_assemble_visibility + /* Static stack checking is supported by means of probes. */ #define STACK_CHECK_STATIC_BUILTIN 1 diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index 1180e8c..4f90b50 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -225,6 +225,7 @@ extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree, extern void i386_pe_file_end (void); extern void i386_pe_start_function (FILE *, const char *, tree); extern void i386_pe_end_function (FILE *, const char *, tree); +extern void i386_pe_assemble_visibility (tree, int); extern tree i386_pe_mangle_decl_assembler_name (tree, tree); extern tree i386_pe_mangle_assembler_name (const char *); diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c index c413bb0..169832f 100644 --- a/gcc/config/i386/winnt.c +++ b/gcc/config/i386/winnt.c @@ -232,6 +232,22 @@ i386_pe_maybe_mangle_decl_assembler_name (tree decl, tree id) return new_id; } +/* Emit an assembler directive to set symbol for DECL visibility to + the visibility type VIS, which must not be VISIBILITY_DEFAULT. + As for PE there is no hidden support in gas, we just warn for + user-specified visibility attributes. */ + +void +i386_pe_assemble_visibility (tree decl, + int vis ATTRIBUTE_UNUSED) +{ + if (!decl + || !lookup_attribute ("visibility", DECL_ATTRIBUTES (decl))) + return; + warning (OPT_Wattributes, "visibility attribute not supported " + "in this configuration; ignored"); +} + /* This is used as a target hook to modify the DECL_ASSEMBLER_NAME in the language-independent default hook langhooks,c:lhd_set_decl_assembler_name () |