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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168763
138bc75d-0d04-0410-961f-
82ee72b054a4
+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.
+
2011-01-13 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/47251
#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
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 *);
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 ()
+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-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
* cp-tree.h (begin_for_scope): New prototype.
/* Gives the visibility specification for a class type. */
#define CLASSTYPE_VISIBILITY(TYPE) \
- DECL_VISIBILITY (TYPE_NAME (TYPE))
+ DECL_VISIBILITY (TYPE_MAIN_DECL (TYPE))
#define CLASSTYPE_VISIBILITY_SPECIFIED(TYPE) \
- DECL_VISIBILITY_SPECIFIED (TYPE_NAME (TYPE))
+ DECL_VISIBILITY_SPECIFIED (TYPE_MAIN_DECL (TYPE))
typedef struct GTY (()) tree_pair_s {
tree purpose;
tree underlying_type = TREE_TYPE (DECL_NAME (decl));
int underlying_vis = type_visibility (underlying_type);
if (underlying_vis == VISIBILITY_ANON
- || CLASSTYPE_VISIBILITY_SPECIFIED (underlying_type))
+ || (CLASS_TYPE_P (underlying_type)
+ && CLASSTYPE_VISIBILITY_SPECIFIED (underlying_type)))
constrain_visibility (decl, underlying_vis);
else
DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT;
+2011-01-13 Kai Tietz <kai.tietz@onevision.com>
+
+ PR c++/47213
+ * g++.dg/ext/pr47213.C: New.
+
2011-01-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gfortran.dg/cray_pointers_2.f90: Use dg-timeout-factor 4.
--- /dev/null
+// { dg-do compile }
+// { dg-options "-fvisibility-ms-compat" }
+#include <typeinfo>
+
+template < typename T > void
+bar ()
+{
+ typeid (T);
+}
+
+void
+foo ()
+{
+ bar < int () > ();
+}