genmatch.c (capture_info::capture_info): Add missing COND_EXPR handling.

2014-11-12  Richard Biener  <rguenther@suse.de>

	* genmatch.c (capture_info::capture_info): Add missing
	COND_EXPR handling.
	(capture_info::walk_match): Fix COND_EXPR handling.
	(capture_info::walk_result): Likewise.

From-SVN: r217414
This commit is contained in:
Richard Biener 2014-11-12 11:59:40 +00:00 committed by Richard Biener
parent f871d7f9f4
commit 6a3cbe9092
2 changed files with 13 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2014-11-12 Richard Biener <rguenther@suse.de>
* genmatch.c (capture_info::capture_info): Add missing
COND_EXPR handling.
(capture_info::walk_match): Fix COND_EXPR handling.
(capture_info::walk_result): Likewise.
2014-11-12 Richard Biener <rguenther@suse.de>
PR middle-end/63821

View File

@ -1940,7 +1940,10 @@ capture_info::capture_info (simplify *s)
info.safe_grow_cleared (s->capture_max + 1);
e = as_a <expr *> (s->match);
for (unsigned i = 0; i < e->ops.length (); ++i)
walk_match (e->ops[i], i, false);
walk_match (e->ops[i], i,
(i != 0 && *e->operation == COND_EXPR)
|| *e->operation == TRUTH_ANDIF_EXPR
|| *e->operation == TRUTH_ORIF_EXPR);
walk_result (s->result, false);
@ -1971,8 +1974,7 @@ capture_info::walk_match (operand *o, unsigned toplevel_arg, bool conditional_p)
for (unsigned i = 0; i < e->ops.length (); ++i)
{
bool cond_p = conditional_p;
if (i == 0
&& *e->operation == COND_EXPR)
if (i != 0 && *e->operation == COND_EXPR)
cond_p = true;
else if (*e->operation == TRUTH_ANDIF_EXPR
|| *e->operation == TRUTH_ORIF_EXPR)
@ -2018,8 +2020,7 @@ capture_info::walk_result (operand *o, bool conditional_p)
for (unsigned i = 0; i < e->ops.length (); ++i)
{
bool cond_p = conditional_p;
if (i == 0
&& *e->operation == COND_EXPR)
if (i != 0 && *e->operation == COND_EXPR)
cond_p = true;
else if (*e->operation == TRUTH_ANDIF_EXPR
|| *e->operation == TRUTH_ORIF_EXPR)