diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-02 19:06:41 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-02 19:06:41 -0400 |
commit | 8e0ac43b334f6d5851dd7eb9fceff79ab404cdeb (patch) | |
tree | 783d850a683a6c66d4f1dd027b607ea9cf9f7a7d /gcc | |
parent | 3adde2a5c66dc7ff1509057a3dbddf112c56268f (diff) | |
download | gcc-8e0ac43b334f6d5851dd7eb9fceff79ab404cdeb.zip gcc-8e0ac43b334f6d5851dd7eb9fceff79ab404cdeb.tar.gz gcc-8e0ac43b334f6d5851dd7eb9fceff79ab404cdeb.tar.bz2 |
(simplify_unary_operation): Clean up some mode and size checks with
CONST_DOUBLEs; TRUNCATE should do nothing.
From-SVN: r7853
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cse.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -3086,7 +3086,7 @@ simplify_unary_operation (code, mode, op, op_mode) /* We can do some operations on integer CONST_DOUBLEs. Also allow for a DImode operation on a CONST_INT. */ - else if (GET_MODE (op) == VOIDmode && width == HOST_BITS_PER_INT * 2 + else if (GET_MODE (op) == VOIDmode && width <= HOST_BITS_PER_INT * 2 && (GET_CODE (op) == CONST_DOUBLE || GET_CODE (op) == CONST_INT)) { HOST_WIDE_INT l1, h1, lv, hv; @@ -3123,10 +3123,7 @@ simplify_unary_operation (code, mode, op, op_mode) break; case TRUNCATE: - if (GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT) - return GEN_INT (l1 & GET_MODE_MASK (mode)); - else - return 0; + /* This is just a change-of-mode, so do nothing. */ break; case ZERO_EXTEND: @@ -3220,7 +3217,10 @@ simplify_unary_operation (code, mode, op, op_mode) set_float_handler (NULL_PTR); return x; } - else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE_CLASS (mode) == MODE_INT + + else if (GET_CODE (op) == CONST_DOUBLE + && GET_MODE_CLASS (GET_MODE (op)) == MODE_FLOAT + && GET_MODE_CLASS (mode) == MODE_INT && width <= HOST_BITS_PER_WIDE_INT && width > 0) { REAL_VALUE_TYPE d; |