blob: 92b8809907fa0949c97f30ff5086052e3c34efc2 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-fschedule-insns" } */
/* { dg-require-effective-target scheduling } */
extern void abort (void) __attribute__((noreturn));
struct B { int a; int b;};
struct wrapper {
union setconflict
{
struct S { char one1; struct B b1; } s;
struct T { struct B b2; char two2; } t;
} a;
};
int
main ()
{
int sum = 0;
int i;
struct wrapper w;
struct B *p;
p = &w.a.s.b1;
asm ("": "=r" (p):"0" (p));
p->a = 0;
asm ("": "=r" (p):"0" (p));
sum += p->a;
p = &w.a.t.b2;
asm ("": "=r" (p):"0" (p));
p->b = 1;
asm ("": "=r" (p):"0" (p));
sum += p->b;
if (sum != 1)
abort();
return 0;
}