diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2007-02-02 17:09:55 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2007-02-02 17:09:55 +0000 |
commit | 1aeef526793e63252dd428d926809378d5f46795 (patch) | |
tree | 121f473987a109b31958eb1bdf6d5fa7f38c2121 /gcc/fold-const.c | |
parent | f6ec1d11632ab0a33dacb5043ac4819d5a91759e (diff) | |
download | gcc-1aeef526793e63252dd428d926809378d5f46795.zip gcc-1aeef526793e63252dd428d926809378d5f46795.tar.gz gcc-1aeef526793e63252dd428d926809378d5f46795.tar.bz2 |
fold-const.c (negate_expr_p, [...]): Handle COMPLEX_EXPR.
* fold-const.c (negate_expr_p, fold_negate_expr): Handle
COMPLEX_EXPR.
testsuite:
* gcc.dg/builtins-20.c: Add more cases.
From-SVN: r121511
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index e587ea9..241e9dc 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -1011,6 +1011,10 @@ negate_expr_p (tree t) return negate_expr_p (TREE_REALPART (t)) && negate_expr_p (TREE_IMAGPART (t)); + case COMPLEX_EXPR: + return negate_expr_p (TREE_OPERAND (t, 0)) + && negate_expr_p (TREE_OPERAND (t, 1)); + case PLUS_EXPR: if (HONOR_SIGN_DEPENDENT_ROUNDING (TYPE_MODE (type)) || HONOR_SIGNED_ZEROS (TYPE_MODE (type))) @@ -1134,6 +1138,13 @@ fold_negate_expr (tree t) } break; + case COMPLEX_EXPR: + if (negate_expr_p (t)) + return fold_build2 (COMPLEX_EXPR, type, + fold_negate_expr (TREE_OPERAND (t, 0)), + fold_negate_expr (TREE_OPERAND (t, 1))); + break; + case NEGATE_EXPR: return TREE_OPERAND (t, 0); |