Commit 6a3cbe90 by Richard Biener Committed by Richard Biener

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
parent f871d7f9
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
* match.pd: Add missing conversion to the -(T)-X pattern.
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment