On Wed, Dec 10, 2014 at 12:33:52AM +0300, Evgeny Stupachenko wrote: > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/blend.c > @@ -0,0 +1,61 @@ > +/* Test correctness of size 3 store groups permutation. */ > +/* { dg-do run } */ > +/* { dg-options "-O3" } */ > + > +#define N 50 > + > +enum num3 > +{ > + a, b, c > +}; > + > +struct flags > +{ > + enum num3 f;
Does this really has to be an enum? Doesn't unsigned int there work the same? > +int main() > +{ > + int i; > + long long *rr = (long long *)q[0].a; > + bar(2, q); > + for (i = 0; i < N * 2; i += 2) > + if (rr[i] == -1 && rr[i + 1] == -1) This is aliasing violation, can't you avoid that? I mean, just check the individual struct flags fields? And with the aliasing violation fixed, is there anything i?86 specific left in the testcase (i.e. shouldn't it go either to gcc.dg/ or gcc.c-torture/execute/ instead?)? Jakub