]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: guard more against undiagnosed error_mark_node [PR112658]
authorPatrick Palka <ppalka@redhat.com>
Fri, 8 Dec 2023 18:34:04 +0000 (13:34 -0500)
committerPatrick Palka <ppalka@redhat.com>
Fri, 8 Dec 2023 18:34:04 +0000 (13:34 -0500)
This adds a sanity check to cp_parser_expression_statement similar to
the one in finish_expr_stmt added by r6-6795-g0fd9d4921f7ba2, which
effectively downgrades accepts-invalid/wrong-code bugs like this one
into ice-on-invalid/ice-on-valid ones.

PR c++/112658

gcc/cp/ChangeLog:

* parser.cc (cp_parser_expression_statement): If the statement
is error_mark_node, make sure we've seen_error().

gcc/cp/parser.cc

index 732d2a919ebde0e1d9765b0dd570fe256c6d682f..6ec342c08eda06aafe3f2ac003bb2851eb4f0c96 100644 (file)
@@ -12964,6 +12964,9 @@ cp_parser_expression_statement (cp_parser* parser, tree in_statement_expr)
       if (statement == error_mark_node
          && !cp_parser_uncommitted_to_tentative_parse_p (parser))
        {
+         /* If we ran into a problem, make sure we complained.  */
+         gcc_assert (seen_error ());
+
          cp_parser_skip_to_end_of_block_or_statement (parser);
          return error_mark_node;
        }