expr.c (expand_expr): Cope with COND_EXPRs with one non-returning branch.

* expr.c (expand_expr): Cope with COND_EXPRs with one
	non-returning branch.

From-SVN: r28825
This commit is contained in:
Nathan Sidwell 1999-08-24 20:49:12 +00:00 committed by Jason Merrill
parent 1da93fe012
commit 2ac84cfe01
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,8 @@
Tue Aug 24 13:48:39 1999 Nathan Sidwell <nathan@acm.org>
* expr.c (expand_expr): Cope with COND_EXPRs with one
non-returning branch.
Mon Aug 23 22:28:16 1999 Mark Mitchell <mark@codesourcery.com>
* expr.c (store_expr): Always pass down the target, even when not

View File

@ -7700,7 +7700,11 @@ expand_expr (exp, target, tmode, modifier)
jumpifnot (TREE_OPERAND (exp, 0), op0);
start_cleanup_deferral ();
if (temp != 0)
/* One branch of the cond can be void, if it never returns. For
example A ? throw : E */
if (temp != 0
&& TREE_TYPE (TREE_OPERAND (exp, 1)) != void_type_node)
store_expr (TREE_OPERAND (exp, 1), temp, 0);
else
expand_expr (TREE_OPERAND (exp, 1),
@ -7711,7 +7715,8 @@ expand_expr (exp, target, tmode, modifier)
emit_barrier ();
emit_label (op0);
start_cleanup_deferral ();
if (temp != 0)
if (temp != 0
&& TREE_TYPE (TREE_OPERAND (exp, 2)) != void_type_node)
store_expr (TREE_OPERAND (exp, 2), temp, 0);
else
expand_expr (TREE_OPERAND (exp, 2),