aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@cygnus.com>1999-02-16 09:56:37 +0000
committerNick Clifton <nickc@gcc.gnu.org>1999-02-16 09:56:37 +0000
commitd462a870b73d19c262574cb3ae2c7a72b5b93ecf (patch)
treeb89fdd7772419bfb8354ce7e0b923f7598f21c89
parente227e48809d12397866374aed93d702a2c1d8ddd (diff)
downloadgcc-d462a870b73d19c262574cb3ae2c7a72b5b93ecf.zip
gcc-d462a870b73d19c262574cb3ae2c7a72b5b93ecf.tar.gz
gcc-d462a870b73d19c262574cb3ae2c7a72b5b93ecf.tar.bz2
Fix PlumHall failure - encure that bitfield in zero_extract:QI does not
span a byte boundary. From-SVN: r25237
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.md5
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b6b1ba2..98e194f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index a207911..b9241c8 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -1214,8 +1214,8 @@
(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;
@@ -1224,7 +1224,6 @@
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 \"\";
}