1 /* { dg-do run } */
2 /* { dg-options "-fschedule-insns" } */
3 /* { dg-require-effective-target scheduling } */
4 
5 extern void abort (void) __attribute__((noreturn));
6 
7 struct B { int a; int b;};
8 struct wrapper {
9 union setconflict
10 {
11   struct S { char one1; struct B b1; } s;
12   struct T { struct B b2; char two2; } t;
13 } a;
14 };
15 
16 int
main()17 main ()
18 {
19   int sum = 0;
20   int i;
21   struct wrapper w;
22   struct B *p;
23 
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;
29 
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;
35 
36   if (sum != 1)
37     abort();
38   return 0;
39 }
40