Objective-C++ : Avoid ICE on invalid with empty attributes.
authorIain Sandoe <iain@sandoe.co.uk>
Tue, 17 Nov 2020 20:05:22 +0000 (20:05 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Wed, 18 Nov 2020 20:42:35 +0000 (20:42 +0000)
Empty prefix attributes like:

__attribute__ (())
@interface MyClass
@end

cause an ICE at present, check for that case and skip them.

gcc/cp/ChangeLog:

* parser.c (cp_parser_objc_valid_prefix_attributes): Check
for empty attributes.

gcc/cp/parser.c

index b7ef259b04889ed9108e464a2650e6cb27f7435a..cf4e4aa1b75318d20c25fc466b65ab477c60dda3 100644 (file)
@@ -33992,8 +33992,8 @@ cp_parser_objc_valid_prefix_attributes (cp_parser* parser, tree *attrib)
 {
   cp_lexer_save_tokens (parser->lexer);
   tree addon = cp_parser_attributes_opt (parser);
-  gcc_checking_assert (addon);
-  if (OBJC_IS_AT_KEYWORD (cp_lexer_peek_token (parser->lexer)->keyword))
+  if (addon
+      && OBJC_IS_AT_KEYWORD (cp_lexer_peek_token (parser->lexer)->keyword))
     {
       cp_lexer_commit_tokens (parser->lexer);
       if (*attrib)