diff --git a/gcc/cse.c b/gcc/cse.c index d9bc7d4a445..936370e928e 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -3844,12 +3844,9 @@ simplify_binary_operation (code, mode, op0, op1) #ifdef SHIFT_COUNT_TRUNCATED if (SHIFT_COUNT_TRUNCATED) - arg1 &= (BITS_PER_WORD - 1); + arg1 %= width; #endif - if (arg1 >= width) - return 0; - val = ((unsigned HOST_WIDE_INT) arg0) >> arg1; break; @@ -3860,12 +3857,9 @@ simplify_binary_operation (code, mode, op0, op1) #ifdef SHIFT_COUNT_TRUNCATED if (SHIFT_COUNT_TRUNCATED) - arg1 &= (BITS_PER_WORD - 1); + arg1 %= width; #endif - if (arg1 >= width) - return 0; - val = ((unsigned HOST_WIDE_INT) arg0) << arg1; break; @@ -3875,12 +3869,9 @@ simplify_binary_operation (code, mode, op0, op1) #ifdef SHIFT_COUNT_TRUNCATED if (SHIFT_COUNT_TRUNCATED) - arg1 &= (BITS_PER_WORD - 1); + arg1 %= width; #endif - if (arg1 >= width) - return 0; - val = arg0s >> arg1; /* Bootstrap compiler may not have sign extended the right shift.