1  /* PR tree-optimization/93945 */
       2  
       3  union U { char a[8]; struct S { unsigned int b : 8, c : 13, d : 11; } e; } u;
       4  
       5  __attribute__((noipa)) int
       6  foo (void)
       7  {
       8    __builtin_memset (&u.a, 0xf4, sizeof (u.a));
       9    return u.e.c;
      10  }
      11  
      12  __attribute__((noipa)) int
      13  bar (void)
      14  {
      15    asm volatile ("" : : "g" (&u) : "memory");
      16    return u.e.c;
      17  }
      18  
      19  __attribute__((noipa)) int
      20  baz (void)
      21  {
      22    __builtin_memset (&u.a, 0xf4, sizeof (u.a));
      23    return u.e.d;
      24  }
      25  
      26  __attribute__((noipa)) int
      27  qux (void)
      28  {
      29    asm volatile ("" : : "g" (&u) : "memory");
      30    return u.e.d;
      31  }
      32  
      33  int
      34  main ()
      35  {
      36    int a = foo ();
      37    int b = bar ();
      38    if (a != b)
      39      __builtin_abort ();
      40    a = baz ();
      41    b = qux ();
      42    if (a != b)
      43      __builtin_abort ();
      44    return 0;
      45  }