diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-03-16 23:45:28 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-03-16 18:45:28 -0500 |
commit | c9869b75ee626214ec24447f33215fb4b6c9f038 (patch) | |
tree | 8be480c93bcf9552a35b2f3938d918504f513389 /gcc/fold-const.c | |
parent | b1801c0246be659c50616cda377cd982087e01c6 (diff) | |
download | gcc-c9869b75ee626214ec24447f33215fb4b6c9f038.zip gcc-c9869b75ee626214ec24447f33215fb4b6c9f038.tar.gz gcc-c9869b75ee626214ec24447f33215fb4b6c9f038.tar.bz2 |
fold-const.c (fold): Fix a few cases when the returned result is not of the same type as the input.
* fold-const.c (fold): Fix a few cases when the returned result
is not of the same type as the input.
From-SVN: r32597
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index d24a7d1..904e93d 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -5226,7 +5226,7 @@ fold (expr) if (TREE_CODE (TREE_TYPE (arg0)) != COMPLEX_TYPE) return arg0; else if (TREE_CODE (arg0) == COMPLEX_EXPR) - return build (COMPLEX_EXPR, TREE_TYPE (arg0), + return build (COMPLEX_EXPR, type, TREE_OPERAND (arg0, 0), negate_expr (TREE_OPERAND (arg0, 1))); else if (TREE_CODE (arg0) == COMPLEX_CST) @@ -5525,7 +5525,7 @@ fold (expr) if (! FLOAT_TYPE_P (type)) { if (! wins && integer_zerop (arg0)) - return negate_expr (arg1); + return convert (type, negate_expr (arg1)); if (integer_zerop (arg1)) return non_lvalue (convert (type, arg0)); @@ -5548,7 +5548,7 @@ fold (expr) { /* Except with IEEE floating point, 0-x equals -x. */ if (! wins && real_zerop (arg0)) - return negate_expr (arg1); + return convert (type, negate_expr (arg1)); /* Except with IEEE floating point, x-0 equals x. */ if (real_zerop (arg1)) return non_lvalue (convert (type, arg0)); @@ -6819,7 +6819,8 @@ fold (expr) switch (comp_code) { case EQ_EXPR: - return pedantic_non_lvalue (negate_expr (arg1)); + return + pedantic_non_lvalue (convert (type, negate_expr (arg1))); case NE_EXPR: return pedantic_non_lvalue (convert (type, arg1)); case GE_EXPR: |