C++ : Remove an overzealous checking assert [PR97871]
authorIain Sandoe <iain@sandoe.co.uk>
Tue, 17 Nov 2020 16:28:30 +0000 (16:28 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Tue, 17 Nov 2020 16:54:33 +0000 (16:54 +0000)
It seems we accept __attribute__(()) without any diagnostic at present,
so my added checking assert fires for something like:

__attribute__ (()) int a;

Fixed by removing the assert; in the case that the user enters something
like:

__attribute__ (()) extern "C" int foo;

The diagnostic about attributes before linkage specs will fire and show
the empty attributes.

gcc/cp/ChangeLog:

PR c++/97871
* parser.c (cp_parser_declaration): Remove checking assert.

gcc/cp/parser.c

index 42f705266bb33b67ef9a7cd82dce0f1c755d049f..b7ef259b04889ed9108e464a2650e6cb27f7435a 100644 (file)
@@ -13536,7 +13536,6 @@ cp_parser_declaration (cp_parser* parser, tree prefix_attrs)
     {
       cp_lexer_save_tokens (parser->lexer);
       attributes = cp_parser_attributes_opt (parser);
-      gcc_checking_assert (attributes);
       cp_token *t1 = cp_lexer_peek_token (parser->lexer);
       cp_token *t2 = (t1->type == CPP_EOF
                      ? t1 : cp_lexer_peek_nth_token (parser->lexer, 2));