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


The IA-64 builds are dying in ia64_reorg.  The IA-64 port calls into the
scheduler to help emit ia64 specific info such as stop bits, padding nops,
and bundle selection info.  This stuff naturally needs to go between basic
block boundaries.  Trying to fit this stuff into the CFG doesn't seem like
a good idea, since then we need machine dependent info in the CFG code.
This also changes some assumptions in the CFG code.  For instance, a basic
block may not end with a control flow instruction, but rather with the
stop bits or padding nops emitted after the branch that would normally end the
basic block.  It seems reasonable that the machine dependent pass would emit
stuff that can't be understood by the generic CFG code.

A possible solution here is to add another option to schedule_ebbs, e.g.
verify_cfg.  Then pass in true everywhere except the call from ia64_reorg
which passes in false.

Another solution would be to teach verify_flow_info to ignore certain
machine dependent instructions which it doesn't need to know about.
Perhaps a new machine independent attribute to mark out-of-band instructions
that aren't part of the CFG.  This would allow us to still run verify_flow_info
but doesn't let us run any CFG based optimizations when out-of-band insns
are present.  Or perhaps use something other than an INSN for these insns,
such as new special machine dependent NOTEs.  The above solution, e.g. not
calling verify_flow_info in this special case, is a lot easier to implement.

While looking at this, I noticed that there are some new rtl features that
aren't documented.  Both BLOCK_FOR_INSN and INSN_SCOPE are undocumented.
There should be short comments in rtl.h explaining what these are for, just
like for all of the other rtl fields.

Jim


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