This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/29680] Misscompilation of spec2006 gcc
- From: "rakdver at atrey dot karlin dot mff dot cuni dot cz" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Nov 2006 08:05:14 -0000
- Subject: [Bug tree-optimization/29680] Misscompilation of spec2006 gcc
- References: <bug-29680-5077@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #5 from rakdver at atrey dot karlin dot mff dot cuni dot cz 2006-11-01 08:05 -------
Subject: Re: Misscompilation of spec2006 gcc
> > ------- Comment #3 from rakdver at gcc dot gnu dot org 2006-11-01 00:49 -------
> > access_can_touch_variable determines that fde_13->dw_fde_cfi cannot touch
> > cie_cfi_head; the list of virtual operands of the load thus becomes empty, and
> > we insert SMT.48 for it.
> >
> > On *p, we cannot eliminate cie_cfi_head, and since the condition for insertion
> > of SMT is formulated as
> >
> > ...
> > ||none_added
> > || (TREE_CODE (var) == SYMBOL_MEMORY_TAG
> > && for_clobber
> > && SMT_USED_ALONE (var)))
> >
> > and for_clobber is only true on call operands, we do not insert SMT. The lists
> > of virtual operands thus become disjoint.
> We should not insert the SMT here.
> We are never supposed to use a bare SMT when it has aliases that we
> can use (IE something has not been pruned).
but fde_13->dw_fde_cfi does not have any other aliases that can be used,
i.e., none_added is true.
> I will work around this problem by teaching PTA about casts from
> nonpointers to pointers, which will cause it to end up with a nonlocal
> var in the set.
??? There is no cast from non-pointer to pointer in this testcase.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29680