Hi FX,

I missed that op points still on the memory here.  So corrected patch
is inlined below.

Kai

Index: predicates.md
===================================================================
--- predicates.md       (Revision 215364)
+++ predicates.md       (Arbeitskopie)
@@ -73,9 +73,18 @@

 ;; Return true if OP is a memory operands that can be used in sibcalls.
 (define_predicate "sibcall_memory_operand"
-  (and (match_operand 0 "memory_operand")
-       (match_test "CONSTANT_P (XEXP (op, 0))")))
+  (match_operand 0 "memory_operand")
+{
+  op = XEXP (op, 0);

+  if (TARGET_MACHO && TARGET_64BIT
+      && GET_CODE (op) == CONST
+      && GET_CODE (XEXP (op, 0)) == UNSPEC
+      && XINT (XEXP (op, 0), 1) == UNSPEC_GOTPCREL)
+    return false;
+  return CONSTANT_P (op);
+})
+
 ;; Match an SI or HImode register for a zero_extract.
 (define_special_predicate "ext_register_operand"
   (match_operand 0 "register_operand")

Reply via email to