re PR c++/17743 (dependent expressions in attributes)
authorGiovanni Bajo <giovannibajo@gcc.gnu.org>
Sun, 17 Oct 2004 04:39:46 +0000 (04:39 +0000)
committerGiovanni Bajo <giovannibajo@gcc.gnu.org>
Sun, 17 Oct 2004 04:39:46 +0000 (04:39 +0000)
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

gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/attrib17.C [new file with mode: 0644]

index ebd8705f674c09dbb429bb8d7c00315a2d4efc8c..3e5f74331295c290c3d049e9e99b99a41b9716f3 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-17  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+
+       PR c++/17743
+       * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
+
 2004-10-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/10479
index 6562f2828c66ba7431be804a962f5740e9daadd7..32ee18a55ebc875bb743b0de34b0e1f468470854 100644 (file)
@@ -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;
     }
 
index d7867afaad44a00194e8bc463a9d10e3f20598a2..38f19503529e8803420535101b1b822caea0a08b 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-17  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+
+       PR c++/17743
+       * g++.dg/ext/attrib17.C: New test.
+
 2004-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * 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 (file)
index 0000000..43cf264
--- /dev/null
@@ -0,0 +1,19 @@
+// { dg-do compile }
+// Origin: Benjamin Kosnik <bkoz at gcc dot gnu dot org>
+// 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<bool> struct StaticAssert;
+template<> struct StaticAssert<true> {};
+
+StaticAssert<__alignof__(A) == __alignof__(B)> a1;