(simplify_shift_count, case LSHIFTRT): Don't merge shifts of different

modes if first is any right shift.

From-SVN: r9674
This commit is contained in:
Richard Kenner 1995-05-13 06:46:49 -04:00
parent e98b85444c
commit bdaae9a01a

View File

@ -7898,7 +7898,7 @@ simplify_shift_const (x, code, result_mode, varop, count)
ASHIFTRT.
If the mode of this shift is not the mode of the outer shift,
we can't do this if either shift is ASHIFTRT or ROTATE.
we can't do this if either shift is a right shift or ROTATE.
Finally, we can't do any of these if the mode is too wide
unless the codes are the same.
@ -7909,7 +7909,8 @@ simplify_shift_const (x, code, result_mode, varop, count)
if (code == first_code)
{
if (GET_MODE (varop) != result_mode
&& (code == ASHIFTRT || code == ROTATE))
&& (code == ASHIFTRT || code == LSHIFTRT
|| code == ROTATE))
break;
count += first_count;
@ -7921,7 +7922,8 @@ simplify_shift_const (x, code, result_mode, varop, count)
|| (code == ROTATE && first_code == ASHIFTRT)
|| GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT
|| (GET_MODE (varop) != result_mode
&& (first_code == ASHIFTRT || first_code == ROTATE
&& (first_code == ASHIFTRT || first_code == LSHIFTRT
|| first_code == ROTATE
|| code == ROTATE)))
break;