2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-return-2_x.c
blob4463dc4cbcd4eaae6aaf1f9e3b5e46af94b8a4c3
1 #include "compat-common.h"
3 /* Turn off checking for variable arguments with -DSKIPVA. */
4 #ifdef SKIPVA
5 const int test_va = 0;
6 #else
7 const int test_va = 1;
8 #endif
10 #define T(N, NAME, TYPE) \
11 struct S##NAME##N { TYPE i[N]; }; \
12 struct S##NAME##N g1s##NAME##N, g2s##NAME##N; \
13 struct S##NAME##N g3s##NAME##N, g4s##NAME##N; \
14 struct S##NAME##N g5s##NAME##N, g6s##NAME##N; \
15 struct S##NAME##N g7s##NAME##N, g8s##NAME##N; \
16 struct S##NAME##N g9s##NAME##N, g10s##NAME##N; \
17 struct S##NAME##N g11s##NAME##N, g12s##NAME##N; \
18 struct S##NAME##N g13s##NAME##N, g14s##NAME##N; \
19 struct S##NAME##N g15s##NAME##N, g16s##NAME##N; \
21 extern void init##NAME##N (struct S##NAME##N *p, int i); \
22 extern void checkg##NAME##N (void); \
23 extern struct S##NAME##N test0##NAME##N (void); \
24 extern struct S##NAME##N test1##NAME##N (struct S##NAME##N); \
25 extern struct S##NAME##N testva##NAME##N (int n, ...); \
27 void \
28 check##NAME##N (struct S##NAME##N *p, int i) \
29 { \
30 int j; \
31 DEBUG_DOT; \
32 for (j = 0; j < N; j++) \
33 if (p->i[j] != (TYPE) (i + j)) \
34 { \
35 DEBUG_FAIL; \
36 } \
37 } \
39 void \
40 testit##NAME##N (void) \
41 { \
42 struct S##NAME##N rslt; \
43 DEBUG_FPUTS (#NAME "[" #N "]"); \
44 DEBUG_FPUTS (" init: "); \
45 init##NAME##N ( &g1s##NAME##N, 1*16); \
46 init##NAME##N ( &g2s##NAME##N, 2*16); \
47 init##NAME##N ( &g3s##NAME##N, 3*16); \
48 init##NAME##N ( &g4s##NAME##N, 4*16); \
49 init##NAME##N ( &g5s##NAME##N, 5*16); \
50 init##NAME##N ( &g6s##NAME##N, 6*16); \
51 init##NAME##N ( &g7s##NAME##N, 7*16); \
52 init##NAME##N ( &g8s##NAME##N, 8*16); \
53 init##NAME##N ( &g9s##NAME##N, 9*16); \
54 init##NAME##N (&g10s##NAME##N, 10*16); \
55 init##NAME##N (&g11s##NAME##N, 11*16); \
56 init##NAME##N (&g12s##NAME##N, 12*16); \
57 init##NAME##N (&g13s##NAME##N, 13*16); \
58 init##NAME##N (&g14s##NAME##N, 14*16); \
59 init##NAME##N (&g15s##NAME##N, 15*16); \
60 init##NAME##N (&g16s##NAME##N, 16*16); \
61 checkg##NAME##N (); \
62 DEBUG_NL; \
63 DEBUG_FPUTS (#NAME "[" #N "]"); \
64 DEBUG_FPUTS (" test0: "); \
65 rslt = test0##NAME##N (); \
66 check##NAME##N (&rslt, 1*16); \
67 DEBUG_NL; \
68 DEBUG_FPUTS (#NAME "[" #N "]"); \
69 DEBUG_FPUTS (" test1: "); \
70 rslt = test1##NAME##N (g1s##NAME##N); \
71 check##NAME##N (&rslt, 1*16); \
72 if (test_va) \
73 { \
74 DEBUG_NL; \
75 DEBUG_FPUTS (#NAME "[" #N "]"); \
76 DEBUG_FPUTS (" testva: "); \
77 rslt = testva##NAME##N (1, g1s##NAME##N); \
78 check##NAME##N (&rslt, 1*16); \
79 rslt = testva##NAME##N (5, \
80 g1s##NAME##N, g2s##NAME##N, \
81 g3s##NAME##N, g4s##NAME##N, \
82 g5s##NAME##N); \
83 check##NAME##N (&rslt, 5*16); \
84 rslt = testva##NAME##N (9, \
85 g1s##NAME##N, g2s##NAME##N, \
86 g3s##NAME##N, g4s##NAME##N, \
87 g5s##NAME##N, g6s##NAME##N, \
88 g7s##NAME##N, g8s##NAME##N, \
89 g9s##NAME##N); \
90 check##NAME##N (&rslt, 9*16); \
91 rslt = testva##NAME##N (16, \
92 g1s##NAME##N, g2s##NAME##N, \
93 g3s##NAME##N, g4s##NAME##N, \
94 g5s##NAME##N, g6s##NAME##N, \
95 g7s##NAME##N, g8s##NAME##N, \
96 g9s##NAME##N, g10s##NAME##N, \
97 g11s##NAME##N, g12s##NAME##N, \
98 g13s##NAME##N, g14s##NAME##N, \
99 g15s##NAME##N, g16s##NAME##N); \
100 check##NAME##N (&rslt, 16*16); \
102 DEBUG_NL; \
105 T(0, uc, unsigned char)
106 T(1, uc, unsigned char)
107 T(2, uc, unsigned char)
108 T(3, uc, unsigned char)
109 T(4, uc, unsigned char)
110 T(5, uc, unsigned char)
111 T(6, uc, unsigned char)
112 T(7, uc, unsigned char)
113 T(8, uc, unsigned char)
114 T(9, uc, unsigned char)
115 T(10, uc, unsigned char)
116 T(11, uc, unsigned char)
117 T(12, uc, unsigned char)
118 T(13, uc, unsigned char)
119 T(14, uc, unsigned char)
120 T(15, uc, unsigned char)
121 T(0, us, unsigned short)
122 T(1, us, unsigned short)
123 T(2, us, unsigned short)
124 T(3, us, unsigned short)
125 T(4, us, unsigned short)
126 T(5, us, unsigned short)
127 T(6, us, unsigned short)
128 T(7, us, unsigned short)
129 T(8, us, unsigned short)
130 T(9, us, unsigned short)
131 T(10, us, unsigned short)
132 T(11, us, unsigned short)
133 T(12, us, unsigned short)
134 T(13, us, unsigned short)
135 T(14, us, unsigned short)
136 T(15, us, unsigned short)
137 T(0, ui, unsigned int)
138 T(1, ui, unsigned int)
139 T(2, ui, unsigned int)
140 T(3, ui, unsigned int)
141 T(4, ui, unsigned int)
142 T(5, ui, unsigned int)
143 T(6, ui, unsigned int)
144 T(7, ui, unsigned int)
145 T(8, ui, unsigned int)
146 T(9, ui, unsigned int)
147 T(10, ui, unsigned int)
148 T(11, ui, unsigned int)
149 T(12, ui, unsigned int)
150 T(13, ui, unsigned int)
151 T(14, ui, unsigned int)
152 T(15, ui, unsigned int)
154 #undef T
156 void
157 struct_return_2_x ()
159 DEBUG_INIT
161 #define T(N, NAME, TYPE) testit##NAME##N ();
163 T(0, uc, unsigned char)
164 T(1, uc, unsigned char)
165 T(2, uc, unsigned char)
166 T(3, uc, unsigned char)
167 T(4, uc, unsigned char)
168 T(5, uc, unsigned char)
169 T(6, uc, unsigned char)
170 T(7, uc, unsigned char)
171 T(8, uc, unsigned char)
172 T(9, uc, unsigned char)
173 T(10, uc, unsigned char)
174 T(11, uc, unsigned char)
175 T(12, uc, unsigned char)
176 T(13, uc, unsigned char)
177 T(14, uc, unsigned char)
178 T(15, uc, unsigned char)
179 T(0, us, unsigned short)
180 T(1, us, unsigned short)
181 T(2, us, unsigned short)
182 T(3, us, unsigned short)
183 T(4, us, unsigned short)
184 T(5, us, unsigned short)
185 T(6, us, unsigned short)
186 T(7, us, unsigned short)
187 T(8, us, unsigned short)
188 T(9, us, unsigned short)
189 T(10, us, unsigned short)
190 T(11, us, unsigned short)
191 T(12, us, unsigned short)
192 T(13, us, unsigned short)
193 T(14, us, unsigned short)
194 T(15, us, unsigned short)
195 T(0, ui, unsigned int)
196 T(1, ui, unsigned int)
197 T(2, ui, unsigned int)
198 T(3, ui, unsigned int)
199 T(4, ui, unsigned int)
200 T(5, ui, unsigned int)
201 T(6, ui, unsigned int)
202 T(7, ui, unsigned int)
203 T(8, ui, unsigned int)
204 T(9, ui, unsigned int)
205 T(10, ui, unsigned int)
206 T(11, ui, unsigned int)
207 T(12, ui, unsigned int)
208 T(13, ui, unsigned int)
209 T(14, ui, unsigned int)
210 T(15, ui, unsigned int)
212 DEBUG_FINI
214 if (fails != 0)
215 abort ();
217 #undef T