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