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

     1  /* Test builtin-memcpy (which may emit different code for different N).  */
     2  #include <string.h>
     3  
     4  #define TESTSIZE 80
     5  
     6  char src[TESTSIZE] __attribute__ ((aligned));
     7  char dst[TESTSIZE] __attribute__ ((aligned));
     8  
     9  void
    10  check (char *test, char *match, int n)
    11  {
    12    if (memcmp (test, match, n))
    13      abort ();
    14  }
    15  
    16  #define TN(n) \
    17  { memset (dst, 0, n); memcpy (dst, src, n); check (dst, src, n); }
    18  #define T(n) \
    19  TN (n) \
    20  TN ((n) + 1) \
    21  TN ((n) + 2) \
    22  TN ((n) + 3)
    23  
    24  main ()
    25  {
    26    int i,j;
    27  
    28    for (i = 0; i < sizeof (src); ++i)
    29        src[i] = 'a' + i % 26;
    30  
    31    T (0);
    32    T (4);
    33    T (8);
    34    T (12);
    35    T (16);
    36    T (20);
    37    T (24);
    38    T (28);
    39    T (32);
    40    T (36);
    41    T (40);
    42    T (44);
    43    T (48);
    44    T (52);
    45    T (56);
    46    T (60);
    47    T (64);
    48    T (68);
    49    T (72);
    50    T (76);
    51  
    52    return 0;
    53  }