OSDN Git Service

Fix PR 17408 and PR 17409.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / memcpy-1.c
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 }