2013-10-21 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / alias-1.c
blob92b8809907fa0949c97f30ff5086052e3c34efc2
1 /* { dg-do run } */
2 /* { dg-options "-fschedule-insns" } */
3 /* { dg-require-effective-target scheduling } */
5 extern void abort (void) __attribute__((noreturn));
7 struct B { int a; int b;};
8 struct wrapper {
9 union setconflict
11 struct S { char one1; struct B b1; } s;
12 struct T { struct B b2; char two2; } t;
13 } a;
16 int
17 main ()
19 int sum = 0;
20 int i;
21 struct wrapper w;
22 struct B *p;
24 p = &w.a.s.b1;
25 asm ("": "=r" (p):"0" (p));
26 p->a = 0;
27 asm ("": "=r" (p):"0" (p));
28 sum += p->a;
30 p = &w.a.t.b2;
31 asm ("": "=r" (p):"0" (p));
32 p->b = 1;
33 asm ("": "=r" (p):"0" (p));
34 sum += p->b;
36 if (sum != 1)
37 abort();
38 return 0;