1 /* { dg-add-options stack_size } */
2 /* { dg-require-stack-size "[dg-effective-target-value stack_size]*2" } */
3 
4 void
bcopy1(s,d,c)5 bcopy1 (s, d, c)
6      long long *s;
7      long long *d;
8      int c;
9 {
10   int i;
11   c = c / 8;
12   for (i = 0;  i < c;  i++)
13     d[i] = s[i];
14 }
15 
16 void
bcopy2(s,d,c)17 bcopy2 (s, d, c)
18      long *s;
19      long *d;
20      int c;
21 {
22   int i;
23   c = c / 4;
24   for (i = 0;  i < c;  i++)
25     d[i] = s[i];
26 }
27 
28 
29 void
bcopy3(s,d,c)30 bcopy3 (s, d, c)
31      char *s;
32      char *d;
33      int c;
34 {
35   long long z0, z1;
36   int r = d - s;
37 
38   int i;
39 
40   c /= 16;
41 
42   z0 = *((long long *) s);
43   s += 8;
44   z1 = *((long long *) s);
45   s += 8;
46   for (i = 0; i < c; i++)
47     {
48       *(long long *)(s + r) = z0;
49       z0 = *((long long *) s);
50       s += 8;
51       *(long long *)(s + r) = z1;
52       z1 = *((long long *) s);
53       s += 8;
54     }
55 }
56 
57 #if defined(STACK_SIZE) && STACK_SIZE < 16384
58 #define BYTES STACK_SIZE
59 #else
60 #define BYTES 16384
61 #endif
62 
main()63 main ()
64 {
65   long long s[BYTES / 8];
66   long long d[BYTES / 8];
67   int i;
68 
69   for (i = 1; i < 67108864 / BYTES; i++)
70     bcopy (s, d, BYTES);
71 }
72