This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]