This is the mail archive of the gcc-bugs@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]

Re: Combine error?


> 
>   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.



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