* arm.c (thumb_legitimate_addres_p): Allow any constant offset
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Nov 2006 14:26:34 +0000 (14:26 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Nov 2006 14:26:34 +0000 (14:26 +0000)
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

gcc/ChangeLog
gcc/config/arm/arm.c

index e6d68f9..d77ae3e 100644 (file)
@@ -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
index 6527f55..4342c46 100644 (file)
@@ -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)