From: Richard Stallman Date: Thu, 4 Mar 1993 20:34:56 +0000 (+0000) Subject: (truthvalue_conversion): Fix handling of COMPLEX_EXPR. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f0b996c50ca3dc47e41a3e4c6f92b6403a1f55c9;p=gcc.git (truthvalue_conversion): Fix handling of COMPLEX_EXPR. Handle all complex values specially. From-SVN: r3645 --- diff --git a/gcc/c-common.c b/gcc/c-common.c index 8dfc1e725d4..db0a5e11e72 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -967,9 +967,10 @@ truthvalue_conversion (expr) return integer_one_node; case COMPLEX_EXPR: - return build_binary_op (TRUTH_ANDIF_EXPR, - truthvalue_conversion (TREE_REALPART (expr)), - truthvalue_conversion (TREE_IMAGPART (expr)), + return build_binary_op ((TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 1)) + ? TRUTH_AND_EXPR : TRUTH_ANDIF_EXPR), + truthvalue_conversion (TREE_OPERAND (expr, 0)), + truthvalue_conversion (TREE_OPERAND (expr, 1)), 0); case NEGATE_EXPR: @@ -1027,6 +1028,14 @@ truthvalue_conversion (expr) break; } + if (TREE_CODE (TREE_TYPE (expr)) == COMPLEX_TYPE) + return (build_binary_op + ((TREE_SIDE_EFFECTS (expr) + ? TRUTH_AND_EXPR : TRUTH_ANDIF_EXPR), + truthvalue_conversion (build_unary_op (REALPART_EXPR, expr, 0)), + truthvalue_conversion (build_unary_op (IMAGPART_EXPR, expr, 0)), + 0)); + return build_binary_op (NE_EXPR, expr, integer_zero_node, 1); }