From 82a5e8985ccd0adc31b6208c55658b4b44eea7b7 Mon Sep 17 00:00:00 2001 From: Charles Hannum Date: Mon, 6 Jul 1992 20:21:37 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r1477 --- gcc/cse.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gcc/cse.c b/gcc/cse.c index dbb2f2209fde..a47e691a54d8 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -2895,7 +2895,7 @@ simplify_unary_operation (code, mode, op, op_mode) case ZERO_EXTEND: if (op_mode == VOIDmode) op_mode = mode; - if (GET_MODE_BITSIZE (op_mode) == HOST_BITS_PER_INT) + if (GET_MODE_BITSIZE (op_mode) == HOST_BITS_PER_WIDE_INT) { /* If we were really extending the mode, we would have to distinguish between zero-extension @@ -2904,8 +2904,8 @@ simplify_unary_operation (code, mode, op, op_mode) abort (); val = arg0; } - else if (GET_MODE_BITSIZE (op_mode) < HOST_BITS_PER_INT) - val = arg0 & ~((-1) << GET_MODE_BITSIZE (op_mode)); + else if (GET_MODE_BITSIZE (op_mode) < HOST_BITS_PER_WIDE_INT) + val = arg0 & ~((HOST_WIDE_INT) (-1) << GET_MODE_BITSIZE (op_mode)); else return 0; break; @@ -2913,7 +2913,7 @@ simplify_unary_operation (code, mode, op, op_mode) case SIGN_EXTEND: if (op_mode == VOIDmode) op_mode = mode; - if (GET_MODE_BITSIZE (op_mode) == HOST_BITS_PER_INT) + if (GET_MODE_BITSIZE (op_mode) == HOST_BITS_PER_WIDE_INT) { /* If we were really extending the mode, we would have to distinguish between zero-extension @@ -2924,9 +2924,11 @@ simplify_unary_operation (code, mode, op, op_mode) } else if (GET_MODE_BITSIZE (op_mode) < HOST_BITS_PER_INT) { - val = arg0 & ~((-1) << GET_MODE_BITSIZE (op_mode)); - if (val & (1 << (GET_MODE_BITSIZE (op_mode) - 1))) - val -= 1 << GET_MODE_BITSIZE (op_mode); + val + = arg0 & ~((HOST_WIDE_INT) (-1) << GET_MODE_BITSIZE (op_mode)); + if (val + & ((HOST_WIDE_INT) 1 << (GET_MODE_BITSIZE (op_mode) - 1))) + val -= (HOST_WIDE_INT) 1 << GET_MODE_BITSIZE (op_mode); } else return 0; -- 2.43.5