Hi,
We allow c_expr to be empty which accepts cases like the following:
(simplify
match-operand
(if ()
result-operand))
(simplify
match-operand
{})
The attached patch rejects empty c_expr.
Ok for trunk after bootstrap + test ?
Thank you,
Prathamesh
2015-07-15 Prathamesh Kulkarni <[email protected]>
* genmatch.c (parse_c_expr): Reject empty c_expr.
Index: genmatch.c
===================================================================
--- genmatch.c (revision 225834)
+++ genmatch.c (working copy)
@@ -3375,6 +3375,7 @@
unsigned opencnt;
vec<cpp_token> code = vNULL;
unsigned nr_stmts = 0;
+ bool empty = true;
eat_token (start);
if (start == CPP_OPEN_PAREN)
end = CPP_CLOSE_PAREN;
@@ -3394,6 +3395,7 @@
&& --opencnt == 0)
break;
+ empty = false;
/* This is a lame way of counting the number of statements. */
if (token->type == CPP_SEMICOLON)
nr_stmts++;
@@ -3412,6 +3414,10 @@
code.safe_push (*token);
}
while (1);
+
+ if (empty)
+ fatal_at (token, "c_expr cannot be empty");
+
return new c_expr (r, code, nr_stmts, vNULL, capture_ids);
}