From: Roger Sayle Date: Mon, 6 Oct 2003 23:11:21 +0000 (+0000) Subject: expr.c (expand_expr ): Handle the void type semantics of COND_EXPR when... X-Git-Tag: releases/gcc-3.4.0~3241 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c37b68d42af9dfe0561541be06879f6cdb0f0532;p=thirdparty%2Fgcc.git expr.c (expand_expr ): Handle the void type semantics of COND_EXPR when expanding the "A op 0 ? FOO ... * expr.c (expand_expr ): Handle the void type semantics of COND_EXPR when expanding the "A op 0 ? FOO : A" optimizations. From-SVN: r72172 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06ea6114c54e..b0a81bc511bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-10-06 Roger Sayle + + * expr.c (expand_expr ): Handle the void type semantics + of COND_EXPR when expanding the "A op 0 ? FOO : A" optimizations. + 2003-10-06 Roger Sayle Zack Weinberg diff --git a/gcc/expr.c b/gcc/expr.c index 26eaab014520..edc42908bf08 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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