fold-const.c (negate_expr_p): Handle CONJ_EXPR.
* fold-const.c (negate_expr_p): Handle CONJ_EXPR. (fold_negate_expr): Likewise. testsuite: * gcc.dg/builtins-20.c: Add more cases. From-SVN: r121639
This commit is contained in:
parent
792eaee2cb
commit
8fbbe90b26
4 changed files with 54 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2007-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* fold-const.c (negate_expr_p): Handle CONJ_EXPR.
|
||||
(fold_negate_expr): Likewise.
|
||||
|
||||
2007-02-05 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR debug/30189
|
||||
|
|
|
@ -1015,6 +1015,9 @@ negate_expr_p (tree t)
|
|||
return negate_expr_p (TREE_OPERAND (t, 0))
|
||||
&& negate_expr_p (TREE_OPERAND (t, 1));
|
||||
|
||||
case CONJ_EXPR:
|
||||
return negate_expr_p (TREE_OPERAND (t, 0));
|
||||
|
||||
case PLUS_EXPR:
|
||||
if (HONOR_SIGN_DEPENDENT_ROUNDING (TYPE_MODE (type))
|
||||
|| HONOR_SIGNED_ZEROS (TYPE_MODE (type)))
|
||||
|
@ -1145,6 +1148,12 @@ fold_negate_expr (tree t)
|
|||
fold_negate_expr (TREE_OPERAND (t, 1)));
|
||||
break;
|
||||
|
||||
case CONJ_EXPR:
|
||||
if (negate_expr_p (t))
|
||||
return fold_build1 (CONJ_EXPR, type,
|
||||
fold_negate_expr (TREE_OPERAND (t, 0)));
|
||||
break;
|
||||
|
||||
case NEGATE_EXPR:
|
||||
return TREE_OPERAND (t, 0);
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/builtins-20.c: Add more cases.
|
||||
|
||||
2007-02-05 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR debug/30189
|
||||
|
|
|
@ -260,6 +260,18 @@ void test3(__complex__ double x, __complex__ double y, int i)
|
|||
|
||||
if (ccos(i ? x : ctan(y/x)) != ccos(i ? -x : -ctan(-y/x)))
|
||||
link_error();
|
||||
|
||||
if (~x != -~-x)
|
||||
link_error();
|
||||
|
||||
if (ccos(~x) != ccos(-~-x))
|
||||
link_error();
|
||||
|
||||
if (ctan(~(x-y)) != -ctan(~(y-x)))
|
||||
link_error();
|
||||
|
||||
if (ctan(~(x/y)) != -ctan(~(x/-y)))
|
||||
link_error();
|
||||
}
|
||||
|
||||
void test1f(float x)
|
||||
|
@ -467,6 +479,18 @@ void test3f(__complex__ float x, __complex__ float y, int i)
|
|||
|
||||
if (ccosf(i ? x : ctanf(y/x)) != ccosf(i ? -x : -ctanf(-y/x)))
|
||||
link_error();
|
||||
|
||||
if (~x != -~-x)
|
||||
link_error();
|
||||
|
||||
if (ccosf(~x) != ccosf(-~-x))
|
||||
link_error();
|
||||
|
||||
if (ctanf(~(x-y)) != -ctanf(~(y-x)))
|
||||
link_error();
|
||||
|
||||
if (ctanf(~(x/y)) != -ctanf(~(x/-y)))
|
||||
link_error();
|
||||
}
|
||||
|
||||
void test1l(long double x)
|
||||
|
@ -674,6 +698,18 @@ void test3l(__complex__ long double x, __complex__ long double y, int i)
|
|||
|
||||
if (ccosl(i ? x : ctanl(y/x)) != ccosl(i ? -x : -ctanl(-y/x)))
|
||||
link_error();
|
||||
|
||||
if (~x != -~-x)
|
||||
link_error();
|
||||
|
||||
if (ccosl(~x) != ccosl(-~-x))
|
||||
link_error();
|
||||
|
||||
if (ctanl(~(x-y)) != -ctanl(~(y-x)))
|
||||
link_error();
|
||||
|
||||
if (ctanl(~(x/y)) != -ctanl(~(x/-y)))
|
||||
link_error();
|
||||
}
|
||||
|
||||
int main()
|
||||
|
|
Loading…
Add table
Reference in a new issue