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

     1  /* PR tree-optimization/65369 */
     2  #include <stdint.h>
     3  
     4  static const char data[] =
     5    "12345678901234567890123456789012345678901234567890"
     6    "123456789012345678901234567890";
     7  
     8  __attribute__ ((noinline))
     9  static void foo (const unsigned int *buf)
    10  {
    11    if (__builtin_memcmp (buf, data, 64))
    12      __builtin_abort ();
    13  }
    14  
    15  __attribute__ ((noinline))
    16  static void bar (const unsigned char *block)
    17  {
    18    uint32_t buf[16];
    19    __builtin_memcpy (buf +  0, block +  0, 4);
    20    __builtin_memcpy (buf +  1, block +  4, 4);
    21    __builtin_memcpy (buf +  2, block +  8, 4);
    22    __builtin_memcpy (buf +  3, block + 12, 4);
    23    __builtin_memcpy (buf +  4, block + 16, 4);
    24    __builtin_memcpy (buf +  5, block + 20, 4);
    25    __builtin_memcpy (buf +  6, block + 24, 4);
    26    __builtin_memcpy (buf +  7, block + 28, 4);
    27    __builtin_memcpy (buf +  8, block + 32, 4);
    28    __builtin_memcpy (buf +  9, block + 36, 4);
    29    __builtin_memcpy (buf + 10, block + 40, 4);
    30    __builtin_memcpy (buf + 11, block + 44, 4);
    31    __builtin_memcpy (buf + 12, block + 48, 4);
    32    __builtin_memcpy (buf + 13, block + 52, 4);
    33    __builtin_memcpy (buf + 14, block + 56, 4);
    34    __builtin_memcpy (buf + 15, block + 60, 4);
    35    foo (buf);
    36  }
    37  
    38  int
    39  main ()
    40  {
    41    unsigned char input[sizeof data + 16] __attribute__((aligned (16)));
    42    __builtin_memset (input, 0, sizeof input);
    43    __builtin_memcpy (input + 1, data, sizeof data);
    44    bar (input + 1);
    45    return 0;
    46  }