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	(revision 126077)
+++ gcc/config/rs6000/rs6000.c	(revision 126078)
@@ -13327,7 +13327,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	(revision 126077)
+++ gcc/config/rs6000/predicates.md	(revision 126078)
@@ -691,7 +691,9 @@ (define_predicate "call_operand"
 (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)))")))
 
openSUSE Build Service is sponsored by