OSDN Git Service

PR target/23783
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Oct 2005 12:43:17 +0000 (12:43 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Oct 2005 12:43:17 +0000 (12:43 +0000)
* arm.md (call): If the address isn't a SYMBOL_REF or a register,
then force it into a register.
(call_value): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105032 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.md

index 30d4aff..702ad28 100644 (file)
@@ -1,3 +1,10 @@
+2005-10-06  Richard Earnshaw  <richard.earnshaw@arm.com>
+
+       PR target/23783
+       * arm.md (call): If the address isn't a SYMBOL_REF or a register,
+       then force it into a register.
+       (call_value): Likewise.
+
 2005-10-06  Richard Henderson  <rth@redhat.com>
 
        PR 24049
index b60ccb7..76eb12b 100644 (file)
        invoked it.  */
     callee  = XEXP (operands[0], 0);
     
-    if (GET_CODE (callee) != REG
-       && arm_is_longcall_p (operands[0], INTVAL (operands[2]), 0))
+    if ((GET_CODE (callee) == SYMBOL_REF
+        && arm_is_longcall_p (operands[0], INTVAL (operands[2]), 0))
+       || (GET_CODE (callee) != SYMBOL_REF
+           && GET_CODE (callee) != REG))
       XEXP (operands[0], 0) = force_reg (Pmode, callee);
   }"
 )
       operands[3] = const0_rtx;
       
     /* See the comment in define_expand \"call\".  */
-    if (GET_CODE (callee) != REG
-       && arm_is_longcall_p (operands[1], INTVAL (operands[3]), 0))
+    if ((GET_CODE (callee) == SYMBOL_REF
+        && arm_is_longcall_p (operands[1], INTVAL (operands[3]), 0))
+       || (GET_CODE (callee) != SYMBOL_REF
+           && GET_CODE (callee) != REG))
       XEXP (operands[1], 0) = force_reg (Pmode, callee);
   }"
 )