On 09/11/2012 04:33 PM, Steve Ellcey wrote:
In some configuration files there is comment that says that the variable
tracking pass should be run after all optimizations which change the order
of instructions and that it requires a valid control flow graph to work.
But my understanding of the delay slot pass is that it can change the order
of instructions and that it can only be run after the control flow graph has
been freed.
It changes the order of instructions, but IIRC it leaves a little
breadcrumb in the instruction's original position. No idea of
var-tracking would utilize that breadcrumb.
reorg clobbers the CFG as well.
These requirements seem to conflict. Am I right about this or are the
comments wrong or am I confused? I think this problem is the basis of
bug 54128, a bootstrap failure on MIPS, though the problem seems generic
to any system with delay slots.
I haven't looked at 54128, but yes, I think you're generally right about
the conflict. Not sure what the implications are in terms of the
failure mode -- it would seem to me that we wouldn't get good debug
info. However, I'm not sure offhand how it'd cause a boostrap error.
jeff