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

     1  typedef __SIZE_TYPE__ size_t;
     2  extern void *memcpy (void *__restrict, const void *__restrict, size_t);
     3  extern void abort (void);
     4  extern void exit (int);
     5  
     6  typedef struct t
     7  {
     8    unsigned a : 16;
     9    unsigned b : 8;
    10    unsigned c : 8;
    11    long d[4];
    12  } *T;
    13  
    14  typedef struct {
    15    long r[3];
    16  } U;
    17  
    18  T bar (U, unsigned int);
    19  
    20  T foo (T x)
    21  {
    22    U d, u;
    23  
    24    memcpy (&u, &x->d[1], sizeof u);
    25    d = u;
    26    return bar (d, x->b);
    27  }
    28  
    29  T baz (T x)
    30  {
    31    U d, u;
    32  
    33    d.r[0] = 0x123456789;
    34    d.r[1] = 0xfedcba987;
    35    d.r[2] = 0xabcdef123;
    36    memcpy (&u, &x->d[1], sizeof u);
    37    d = u;
    38    return bar (d, x->b);
    39  }
    40  
    41  T bar (U d, unsigned int m)
    42  {
    43    if (d.r[0] != 21 || d.r[1] != 22 || d.r[2] != 23)
    44      abort ();
    45    return 0;
    46  }
    47  
    48  struct t t = { 26, 0, 0, { 0, 21, 22, 23 }};
    49  
    50  int main (void)
    51  {
    52    baz (&t);
    53    foo (&t);
    54    exit (0);
    55  }