aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2000-04-17 16:49:41 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2000-04-17 16:49:41 +0200
commit2be5e524b0ce96881e40a84d0355f40edd82e07e (patch)
treeb1e4321d352665efa9204292a144b9132c825282 /gcc/config/sparc/sparc.c
parent130bfbdd7a19f08c318c8a888027d24e6e8fbfa1 (diff)
downloadgcc-2be5e524b0ce96881e40a84d0355f40edd82e07e.zip
gcc-2be5e524b0ce96881e40a84d0355f40edd82e07e.tar.gz
gcc-2be5e524b0ce96881e40a84d0355f40edd82e07e.tar.bz2
sparc.c (eligible_for_sibcall_delay): Cannot use leaf sibcall delay slot if flag_pic.
* 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. From-SVN: r33210
Diffstat (limited to 'gcc/config/sparc/sparc.c')
-rw-r--r--gcc/config/sparc/sparc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 5570796..a2b7512 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)