From f36193386b67c514b709fba7155e306a1b1559b2 Mon Sep 17 00:00:00 2001
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 17 Apr 2000 14:49:41 +0000
Subject: [PATCH] 	* config/sparc/sparc.c (eligible_for_sibcall_delay):
 Cannot use 	leaf sibcall delay slot if flag_pic. 	(output_sibcall):
 Always emit call for leaf sibcall if flag_pic.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33210 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog            | 9 ++++++++-
 gcc/config/sparc/sparc.c | 4 ++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a2acff67f2b2..f400c9547cbb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/sparc/sparc.c (eligible_for_sibcall_delay): Cannot use
+	leaf sibcall delay slot if flag_pic.
+	(output_sibcall): Always emit call for leaf sibcall if flag_pic.
+
 2000-04-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* Makefile.in (stmp-fixproto): Acknowledge errors in fixproto.
@@ -44,7 +50,8 @@ Mon Apr 17 14:59:36 MET DST 2000  Jan Hubicka  <jh@suse.cz>
 	(ASM_OUTPUT_CASE_END): New, put assembler back into code CSECT.
 	(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Remove page check,
 	since vector in in the data CSECT.
-	(ASM_OUTPUT_REG_POP, ASM_OUTPUT_REG_PUSH): Restore to correct operation.        * i370.md (Many patterns): Put the length in the XL directives.
+	(ASM_OUTPUT_REG_POP, ASM_OUTPUT_REG_PUSH): Restore to correct operation.
+        * i370.md (Many patterns): Put the length in the XL directives.
 	(movdi): Put back STM and MVC in definition.
 	(floatsidf2): Correct TARGET_ELF_ABI pattern and add back the LE370
 	pattern using the TCA.
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 557079695ec7..a2b75121d3ad 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2504,7 +2504,7 @@ eligible_for_sibcall_delay (trial)
     {
       /* If the tail call is done using the call instruction,
 	 we have to restore %o7 in the delay slot.  */
-      if (TARGET_ARCH64 && ! TARGET_CM_MEDLOW)
+      if ((TARGET_ARCH64 && ! TARGET_CM_MEDLOW) || flag_pic)
 	return 0;
 
       /* %g1 is used to build the function address */
@@ -3735,7 +3735,7 @@ output_sibcall (insn, call_operand)
 
   if (leaf_regs)
     {
-      int spare_slot = (TARGET_ARCH32 || TARGET_CM_MEDLOW);
+      int spare_slot = ((TARGET_ARCH32 || TARGET_CM_MEDLOW) && ! flag_pic);
       int size = 0;
 
       if ((actual_fsize || ! spare_slot) && delay_slot)
-- 
GitLab