]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c: gimplefe: Only allow an identifier before ? [PR117445]
authorAndrew Pinski <quic_apinski@quicinc.com>
Tue, 5 Nov 2024 07:42:29 +0000 (23:42 -0800)
committerAndrew Pinski <quic_apinski@quicinc.com>
Tue, 5 Nov 2024 17:52:25 +0000 (09:52 -0800)
Since r13-707-g68e0063397ba82, COND_EXPR/VEC_COND_EXPR has not
allowed a comparison as the first operand but the gimple front-end
was not updated for this change and you would error out later on.
An assert was added with r15-4791-gb60031e8f9f8fe which meant an ICE
would happen from the gimple FE.
This removes support for parsing of the `?:` expressions except for an
identifier.

Bootstrapped and tested on x86_64-linux-gnu.

gcc/c/ChangeLog:

PR c/117445
* gimple-parser.cc (c_parser_gimple_statement): Remove
support for comparisons before the querry (`?`) token.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
gcc/c/gimple-parser.cc

index 8d505084a8af4540ba0ee03ec0a0d1d567ac9fe0..7e445ce2ff8fff4d0034f180b419706c4842ff3d 100644 (file)
@@ -880,11 +880,9 @@ c_parser_gimple_statement (gimple_parser &parser, gimple_seq *seq)
   if (lhs.value != error_mark_node
       && rhs.value != error_mark_node)
     {
-      /* If we parsed a comparison or an identifier and the next token
-        is a '?' then parse a conditional expression.  */
-      if ((COMPARISON_CLASS_P (rhs.value)
-          || SSA_VAR_P (rhs.value))
-         && c_parser_next_token_is (parser, CPP_QUERY))
+      /* If we parsed an identifier and the next token  is a '?' then parse
+        a conditional expression.  */
+      if (SSA_VAR_P (rhs.value) && c_parser_next_token_is (parser, CPP_QUERY))
        {
          struct c_expr trueval, falseval;
          c_parser_consume_token (parser);