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

Reply via email to