Fix PlumHall failure - encure that bitfield in zero_extract:QI does not
authorNick Clifton <nickc@cygnus.com>
Tue, 16 Feb 1999 09:56:37 +0000 (09:56 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Tue, 16 Feb 1999 09:56:37 +0000 (09:56 +0000)
span a byte boundary.

From-SVN: r25237

gcc/ChangeLog
gcc/config/arm/arm.md

index b6b1ba2aae22b06c235f6238fab2e2d76100dc2b..98e194f94281dc2aad0eb4027ce2c51dd89481be 100644 (file)
@@ -1,3 +1,8 @@
+Tue Feb 16 09:52:26 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.md (zeroextractqi_compare0_scratch): Ensure that
+       bitfield doe snot overflow a byte boundary.
+
 Tue Feb 16 01:37:33 1999  Charles G Waldman  <cgw@alum.mit.edu>
 
        * c-common.c (shorten_compare): Get the min/max value from the
index a2079118d1aa695bc7d9c648f47536f8ac799e5f..b9241c8432e0aa06d393163d631c3a242f0fe388 100644 (file)
                          (match_operand 2 "const_int_operand" "n"))
                         (const_int 0)))
    (clobber (match_scratch:QI 3 "=r"))]
-  "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) < 8
-   && INTVAL (operands[1]) > 0 && INTVAL (operands[1]) <= 8"
+  "INTVAL (operands[2]) >= 0 && INTVAL (operands[1]) > 0 &&
+  ((INTVAL (operands[1]) + INTVAL (operands[2])) <= 8)"
   "*
 {
   unsigned int mask = 0;
   while (cnt--)
     mask = (mask << 1) | 1;
   operands[1] = GEN_INT (mask << INTVAL (operands[2]));
-  output_asm_insn (\"ldr%?b\\t%3, %0\", operands);
   output_asm_insn (\"tst%?\\t%3, %1\", operands);
   return \"\";
 }