1 /* { dg-do run } */
2
3 typedef long long V
4 __attribute__ ((vector_size (2 * sizeof (long long)), may_alias));
5
6 struct s
7 {
8 char u;
9 V v[2];
10 } __attribute__((packed,aligned(1)));
11
12 __attribute__((noinline, noclone))
foo(struct s * x,int y,V * z)13 long long foo(struct s *x, int y, V *z)
14 {
15 V a = x->v[y];
16 x->v[y] = *z;
17 return a[1];
18 }
19
20 struct s a = {0,{{0,0},{0,0}}};
main()21 int main()
22 {
23 V v1 = {0,1};
24 V v2 = {0,2};
25
26 if (foo(&a,0,&v1) != 0)
27 __builtin_abort();
28 if (foo(&a,0,&v2) != 1)
29 __builtin_abort();
30 if (foo(&a,1,&v1) != 0)
31 __builtin_abort();
32 return 0;
33 }
34