modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr79737-2.c (about)

     1  /* PR tree-optimization/79737 */
     2  
     3  #if __SIZEOF_INT__ < 4
     4    __extension__ typedef __INT32_TYPE__ int32_t;
     5  #else
     6    typedef int int32_t;
     7  #endif
     8  
     9  #pragma pack(1)
    10  struct S
    11  {
    12    int32_t b:18;
    13    int32_t c:1;
    14    int32_t d:24;
    15    int32_t e:15;
    16    int32_t f:14;
    17  } i, j;
    18  
    19  void
    20  foo ()
    21  {
    22    i.e = 0;
    23    i.b = 5;
    24    i.c = 0;
    25    i.d = -5;
    26    i.f = 5;
    27  }
    28  
    29  void
    30  bar ()
    31  {
    32    j.b = 5;
    33    j.c = 0;
    34    j.d = -5;
    35    j.e = 0;
    36    j.f = 5;
    37  }
    38  
    39  int
    40  main ()
    41  {
    42    foo ();
    43    bar ();
    44    asm volatile ("" : : : "memory");
    45    if (i.b != j.b || i.c != j.c || i.d != j.d || i.e != j.e || i.f != j.f)
    46      __builtin_abort ();
    47  }