Combine error?
Richard Earnshaw
rearnsha@arm.com
Mon Mar 20 23:02:00 GMT 2000
>
> In message < 200003201600.QAA11765@cam-mail2.cambridge.arm.com >you write:
> > Nick Clifton posted a patch to do exactly that. I objected because I
> > thought that it was wrong for a log-link to point to a note (it happens
> > because flow has converted the insn pointed to into a pre/post operand in
> > another insn, but hasn't updated the link). However, I thought Jeff had
> > over-ruled on this one and said the patch was OK; but it doesn't seem to
> > have got any further than that.
> I didn't remember a final resolution on whether or not we should try to
> kill the dead LOG_LINKS or just handle them.
I don't think the discussion got any further than two opinions :-(
> I would think the only way we could get dead LOG_LINK pointers would be
> due to the optimization phase of flow (auto-inc, dead code elimination
> and the like) or due to combine's actions. So it may be possible to avoid
> the dead links. I really don't know.
AFAIK, the auto-inc optimizations are the only source of this problem.
LOG_LINKS always point backwards within a single BB; and dead-code
elimination will only remove code to the end of a BB (ie it won't remove
some code from a BB without removing all code to the end of that block)
[err, actually, won't it only remove whole blocks?]. Combine also can't
create such anomalies because it only works on insns that have a single
subsequent use.
So I believe the problem can only occur in the auto-inc code (which is why
only some ports see this problem when checking is enabled).
R.
More information about the Gcc
mailing list