]> gcc.gnu.org Git - gcc.git/commitdiff
sh.c (gen_shl_and): Don't sign extend constant for kind two.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Fri, 15 May 1998 03:26:52 +0000 (03:26 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 15 May 1998 03:26:52 +0000 (04:26 +0100)
* sh.c (gen_shl_and): Don't sign extend constant for kind two.
Abort if trying to split kind 3 or 4 outside of combine.

From-SVN: r19772

gcc/ChangeLog
gcc/config/sh/sh.c

index 0f06f62e95fd7b4ad9b050d814fa02cf96846840..f3c35da89b7160940244d91c22747808554b7bb8 100644 (file)
@@ -1,3 +1,8 @@
+Fri May 15 11:21:16 1998  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * sh.c (gen_shl_and): Don't sign extend constant for kind two.
+       Abort if trying to split kind 3 or 4 outside of combine.
+
 Fri May 15 01:47:37 1998  Jeffrey A Law  (law@cygnus.com)
 
        * mips.c (print_operand, case 'x'): Use HOST_WIDE_INT_PRINT_HEX.
index f9a3caa874e854d084ba0c094608f6745ea5fa91..ac30a6676fac5f546974853f391b0f542ed5b446 100644 (file)
@@ -1335,13 +1335,13 @@ gen_shl_and (dest, left_rtx, mask_rtx, source)
       }
     case 4:
       shift_gen_fun = gen_shifty_op;
-    case 2:
     case 3:
       /* If the topmost bit that matters is set, set the topmost bits
         that don't matter.  This way, we might be able to get a shorter
         signed constant.  */
       if (mask & ((HOST_WIDE_INT)1 << 31 - total_shift))
        mask |= (HOST_WIDE_INT)~0 << (31 - total_shift);
+    case 2:
       /* Don't expand fine-grained when combining, because that will
          make the pattern fail.  */
       if (rtx_equal_function_value_matters
@@ -1349,6 +1349,10 @@ gen_shl_and (dest, left_rtx, mask_rtx, source)
        {
          rtx operands[3];
   
+         /* Cases 3 and 4 should be handled by this split
+            only while combining  */
+         if (kind > 2)
+           abort ();
          if (right)
            {
              emit_insn (gen_lshrsi3 (dest, source, GEN_INT (right)));
This page took 0.074931 seconds and 5 git commands to generate.