aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <quic_apinski@quicinc.com>2024-11-04 23:42:29 -0800
committerAndrew Pinski <quic_apinski@quicinc.com>2024-11-05 09:52:25 -0800
commit3621d2ac22b75b154c2964c0db84b58be427f3a8 (patch)
tree2962315a9519acb4171b7901b85436183338e943 /gcc
parent161e246cf32f1298400aa3c1d86110490a3cd0ce (diff)
downloadgcc-3621d2ac22b75b154c2964c0db84b58be427f3a8.zip
gcc-3621d2ac22b75b154c2964c0db84b58be427f3a8.tar.gz
gcc-3621d2ac22b75b154c2964c0db84b58be427f3a8.tar.bz2
c: gimplefe: Only allow an identifier before ? [PR117445]
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>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/gimple-parser.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/c/gimple-parser.cc b/gcc/c/gimple-parser.cc
index 8d50508..7e445ce 100644
--- a/gcc/c/gimple-parser.cc
+++ b/gcc/c/gimple-parser.cc
@@ -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);