[Bug c/69798] ICE on invalid code on x86_64-linux-gnu in c_parser_braced_init, at c/c-parser.c:4338

mpolacek at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 2 11:09:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69798

--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
So an option here would be to:

--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -7512,28 +7512,6 @@ c_parser_postfix_expression (c_parser *parser)
      set_c_expr_source_range (&expr, loc, close_loc);
      mark_exp_read (expr.value);
    }
-      else if (c_token_starts_typename (c_parser_peek_2nd_token (parser)))
-   {
-     /* A compound literal.  ??? Can we actually get here rather
-        than going directly to
-        c_parser_postfix_expression_after_paren_type from
-        elsewhere?  */
-     location_t loc;
-     struct c_type_name *type_name;
-     c_parser_consume_token (parser);
-     loc = c_parser_peek_token (parser)->location;
-     type_name = c_parser_type_name (parser);
-     c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
-                    "expected %<)%>");
-     if (type_name == NULL)
-       {
-         expr.value = error_mark_node;
-       }
-     else
-       expr = c_parser_postfix_expression_after_paren_type (parser,
-                                type_name,
-                                loc);
-   }
       else
    {
      /* A parenthesized expression.  */

I put gcc_unreachable (); into the block, did regtest, and there are no
failures.


More information about the Gcc-bugs mailing list