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.
This commit is contained in:
parent
d2a913c76f
commit
8b2b32ab2d
2 changed files with 20 additions and 0 deletions
|
@ -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;
|
||||
|
|
12
gcc/testsuite/gcc.dg/gimplefe-error-11.c
Normal file
12
gcc/testsuite/gcc.dg/gimplefe-error-11.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-fgimple" } */
|
||||
|
||||
int bar();
|
||||
__GIMPLE
|
||||
int foo()
|
||||
{
|
||||
if (bar()) /* { dg-error "comparison required" } */
|
||||
goto bb1;
|
||||
else
|
||||
goto bb2;
|
||||
}
|
Loading…
Add table
Reference in a new issue