From: Jim Wilson Date: Mon, 2 Aug 1999 23:53:14 +0000 (+0000) Subject: Optimize duplicate zero_extend operations. X-Git-Tag: prereleases/libstdc++-2.92~11398 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fae2db4744dd199c7aea8cf48b3ab7a1282e98cc;p=thirdparty%2Fgcc.git Optimize duplicate zero_extend operations. * combine.c (force_to_mode, case LSHIFTRT): Add goto shiftrt. (force_to_mode, case ASHIFTRT): Add shiftrt label. From-SVN: r28424 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fe7eec16a019..9592319fa050 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Aug 2 16:27:42 1999 Jim Wilson + + * combine.c (force_to_mode, case LSHIFTRT): Add goto shiftrt. + (force_to_mode, case ASHIFTRT): Add shiftrt label. + Tue Aug 3 00:45:02 1999 J"orn Rennecke * loop.c (strength_reduce): When doing biv->giv conversion, update diff --git a/gcc/combine.c b/gcc/combine.c index c9736e5e56c4..c922c86117b5 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -6574,7 +6574,8 @@ force_to_mode (x, mode, mask, reg, just_select) x = gen_binary (LSHIFTRT, GET_MODE (x), XEXP (x, 0), GEN_INT (GET_MODE_BITSIZE (GET_MODE (x)) - exact_log2 (mask + 1))); - break; + + goto shiftrt; case ASHIFTRT: /* If we are just looking for the sign bit, we don't need this shift at @@ -6639,7 +6640,9 @@ force_to_mode (x, mode, mask, reg, just_select) if (mask == 1) x = gen_binary (LSHIFTRT, GET_MODE (x), XEXP (x, 0), XEXP (x, 1)); - /* If this is a sign-extension operation that just affects bits + shiftrt: + + /* If this is a zero- or sign-extension operation that just affects bits we don't care about, remove it. Be sure the call above returned something that is still a shift. */