/* { dg-do run } */ typedef long long V __attribute__ ((vector_size (2 * sizeof (long long)), may_alias)); struct s { char u; V v[2]; } __attribute__((packed,aligned(1))); __attribute__((noinline, noclone)) long long foo(struct s *x, int y, V *z) { V a = x->v[y]; x->v[y] = *z; return a[1]; } struct s a = {0,{{0,0},{0,0}}}; int main() { V v1 = {0,1}; V v2 = {0,2}; if (foo(&a,0,&v1) != 0) __builtin_abort(); if (foo(&a,0,&v2) != 1) __builtin_abort(); if (foo(&a,1,&v1) != 0) __builtin_abort(); return 0; }