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