re PR c++/28558 (Trouble with __attribute__ and non-PODs)

PR c++/28558
        * cp/decl.c (groktypename): Ignore attributes applied to class type.
        * testsuite/g++.dg/ext/attrib28.C: New test.

From-SVN: r127859
This commit is contained in:
Jason Merrill 2007-08-28 09:57:09 -04:00 committed by Jason Merrill
parent 1c445f037f
commit c206a69701
4 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2007-08-27 Jason Merrill <jason@redhat.com>
PR c++/28558
* decl.c (groktypename): Ignore attributes applied to class type.
2007-08-28 Richard Guenther <rguenther@suse.de>
* decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.

View File

@ -3877,7 +3877,13 @@ groktypename (cp_decl_specifier_seq *type_specifiers,
type_specifiers->attributes = NULL_TREE;
type = grokdeclarator (declarator, type_specifiers, TYPENAME, 0, &attrs);
if (attrs)
cplus_decl_attributes (&type, attrs, 0);
{
if (CLASS_TYPE_P (type))
warning (OPT_Wattributes, "ignoring attributes applied to class type "
"outside of definition");
else
cplus_decl_attributes (&type, attrs, 0);
}
return type;
}

View File

@ -1,3 +1,8 @@
2007-08-28 Jason Merrill <jason@redhat.com>
PR c++/28558
* g++.dg/ext/attrib28.C: New test.
2007-08-28 Uros Bizjak <ubizjak@gmail.com>
PR target/32661

View File

@ -0,0 +1,12 @@
// PR c++/28558
// { dg-options "" }
struct A
{
A(int) { }
};
int main()
{
A a = (A __attribute__((unused)))0; // { dg-warning "attribute" }
}