c-parser.c (c_parser_struct_declaration): Add a comment.
authorMarek Polacek <polacek@redhat.com>
Thu, 24 Oct 2013 10:42:43 +0000 (10:42 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 24 Oct 2013 10:42:43 +0000 (10:42 +0000)
c/
* c-parser.c (c_parser_struct_declaration): Add a comment.
(c_parser_declarator): Don't allow _Alignas here.
testsuite/
* gcc.dg/c1x-align-5.c: Add more testing.

From-SVN: r204007

gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/c11-align-5.c

index 39cce3b..1d0dd95 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-24  Marek Polacek  <polacek@redhat.com>
+
+       * c-parser.c (c_parser_struct_declaration): Add a comment.
+       (c_parser_declarator): Don't allow _Alignas here.
+
 2013-10-17  Andrew MacLeod  <amacleod@redhat.com>
 
        * c-parser.c: Include omp-low.h.
index 9b6abe0..4d6c930 100644 (file)
@@ -2645,6 +2645,11 @@ c_parser_struct_declaration (c_parser *parser)
     }
   specs = build_null_declspecs ();
   decl_loc = c_parser_peek_token (parser)->location;
+  /* Strictly by the standard, we shouldn't allow _Alignas here,
+     but it appears to have been intended to allow it there, so
+     we're keeping it as it is until WG14 reaches a conclusion
+     of N1731.
+     <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1731.pdf>  */
   c_parser_declspecs (parser, specs, false, true, true,
                      true, cla_nonabstract_decl);
   if (parser->error)
@@ -2959,7 +2964,7 @@ c_parser_declarator (c_parser *parser, bool type_seen_p, c_dtr_syn kind,
       struct c_declarator *inner;
       c_parser_consume_token (parser);
       c_parser_declspecs (parser, quals_attrs, false, false, true,
-                         true, cla_prefer_id);
+                         false, cla_prefer_id);
       inner = c_parser_declarator (parser, type_seen_p, kind, seen_id);
       if (inner == NULL)
        return NULL;
index e9f3d5b..d68f384 100644 (file)
@@ -1,3 +1,7 @@
+2013-10-24  Marek Polacek  <polacek@redhat.com>
+
+       * gcc.dg/c11-align-5.c: Add more testing.
+
 2013-10-23  Pat Haugen  <pthaugen@us.ibm.com>
 
        * gcc.target/powerpc/direct-move.h: Fix header for executable tests.
index c8e4751..f3a1477 100644 (file)
@@ -14,6 +14,14 @@ void foo (int a[_Alignas (0) 10]) { } /* { dg-error "expected expression before"
 void
 test (void)
 {
+  int *_Alignas (long) p; /* { dg-error "expected" } */
+  int *const _Alignas (long) *q; /* { dg-error "expected" } */
+  struct s { int n; };
+  __builtin_offsetof (struct s _Alignas (int), n); /* { dg-error "expected" } */
+  __typeof (long double _Alignas (0)) e; /* { dg-error "expected" } */
+  sizeof (int _Alignas (int)); /* { dg-error "expected" } */
+  _Alignas (int _Alignas (float)) int t; /* { dg-error "expected" } */
+  __builtin_types_compatible_p (signed _Alignas (0), unsigned); /* { dg-error "expected" } */
   int a[_Alignas (int) 10]; /* { dg-error "expected expression before" } */
   int b[10];
   foo (b);