diff options
author | Richard Biener <rguenther@suse.de> | 2021-05-28 13:05:39 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-05-28 14:25:33 +0200 |
commit | 8b2b32ab2d8cff4eb0dad0ef4e72e33257574cb6 (patch) | |
tree | aa42c7a633285545c834b2abe8501c42ad11917c /gcc/c | |
parent | d2a913c76f41692fd0bb955d1768f462133d813a (diff) | |
download | gcc-8b2b32ab2d8cff4eb0dad0ef4e72e33257574cb6.zip gcc-8b2b32ab2d8cff4eb0dad0ef4e72e33257574cb6.tar.gz gcc-8b2b32ab2d8cff4eb0dad0ef4e72e33257574cb6.tar.bz2 |
c/100803 - diagnose invalid GIMPLE condition
another easy fix for GIMPLE FE parser robustness.
2021-05-28 Richard Biener <rguenther@suse.de>
PR c/100803
gcc/c/
* gimple-parser.c (c_parser_gimple_paren_condition): Diagnose
invalid if conditions.
gcc/testsuite/
* gcc.dg/gimplefe-error-11.c: New testcase.
Diffstat (limited to 'gcc/c')
-rw-r--r-- | gcc/c/gimple-parser.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index dfacf23..c8d9db6 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -2112,6 +2112,14 @@ c_parser_gimple_paren_condition (gimple_parser &parser) if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) return error_mark_node; tree cond = c_parser_gimple_binary_expression (parser).value; + if (cond != error_mark_node + && ! COMPARISON_CLASS_P (cond) + && ! CONSTANT_CLASS_P (cond) + && ! SSA_VAR_P (cond)) + { + c_parser_error (parser, "comparison required"); + cond = error_mark_node; + } if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) return error_mark_node; return cond; |