This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
sibcall bootstrap problems on i386
- To: gcc-bugs at gcc dot gnu dot org
- Subject: sibcall bootstrap problems on i386
- From: Alasdair Baird <alasdair at wildcat dot demon dot co dot uk>
- Date: Sun, 19 Mar 2000 14:06:32 +0000 (GMT)
I have been seeing problems (a segv) building a stage1 gcc
with the latest sibcall code on an Intel platform. It seems
that jump optimisation is deleting the label at the top of a
function that is required as a target for a tail call---it
is certainly there in the .rtl file but not in the .jump one.
I can fix it by the change that follows, though I anticipate
the real cure is elsewhere.
Alasdair.
*** sibcall.c.orig Sun Mar 19 11:05:10 2000
--- sibcall.c Sun Mar 19 13:51:47 2000
*************** replace_call_placeholder (insn, use)
*** 341,351 ****
--- 341,353 ----
else
abort();
+ #if 0
/* Turn off LABEL_PRESERVE_P for the tail recursion label if it
exists. We only had to set it long enough to keep the jump
pass above from deleting it as unused. */
if (XEXP (PATTERN (insn), 3))
LABEL_PRESERVE_P (XEXP (PATTERN (insn), 3)) = 0;
+ #endif
/* "Delete" the placeholder insn. */
PUT_CODE (insn, NOTE);