summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2006-11-04 14:26:34 +0000
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2006-11-04 14:26:34 +0000
commit2e9ff3c063db4fd5d03869a1a06bf819df7dbeb6 (patch)
tree5b55107ca44ec4aa139377da16f5cb8fb70e48cd /gcc
parenta348d0386f8d25264c6133c3393f87cc94865838 (diff)
downloadppe42-gcc-2e9ff3c063db4fd5d03869a1a06bf819df7dbeb6.tar.gz
ppe42-gcc-2e9ff3c063db4fd5d03869a1a06bf819df7dbeb6.zip
* arm.c (thumb_legitimate_addres_p): Allow any constant offset
from the soft-frame, argument and virtual registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118481 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e6d68f92754..d77ae3e67df 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-04 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (thumb_legitimate_addres_p): Allow any constant offset
+ from the soft-frame, argument and virtual registers.
+
2006-11-04 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (*movxf_nointeger, *movxf_integer): Enable
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 6527f5556da..4342c4682f2 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3799,7 +3799,10 @@ thumb_legitimate_address_p (enum machine_mode mode, rtx x, int strict_p)
return 1;
else if (GET_CODE (XEXP (x, 0)) == REG
- && REGNO (XEXP (x, 0)) == FRAME_POINTER_REGNUM
+ && (REGNO (XEXP (x, 0)) == FRAME_POINTER_REGNUM
+ || REGNO (XEXP (x, 0)) == ARG_POINTER_REGNUM
+ || (REGNO (XEXP (x, 0)) >= FIRST_VIRTUAL_REGISTER
+ && REGNO (XEXP (x, 0)) <= LAST_VIRTUAL_REGISTER))
&& GET_MODE_SIZE (mode) >= 4
&& GET_CODE (XEXP (x, 1)) == CONST_INT
&& (INTVAL (XEXP (x, 1)) & 3) == 0)
OpenPOWER on IntegriCloud