File nov480052.diff of Package gcc41
2007-06-28 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
decl is non-external for AIX ABI.
2007-06-28 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/predicates.md (current_file_function_operand):
Ensure the symbol is non-external for AIX ABI.
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c.orig 2009-11-20 13:41:27.000000000 +0100
+++ gcc/config/rs6000/rs6000.c 2009-11-20 13:41:39.000000000 +0100
@@ -13332,7 +13332,8 @@ rs6000_function_ok_for_sibcall (tree dec
}
}
if (DEFAULT_ABI == ABI_DARWIN
- || (*targetm.binds_local_p) (decl))
+ || ((*targetm.binds_local_p) (decl)
+ && (DEFAULT_ABI != ABI_AIX || !DECL_EXTERNAL (decl))))
{
tree attr_list = TYPE_ATTRIBUTES (TREE_TYPE (decl));
Index: gcc/config/rs6000/predicates.md
===================================================================
--- gcc/config/rs6000/predicates.md.orig 2006-12-09 12:10:59.000000000 +0100
+++ gcc/config/rs6000/predicates.md 2009-11-20 13:41:39.000000000 +0100
@@ -691,7 +691,9 @@
(define_predicate "current_file_function_operand"
(and (match_code "symbol_ref")
(match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
- && (SYMBOL_REF_LOCAL_P (op)
+ && ((SYMBOL_REF_LOCAL_P (op)
+ && (DEFAULT_ABI != ABI_AIX
+ || !SYMBOL_REF_EXTERNAL_P (op)))
|| (op == XEXP (DECL_RTL (current_function_decl),
0)))")))