sibcall bootstrap problems on i386
Alasdair Baird
alasdair@wildcat.demon.co.uk
Sun Mar 19 06:06:00 GMT 2000
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);
More information about the Gcc-bugs
mailing list