Commit 437b3c09 by Richard Stallman

(simplify_shift_const): Inhibit hacks based on

num_sign_bit_copies if shift_mode differs from the mode of varop.

From-SVN: r4994
parent fa1a4543
......@@ -7122,6 +7122,11 @@ simplify_shift_const (x, code, result_mode, varop, count)
else if (count < 0)
abort ();
/* If we have replaced VAROP with something wider
(such as, the SUBREG_REG), then this won't work;
num_sign_bit_copies will give the wrong answer in that case. */
if (shift_mode == GET_MODE (varop))
{
/* An arithmetic right shift of a quantity known to be -1 or 0
is a no-op. */
if (code == ASHIFTRT
......@@ -7141,6 +7146,7 @@ simplify_shift_const (x, code, result_mode, varop, count)
&& (count + num_sign_bit_copies (varop, shift_mode)
>= GET_MODE_BITSIZE (shift_mode)))
count = GET_MODE_BITSIZE (shift_mode) - 1;
}
/* We simplify the tests below and elsewhere by converting
ASHIFTRT to LSHIFTRT if we know the sign bit is clear.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment