On Fri, 2005-04-08 at 18:58 +0200, Jakub Jelinek wrote: > On Fri, Apr 08, 2005 at 10:52:02AM -0600, Jeffrey A Law wrote: > > There's a rather annoying bug in the vectorizer which can cause us to > > have SSA_NAMEs which are used, but never defined. > > > > Consider this testcase compiled with -msse2 -ftree-vectorize: > > > > typedef char achar __attribute__ ((__aligned__(16))); > > int main1 () > > { > > struct { > > achar *p; > > achar *q; > > } s; > > int i; > > achar x[16]; > > achar cb[16]; > > s.p = x; > > i = 0; > > do > > { > > s.p[i] = cb[i]; > > i++; > > } while (i < 16); > > > > if (s.p[0]) > > abort (); > > } > > See middle-end/20794, there is discussion about declaring this > invalid. When a type with size that is not an integral multiple > of alignment (e.g. smaller size than alignment) is used in an > array, we have the choice either to violate the alignment > request for second and some subsequent array elements, > or make the elements bigger, but then pointer arithmetics > won't work very well. But is that likely the cause for getting a different set of virtual operands for the scalar and vector versions of the store? That's the real problem here.
jeff