modernc.org/cc@v1.0.1/testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/memcpy-1.c (about)

     1  #include <string.h>
     2  
     3  #if defined (STACK_SIZE)
     4  #define MEMCPY_SIZE (STACK_SIZE / 3)
     5  #else
     6  #define MEMCPY_SIZE (1 << 17)
     7  #endif
     8  
     9  
    10  void *copy (void *o, const void *i, unsigned l)
    11  {
    12    return memcpy (o, i, l);
    13  }
    14  
    15  main ()
    16  {
    17    unsigned i;
    18    unsigned char src[MEMCPY_SIZE];
    19    unsigned char dst[MEMCPY_SIZE];
    20  
    21    for (i = 0; i < MEMCPY_SIZE; i++)
    22      src[i] = (unsigned char) i,  dst[i] = 0;
    23  
    24    (void) memcpy (dst, src, MEMCPY_SIZE / 128);
    25  
    26    for (i = 0; i < MEMCPY_SIZE / 128; i++)
    27      if (dst[i] != (unsigned char) i)
    28        abort ();
    29  
    30    (void) memset (dst, 1, MEMCPY_SIZE / 128);
    31  
    32    for (i = 0; i < MEMCPY_SIZE / 128; i++)
    33      if (dst[i] != 1)
    34        abort ();
    35  
    36    (void) memcpy (dst, src, MEMCPY_SIZE);
    37  
    38    for (i = 0; i < MEMCPY_SIZE; i++)
    39      if (dst[i] != (unsigned char) i)
    40        abort ();
    41  
    42    (void) memset (dst, 0, MEMCPY_SIZE);
    43  
    44    for (i = 0; i < MEMCPY_SIZE; i++)
    45      if (dst[i] != 0)
    46        abort ();
    47  
    48    (void) copy (dst, src, MEMCPY_SIZE / 128);
    49  
    50    for (i = 0; i < MEMCPY_SIZE / 128; i++)
    51      if (dst[i] != (unsigned char) i)
    52        abort ();
    53  
    54    (void) memset (dst, 0, MEMCPY_SIZE);
    55  
    56    (void) copy (dst, src, MEMCPY_SIZE);
    57  
    58    for (i = 0; i < MEMCPY_SIZE; i++)
    59      if (dst[i] != (unsigned char) i)
    60        abort ();
    61  
    62    exit (0);
    63  }