From bdaae9a01aee53dd13918136baeb693323356aa3 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 13 May 1995 06:46:49 -0400 Subject: [PATCH] (simplify_shift_count, case LSHIFTRT): Don't merge shifts of different modes if first is any right shift. From-SVN: r9674 --- gcc/combine.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index 68e91f973c7..3b58b34b854 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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; -- 2.30.2