]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Optimize duplicate zero_extend operations.
authorJim Wilson <wilson@cygnus.com>
Mon, 2 Aug 1999 23:53:14 +0000 (23:53 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Mon, 2 Aug 1999 23:53:14 +0000 (16:53 -0700)
* combine.c (force_to_mode, case LSHIFTRT): Add goto shiftrt.
(force_to_mode, case ASHIFTRT): Add shiftrt label.

From-SVN: r28424

gcc/ChangeLog
gcc/combine.c

index fe7eec16a01988dbed239fb0063229a6bef1e693..9592319fa050450814eeab68b56516e851351f48 100644 (file)
@@ -1,3 +1,8 @@
+Mon Aug  2 16:27:42 1999  Jim Wilson  <wilson@cygnus.com>
+
+       * 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 <amylaar@cygnus.co.uk>
 
        * loop.c (strength_reduce): When doing biv->giv conversion, update
index c9736e5e56c4b42121386893ccfc69ce0b68ff3d..c922c86117b53b3a8534ffe1a52a20fa2b3eb437 100644 (file)
@@ -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.  */