aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c7dccbd..50ac07f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-02 Nicolas Pitre <nico@cam.org>
+
+ * config/arm/arm.c (arm_legitimize_address): Limit the value passed
+ to bit_count to 32 bits.
+
2005-08-31 Mark Mitchell <mark@codesourcery.com>
PR c++/23167
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 128edb6..7df3aba 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3772,7 +3772,7 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
mask = (1 << bits) - 1;
base = INTVAL (x) & ~mask;
index = INTVAL (x) & mask;
- if (bit_count (base) > (32 - bits)/2)
+ if (bit_count (base & 0xffffffff) > (32 - bits)/2)
{
/* It'll most probably be more efficient to generate the base
with more bits set and use a negative index instead. */