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:
Richard Biener 2021-05-28 13:05:39 +02:00
parent d2a913c76f
commit 8b2b32ab2d
2 changed files with 20 additions and 0 deletions

View file

@ -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;

View 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;
}