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:
parent
1da93fe012
commit
2ac84cfe01
2 changed files with 12 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
|
|
Loading…
Add table
Reference in a new issue