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
      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  }