arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb code.
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 31 Oct 2003 21:42:23 +0000 (21:42 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 31 Oct 2003 21:42:23 +0000 (21:42 +0000)
* arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb
code.

From-SVN: r73157

gcc/ChangeLog
gcc/config/arm/arm.h

index e253ebe67d4fa8327e44e4ae7c5c91adee23175a..4013338221c31845245c9aaf6e10ea20af80f202 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-31  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb
+       code.
+
 2003-10-31  Andreas Jaeger  <aj@suse.de>, 
             Zack Weinberg  <zack@codesourcery.com>            
 
index 0cb1562e636fb3372123bb650892c2756d69fa95..e73df85e347cd95447161265beeee795f3bb30ec 100644 (file)
@@ -959,6 +959,12 @@ extern const char * structure_size_string;
        fixed_regs[regno] = call_used_regs[regno] = 1;          \
     }                                                          \
                                                                \
+  /* The link register can be clobbered by any branch insn,    \
+     but we have no way to track that at present, so mark      \
+     it as unavailable.  */                                    \
+  if (TARGET_THUMB)                                            \
+    fixed_regs[LR_REGNUM] = call_used_regs[LR_REGNUM] = 1;     \
+                                                               \
   if (TARGET_CIRRUS)                                           \
     {                                                          \
       for (regno = FIRST_ARM_FP_REGNUM;                                \