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