(truthvalue_conversion): Fix handling of COMPLEX_EXPR.
Handle all complex values specially. From-SVN: r3645
This commit is contained in:
parent
a333b79fc5
commit
f0b996c50c
|
@ -967,9 +967,10 @@ truthvalue_conversion (expr)
|
||||||
return integer_one_node;
|
return integer_one_node;
|
||||||
|
|
||||||
case COMPLEX_EXPR:
|
case COMPLEX_EXPR:
|
||||||
return build_binary_op (TRUTH_ANDIF_EXPR,
|
return build_binary_op ((TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 1))
|
||||||
truthvalue_conversion (TREE_REALPART (expr)),
|
? TRUTH_AND_EXPR : TRUTH_ANDIF_EXPR),
|
||||||
truthvalue_conversion (TREE_IMAGPART (expr)),
|
truthvalue_conversion (TREE_OPERAND (expr, 0)),
|
||||||
|
truthvalue_conversion (TREE_OPERAND (expr, 1)),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
case NEGATE_EXPR:
|
case NEGATE_EXPR:
|
||||||
|
@ -1027,6 +1028,14 @@ truthvalue_conversion (expr)
|
||||||
break;
|
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);
|
return build_binary_op (NE_EXPR, expr, integer_zero_node, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue