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