diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2006-11-04 14:26:34 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2006-11-04 14:26:34 +0000 |
commit | c5289e454b2097834bece1843af3bb1f6758eac3 (patch) | |
tree | 5b55107ca44ec4aa139377da16f5cb8fb70e48cd | |
parent | 50d0a8992057ecbdba55856213dc24131cb63bd5 (diff) | |
download | gcc-c5289e454b2097834bece1843af3bb1f6758eac3.zip gcc-c5289e454b2097834bece1843af3bb1f6758eac3.tar.gz gcc-c5289e454b2097834bece1843af3bb1f6758eac3.tar.bz2 |
arm.c (thumb_legitimate_addres_p): Allow any constant offset from the soft-frame, argument and virtual registers.
* arm.c (thumb_legitimate_addres_p): Allow any constant offset
from the soft-frame, argument and virtual registers.
From-SVN: r118481
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e6d68f9..d77ae3e 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 6527f55..4342c46 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) |