aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2007-06-28 13:28:13 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2007-06-28 13:28:13 +0200
commit8aa19d9599d3d64501a13478a034a7bc14f6b502 (patch)
tree53eb8bf79e1d1ceee72e95420a187af84aa3f666
parentf803eba859ecf68e909f17cfa2138f99da811804 (diff)
downloadgcc-8aa19d9599d3d64501a13478a034a7bc14f6b502.zip
gcc-8aa19d9599d3d64501a13478a034a7bc14f6b502.tar.gz
gcc-8aa19d9599d3d64501a13478a034a7bc14f6b502.tar.bz2
[multiple changes]
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. From-SVN: r126076
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/rs6000/predicates.md4
-rw-r--r--gcc/config/rs6000/rs6000.c3
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cb9878e..81a57a8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+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.
+
2007-06-28 Nick Clifton <nickc@redhat.com>
* common.opt (fipa-matrix-reorg): Add Optimization attribute.
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 5f4b233..3b54aed 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -696,7 +696,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)))")))
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 035d655..f9bca50 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -13938,7 +13938,8 @@ rs6000_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
}
}
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));