c-common.c (truthvalue_conversion): Protect side effects in the expression when splitting a complex value.
* c-common.c (truthvalue_conversion): Protect side effects in the expression when splitting a complex value. * fold-const.c (fold): Likewise. From-SVN: r20580
This commit is contained in:
parent
c4137c5039
commit
f0b8d9aab4
@ -1,3 +1,9 @@
|
||||
Fri Jun 19 10:43:52 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* c-common.c (truthvalue_conversion): Protect side effects in the
|
||||
expression when splitting a complex value.
|
||||
* fold-const.c (fold): Likewise.
|
||||
|
||||
Fri Jun 19 02:31:16 1998 Klaus Kaempf (kkaempf@progis.de)
|
||||
|
||||
* cccp.c (hack_vms_include_specification): rewrite to handle
|
||||
|
@ -2670,12 +2670,15 @@ truthvalue_conversion (expr)
|
||||
}
|
||||
|
||||
if (TREE_CODE (TREE_TYPE (expr)) == COMPLEX_TYPE)
|
||||
return (build_binary_op
|
||||
((TREE_SIDE_EFFECTS (expr)
|
||||
? TRUTH_OR_EXPR : TRUTH_ORIF_EXPR),
|
||||
truthvalue_conversion (build_unary_op (REALPART_EXPR, expr, 0)),
|
||||
truthvalue_conversion (build_unary_op (IMAGPART_EXPR, expr, 0)),
|
||||
0));
|
||||
{
|
||||
tree tem = save_expr (expr);
|
||||
return (build_binary_op
|
||||
((TREE_SIDE_EFFECTS (expr)
|
||||
? TRUTH_OR_EXPR : TRUTH_ORIF_EXPR),
|
||||
truthvalue_conversion (build_unary_op (REALPART_EXPR, tem, 0)),
|
||||
truthvalue_conversion (build_unary_op (IMAGPART_EXPR, tem, 0)),
|
||||
0));
|
||||
}
|
||||
|
||||
return build_binary_op (NE_EXPR, expr, integer_zero_node, 1);
|
||||
}
|
||||
|
@ -5656,10 +5656,14 @@ fold (expr)
|
||||
|| TREE_CODE (arg1) == COMPLEX_EXPR))
|
||||
{
|
||||
tree subtype = TREE_TYPE (TREE_TYPE (arg0));
|
||||
tree real0 = fold (build1 (REALPART_EXPR, subtype, arg0));
|
||||
tree imag0 = fold (build1 (IMAGPART_EXPR, subtype, arg0));
|
||||
tree real1 = fold (build1 (REALPART_EXPR, subtype, arg1));
|
||||
tree imag1 = fold (build1 (IMAGPART_EXPR, subtype, arg1));
|
||||
tree real0, imag0, real1, imag1;
|
||||
|
||||
arg0 = save_expr (arg0);
|
||||
arg1 = save_expr (arg1);
|
||||
real0 = fold (build1 (REALPART_EXPR, subtype, arg0));
|
||||
imag0 = fold (build1 (IMAGPART_EXPR, subtype, arg0));
|
||||
real1 = fold (build1 (REALPART_EXPR, subtype, arg1));
|
||||
imag1 = fold (build1 (IMAGPART_EXPR, subtype, arg1));
|
||||
|
||||
return fold (build ((code == EQ_EXPR ? TRUTH_ANDIF_EXPR
|
||||
: TRUTH_ORIF_EXPR),
|
||||
|
Loading…
Reference in New Issue
Block a user