From 8e0ac43b334f6d5851dd7eb9fceff79ab404cdeb Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 2 Aug 1994 19:06:41 -0400 Subject: [PATCH] (simplify_unary_operation): Clean up some mode and size checks with CONST_DOUBLEs; TRUNCATE should do nothing. From-SVN: r7853 --- gcc/cse.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gcc/cse.c b/gcc/cse.c index adc99329407..ae9ffdf8ac8 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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;