This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Combine error?
- To: law at cygnus dot com
- Subject: Re: Combine error?
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Tue, 21 Mar 2000 07:02:11 +0000
- Cc: Jason Eckhardt <jle at cygnus dot com>, gcc-bugs at gcc dot gnu dot org, gcc at gcc dot gnu dot org
- Cc: rearnsha at arm dot com
- Organization: ARM Ltd.
- Reply-To: rearnsha at arm dot com
>
> 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.