Removing unnecessary ADDR_EXPRs
Richard Guenther
richard.guenther@gmail.com
Tue May 17 20:29:00 GMT 2005
On 5/17/05, Jeffrey A Law <law@redhat.com> wrote:
> On Tue, 2005-05-17 at 21:42 +0200, Richard Guenther wrote:
> > On 5/17/05, Jeffrey A Law <law@redhat.com> wrote:
> > > Can you dump the types of the outer INDIRECT_REF, the ADDR_EXPR and
> > > the first argument to the ADDR_EXPR? The only way I can see folding
> > > failing is if there's a type bogosity somewhere. I've instrumented that
> > > code locally, but haven't managed to make it trip yet.
> >
> > Sorry to followup again, but I suppose I merely trigger a latent bug elsewhere.
> > Actually, during rewrite_into_ssa we call parse_ssa_operands on
> > (&<retval>)->_M_stateD.32454 = __stD.41263 which finally calls
> > get_indirect_ref_operands with the above stmt and expr = *&<retval>
> > It isn't expecting an expr of this form, unfortunately. So it looks something
> > before rewrite_into_ssa is producing non-gimple? Actually changing all
> > fold_indirect_ref in tree-inline.c to fold_indirect_ref_rhs fixes the problem.
>
> Hmmm, we might be better off if you can send me whatever tweaks you've
> got in your tree. There's most likely a type issue somewhere that's
> causing these problems, but it's going to be bloody hard to find via
> email :-)
I have installed the patch contained in
http://gcc.gnu.org/ml/gcc-patches/2005-05/msg01689.html
and the one referenced therein (which is the one that causes
the failure).
Effectively using fold_indirect_ref_rhs from the first patch in all
places tree-inline.c now uses fold-const.cs fold_indirect_ref fixes
the issue. As we do not re-gimplify after inlining, a failure to
fold is fatal.
Richard.
More information about the Gcc-patches
mailing list