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

     1  /* PR rtl-optimization/63843 */
     2  
     3  static inline __attribute__ ((always_inline))
     4  unsigned short foo (unsigned short v)
     5  {
     6    return (v << 8) | (v >> 8);
     7  }
     8  
     9  unsigned short __attribute__ ((noinline, noclone, hot))
    10  bar (unsigned char *x)
    11  {
    12    unsigned int a;
    13    unsigned short b;
    14    __builtin_memcpy (&a, &x[0], sizeof (a));
    15    a ^= 0x80808080U;
    16    __builtin_memcpy (&x[0], &a, sizeof (a));
    17    __builtin_memcpy (&b, &x[2], sizeof (b));
    18    return foo (b);
    19  }
    20  
    21  int
    22  main ()
    23  {
    24    unsigned char x[8] = { 0x01, 0x01, 0x01, 0x01 };
    25    if (__CHAR_BIT__ == 8
    26        && sizeof (short) == 2
    27        && sizeof (int) == 4
    28        && bar (x) != 0x8181U)
    29      __builtin_abort ();
    30    return 0;
    31  }