This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: IA64 bootstrap failure
>I've been looking at the code and what happens is that scheduler updates
>CFG and then IA-64 hook jumps in and messes it up. I can fix that in
>case this is usefull for IA-64 port.
It is more complicated than that. The IA-64 port adds instructions to carry
out-of-band info that the CFG code doesn't understand.
For instance, search for control_flow_insn_p in verify_flow_info. It calls
error if it finds a control flow insn inside a basic block. However, if
you add the special IA-64 insns into the CFG, then we can have padding nops
and/or stop bits after a control flow insn. There is a fundamental conflict
here. Either we no longer end a basic block with a branch, or we stop using
regular insns for this info, or we don't put the special IA-64 isnsns into the
CFG. I think the first option is a bad choice, and I don't see any real
benefit to the second choice, so the third option seems best for now. Thus
I think we just need to avoid calling verify_flow_info during or after
MACHINE_DEPENDENT_REORG.
I suppose building the CFG wrong to make verify_flow_info happy is another
choice, but I also think that is a bad choice.
Jim