expr.c (expand_expr <COND_EXPR>): Handle the void type semantics of COND_EXPR when expanding the "A op 0 ? FOO ...

* expr.c (expand_expr <COND_EXPR>): Handle the void type semantics
	of COND_EXPR when expanding the "A op 0 ? FOO : A" optimizations.

From-SVN: r72172
This commit is contained in:
Roger Sayle 2003-10-06 23:11:21 +00:00 committed by Roger Sayle
parent 37bf20eeb0
commit c37b68d42a
2 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2003-10-06 Roger Sayle <roger@eyesopen.com>
* expr.c (expand_expr <COND_EXPR>): Handle the void type semantics
of COND_EXPR when expanding the "A op 0 ? FOO : A" optimizations.
2003-10-06 Roger Sayle <roger@eyesopen.com>
Zack Weinberg <zack@codesourcery.com>

View File

@ -8910,8 +8910,12 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode,
jumpif (TREE_OPERAND (exp, 0), op0);
start_cleanup_deferral ();
store_expr (TREE_OPERAND (exp, 2), temp,
modifier == EXPAND_STACK_PARM ? 2 : 0);
if (TREE_TYPE (TREE_OPERAND (exp, 2)) != void_type_node)
store_expr (TREE_OPERAND (exp, 2), temp,
modifier == EXPAND_STACK_PARM ? 2 : 0);
else
expand_expr (TREE_OPERAND (exp, 2),
ignore ? const0_rtx : NULL_RTX, VOIDmode, 0);
op1 = op0;
}
else if (temp
@ -8931,8 +8935,12 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode,
jumpifnot (TREE_OPERAND (exp, 0), op0);
start_cleanup_deferral ();
store_expr (TREE_OPERAND (exp, 1), temp,
modifier == EXPAND_STACK_PARM ? 2 : 0);
if (TREE_TYPE (TREE_OPERAND (exp, 1)) != void_type_node)
store_expr (TREE_OPERAND (exp, 1), temp,
modifier == EXPAND_STACK_PARM ? 2 : 0);
else
expand_expr (TREE_OPERAND (exp, 1),
ignore ? const0_rtx : NULL_RTX, VOIDmode, 0);
op1 = op0;
}
else