This is the mail archive of the
mailing list for the GCC project.
Re: RFA: patch cheking dangerous insns in sched-ebb.c
Richard Henderson wrote:
> On Thu, Feb 20, 2003 at 04:04:57PM -0500, Vladimir Makarov wrote:
> > > It isn't sufficient to depend on only the jump insn?
> > It is additional links to prevent speculative move.
Sorry for inaccuracy. I meant speculative move for *some* insns.
> I repeat my question: How can an insn be moved before the
> jump if it's dependant on it?
It can't. I add dependence not for all insns but for insns which can
cause an exception (they are TRAP_RISKY, IRISKY, PRISKY_CANDIDATE and
some PFREE_CANDIDATEs). TRAP_FREE, IFREE and some PFREE_CANDIDATEs can
be moved through the jump, in order words speculatively (of course if
they do not kill values on split edges in haifa scheduler sense. That
was implemented in sched-ebb).
Actually, the code is analog of sched-rgn.c (except for dangerous
speculative load insn moving which is not implemented yet because nobody
uses it now). The code in sched-rgn.c checks it during scheduling block
itself (can insn be moved speculatively or not? it is analog of moving
insn through the jump in ebb). The patch achieves it through additional
dependencies for *some* insns to jump insn. Ebb is simpler than haifa
scheduler region: each block is a split block, each non through fall
edge is a split edge. Therefore the code is simpler than the one in
Have I answered your question? I asked it because I have suspicion that
I did not understand it again. Sorry.