From: Giovanni Bajo Date: Sun, 17 Oct 2004 04:39:46 +0000 (+0000) Subject: re PR c++/17743 (dependent expressions in attributes) X-Git-Tag: releases/gcc-4.0.0~3980 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9596e0648d707e99db00814dbddbb54225f98bff;p=thirdparty%2Fgcc.git re PR c++/17743 (dependent expressions in attributes) PR c++/17743 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs. PR c++/17743 * g++.dg/ext/attrib17.C: New test. From-SVN: r89164 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ebd8705f674c..3e5f74331295 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-10-17 Giovanni Bajo + + PR c++/17743 + * decl2.c (grokfield): Apply attributes also to TYPE_DECLs. + 2004-10-16 Giovanni Bajo PR c++/10479 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 6562f2828c66..32ee18a55ebc 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -879,6 +879,9 @@ grokfield (const cp_declarator *declarator, if (processing_template_decl) value = push_template_decl (value); + if (attrlist) + cplus_decl_attributes (&value, attrlist, 0); + return value; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d7867afaad44..38f19503529e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-10-17 Giovanni Bajo + + PR c++/17743 + * g++.dg/ext/attrib17.C: New test. + 2004-10-16 Eric Botcazou * gcc.dg/bf-spl1.c: Use 'float' as the base type for FP types. diff --git a/gcc/testsuite/g++.dg/ext/attrib17.C b/gcc/testsuite/g++.dg/ext/attrib17.C new file mode 100644 index 000000000000..43cf264f51e9 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib17.C @@ -0,0 +1,19 @@ +// { dg-do compile } +// Origin: Benjamin Kosnik +// PR c++/17743: Attributes applied to typedefs. + +struct A { + typedef char layout_type[sizeof(double)] + __attribute__((aligned(__alignof__(double)))); + layout_type data; +}; + +struct B { + typedef char layout_type[sizeof(double)]; + layout_type data __attribute__((aligned(__alignof__(double)))); +}; + +template struct StaticAssert; +template<> struct StaticAssert {}; + +StaticAssert<__alignof__(A) == __alignof__(B)> a1;