From f28aa681d399c174527abd917afe15a3174a401e Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 24 Oct 2013 10:42:43 +0000 Subject: [PATCH] c-parser.c (c_parser_struct_declaration): Add a comment. 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 | 5 +++++ gcc/c/c-parser.c | 7 ++++++- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/c11-align-5.c | 8 ++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 39cce3b71bd..1d0dd9569f3 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2013-10-24 Marek Polacek + + * c-parser.c (c_parser_struct_declaration): Add a comment. + (c_parser_declarator): Don't allow _Alignas here. + 2013-10-17 Andrew MacLeod * c-parser.c: Include omp-low.h. diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 9b6abe0e95e..4d6c9303918 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -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. + */ 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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9f3d5be84b..d68f3846cac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-10-24 Marek Polacek + + * gcc.dg/c11-align-5.c: Add more testing. + 2013-10-23 Pat Haugen * gcc.target/powerpc/direct-move.h: Fix header for executable tests. diff --git a/gcc/testsuite/gcc.dg/c11-align-5.c b/gcc/testsuite/gcc.dg/c11-align-5.c index c8e475120f8..f3a14779ff8 100644 --- a/gcc/testsuite/gcc.dg/c11-align-5.c +++ b/gcc/testsuite/gcc.dg/c11-align-5.c @@ -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); -- 2.30.2