On Wed, 16 Oct 2013, Marek Polacek wrote: > @@ -2946,7 +2957,8 @@ c_parser_declarator (c_parser *parser, b > struct c_declspecs *quals_attrs = build_null_declspecs (); > struct c_declarator *inner; > c_parser_consume_token (parser); > - c_parser_declspecs (parser, quals_attrs, false, false, true, > cla_prefer_id); > + c_parser_declspecs (parser, quals_attrs, false, false, true, > + true, cla_prefer_id); > inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); > if (inner == NULL) > return NULL;
Looking at this again, shouldn't the new argument be "false" (with associated testcase)? This is parsing pointer declarators, and _Alignas isn't allowed there any more than it is in array declarators.... > @@ -3715,7 +3730,8 @@ c_parser_type_name (c_parser *parser) > struct c_declarator *declarator; > struct c_type_name *ret; > bool dummy = false; > - c_parser_declspecs (parser, specs, false, true, true, cla_prefer_type); > + c_parser_declspecs (parser, specs, false, true, true, false, > + cla_prefer_type); > if (!specs->declspecs_seen_p) > { > c_parser_error (parser, "expected specifier-qualifier-list"); And this should get a testcase added, that _Alignas is correctly rejected in type names where previously it would have been wrongly accepted. (Strictly by the standard it should be "false" in c_parser_struct_declaration as well - the syntax there doesn't allow _Alignas - but it appears to have been intended to allow it there, so probably best not to change anything there until WG14 reaches a conclusion on the issues I raised in N1731.) -- Joseph S. Myers jos...@codesourcery.com