OSDN Git Service

PR tree-optimization/15262
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / va-arg-9.c
1 /* This is a modfied version of va-arg-2.c to test passing a va_list as
2    a parameter to another function.  */
3
4 #include <stdarg.h>
5
6 extern __SIZE_TYPE__ strlen (const char *);
7
8 int
9 to_hex (unsigned int a)
10 {
11   static char hex[] = "0123456789abcdef";
12
13   if (a > 15)
14     abort ();
15   return hex[a];
16 }
17
18 void
19 fap (int i, char* format, va_list ap)
20 {
21   if (strlen (format) != 16 - i)
22     abort ();
23   while (*format)
24     if (*format++ != to_hex (va_arg (ap, int)))
25       abort ();
26 }
27
28 void
29 f0 (char* format, ...)
30 {
31   va_list ap;
32
33   va_start (ap, format);
34   fap(0, format, ap);
35   va_end(ap);
36 }
37
38 void
39 f1 (int a1, char* format, ...)
40 {
41   va_list ap;
42
43   va_start(ap, format);
44   fap(1, format, ap);
45   va_end(ap);
46 }
47
48 void
49 f2 (int a1, int a2, char* format, ...)
50 {
51   va_list ap;
52
53   va_start(ap, format);
54   fap(2, format, ap);
55   va_end(ap);
56 }
57
58 void
59 f3 (int a1, int a2, int a3, char* format, ...)
60 {
61   va_list ap;
62
63   va_start(ap, format);
64   fap(3, format, ap);
65   va_end(ap);
66 }
67
68 void
69 f4 (int a1, int a2, int a3, int a4, char* format, ...)
70 {
71   va_list ap;
72
73   va_start(ap, format);
74   fap(4, format, ap);
75   va_end(ap);
76 }
77
78 void
79 f5 (int a1, int a2, int a3, int a4, int a5,
80     char* format, ...)
81 {
82   va_list ap;
83
84   va_start(ap, format);
85   fap(5, format, ap);
86   va_end(ap);
87 }
88
89 void
90 f6 (int a1, int a2, int a3, int a4, int a5,
91     int a6,
92     char* format, ...)
93 {
94   va_list ap;
95
96   va_start(ap, format);
97   fap(6, format, ap);
98   va_end(ap);
99 }
100
101 void
102 f7 (int a1, int a2, int a3, int a4, int a5,
103     int a6, int a7,
104     char* format, ...)
105 {
106   va_list ap;
107
108   va_start(ap, format);
109   fap(7, format, ap);
110   va_end(ap);
111 }
112
113 void
114 f8 (int a1, int a2, int a3, int a4, int a5,
115     int a6, int a7, int a8,
116     char* format, ...)
117 {
118   va_list ap;
119
120   va_start(ap, format);
121   fap(8, format, ap);
122   va_end(ap);
123 }
124
125 void
126 f9 (int a1, int a2, int a3, int a4, int a5,
127     int a6, int a7, int a8, int a9,
128     char* format, ...)
129 {
130   va_list ap;
131
132   va_start(ap, format);
133   fap(9, format, ap);
134   va_end(ap);
135 }
136
137 void
138 f10 (int a1, int a2, int a3, int a4, int a5,
139      int a6, int a7, int a8, int a9, int a10,
140      char* format, ...)
141 {
142   va_list ap;
143
144   va_start(ap, format);
145   fap(10, format, ap);
146   va_end(ap);
147 }
148
149 void
150 f11 (int a1, int a2, int a3, int a4, int a5,
151      int a6, int a7, int a8, int a9, int a10,
152      int a11,
153      char* format, ...)
154 {
155   va_list ap;
156
157   va_start(ap, format);
158   fap(11, format, ap);
159   va_end(ap);
160 }
161
162 void
163 f12 (int a1, int a2, int a3, int a4, int a5,
164      int a6, int a7, int a8, int a9, int a10,
165      int a11, int a12,
166      char* format, ...)
167 {
168   va_list ap;
169
170   va_start(ap, format);
171   fap(12, format, ap);
172   va_end(ap);
173 }
174
175 void
176 f13 (int a1, int a2, int a3, int a4, int a5,
177      int a6, int a7, int a8, int a9, int a10,
178      int a11, int a12, int a13,
179      char* format, ...)
180 {
181   va_list ap;
182
183   va_start(ap, format);
184   fap(13, format, ap);
185   va_end(ap);
186 }
187
188 void
189 f14 (int a1, int a2, int a3, int a4, int a5,
190      int a6, int a7, int a8, int a9, int a10,
191      int a11, int a12, int a13, int a14,
192      char* format, ...)
193 {
194   va_list ap;
195
196   va_start(ap, format);
197   fap(14, format, ap);
198   va_end(ap);
199 }
200
201 void
202 f15 (int a1, int a2, int a3, int a4, int a5,
203      int a6, int a7, int a8, int a9, int a10,
204      int a11, int a12, int a13, int a14, int a15,
205      char* format, ...)
206 {
207   va_list ap;
208
209   va_start(ap, format);
210   fap(15, format, ap);
211   va_end(ap);
212 }
213
214 main ()
215 {
216   char *f = "0123456789abcdef";
217
218   f0 (f+0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
219   f1 (0, f+1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
220   f2 (0, 1, f+2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
221   f3 (0, 1, 2, f+3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
222   f4 (0, 1, 2, 3, f+4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
223   f5 (0, 1, 2, 3, 4, f+5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
224   f6 (0, 1, 2, 3, 4, 5, f+6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
225   f7 (0, 1, 2, 3, 4, 5, 6, f+7, 7, 8, 9, 10, 11, 12, 13, 14, 15);
226   f8 (0, 1, 2, 3, 4, 5, 6, 7, f+8, 8, 9, 10, 11, 12, 13, 14, 15);
227   f9 (0, 1, 2, 3, 4, 5, 6, 7, 8, f+9, 9, 10, 11, 12, 13, 14, 15);
228   f10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, f+10, 10, 11, 12, 13, 14, 15);
229   f11 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, f+11, 11, 12, 13, 14, 15);
230   f12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, f+12, 12, 13, 14, 15);
231   f13 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, f+13, 13, 14, 15);
232   f14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, f+14, 14, 15);
233   f15 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, f+15, 15);
234
235   exit (0);
236 }