(truthvalue_conversion): Fix handling of COMPLEX_EXPR.

Handle all complex values specially.

From-SVN: r3645
This commit is contained in:
Richard Stallman 1993-03-04 20:34:56 +00:00
parent a333b79fc5
commit f0b996c50c
1 changed files with 12 additions and 3 deletions

View File

@ -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);
}