1 #include "compat-common.h"
2
3 #define T(TYPE) \
4 TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE; \
5 TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE; \
6 TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE; \
7 TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE; \
8 \
9 extern void init##TYPE (TYPE *p, int i); \
10 extern void checkg##TYPE (void); \
11 extern void \
12 test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \
13 TYPE s5, TYPE s6, TYPE s7, TYPE s8, \
14 TYPE s9, TYPE s10, TYPE s11, TYPE s12, \
15 TYPE s13, TYPE s14, TYPE s15, TYPE s16); \
16 extern void testva##TYPE (int n, ...); \
17 \
18 void \
19 test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \
20 TYPE s5, TYPE s6, TYPE s7, TYPE s8) \
21 { \
22 test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE, \
23 s3, g6s##TYPE, s4, g8s##TYPE, \
24 s5, g10s##TYPE, s6, g12s##TYPE, \
25 s7, g14s##TYPE, s8, g16s##TYPE); \
26 } \
27 \
28 void \
29 testit##TYPE (void) \
30 { \
31 DEBUG_FPUTS (#TYPE); \
32 DEBUG_FPUTS (" init: "); \
33 init##TYPE ( &g1s##TYPE, 1); \
34 init##TYPE ( &g2s##TYPE, 2); \
35 init##TYPE ( &g3s##TYPE, 3); \
36 init##TYPE ( &g4s##TYPE, 4); \
37 init##TYPE ( &g5s##TYPE, 5); \
38 init##TYPE ( &g6s##TYPE, 6); \
39 init##TYPE ( &g7s##TYPE, 7); \
40 init##TYPE ( &g8s##TYPE, 8); \
41 init##TYPE ( &g9s##TYPE, 9); \
42 init##TYPE (&g10s##TYPE, 10); \
43 init##TYPE (&g11s##TYPE, 11); \
44 init##TYPE (&g12s##TYPE, 12); \
45 init##TYPE (&g13s##TYPE, 13); \
46 init##TYPE (&g14s##TYPE, 14); \
47 init##TYPE (&g15s##TYPE, 15); \
48 init##TYPE (&g16s##TYPE, 16); \
49 checkg##TYPE (); \
50 DEBUG_NL; \
51 DEBUG_FPUTS (#TYPE); \
52 DEBUG_FPUTS (" test: "); \
53 test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
54 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
55 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
56 g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
57 DEBUG_NL; \
58 DEBUG_FPUTS (#TYPE); \
59 DEBUG_FPUTS (" testva:"); \
60 DEBUG_NL; \
61 testva##TYPE (1, \
62 g1s##TYPE); \
63 DEBUG_NL; \
64 testva##TYPE (2, \
65 g1s##TYPE, g2s##TYPE); \
66 DEBUG_NL; \
67 testva##TYPE (3, \
68 g1s##TYPE, g2s##TYPE, g3s##TYPE); \
69 DEBUG_NL; \
70 testva##TYPE (4, \
71 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE); \
72 DEBUG_NL; \
73 testva##TYPE (5, \
74 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
75 g5s##TYPE); \
76 DEBUG_NL; \
77 testva##TYPE (6, \
78 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
79 g5s##TYPE, g6s##TYPE); \
80 DEBUG_NL; \
81 testva##TYPE (7, \
82 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
83 g5s##TYPE, g6s##TYPE, g7s##TYPE); \
84 DEBUG_NL; \
85 testva##TYPE (8, \
86 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
87 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE); \
88 DEBUG_NL; \
89 testva##TYPE (9, \
90 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
91 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
92 g9s##TYPE); \
93 DEBUG_NL; \
94 testva##TYPE (10, \
95 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
96 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
97 g9s##TYPE, g10s##TYPE); \
98 DEBUG_NL; \
99 testva##TYPE (11, \
100 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
101 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
102 g9s##TYPE, g10s##TYPE, g11s##TYPE); \
103 DEBUG_NL; \
104 testva##TYPE (12, \
105 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
106 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
107 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE); \
108 DEBUG_NL; \
109 testva##TYPE (13, \
110 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
111 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
112 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
113 g13s##TYPE); \
114 DEBUG_NL; \
115 testva##TYPE (14, \
116 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
117 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
118 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
119 g13s##TYPE, g14s##TYPE); \
120 DEBUG_NL; \
121 testva##TYPE (15, \
122 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
123 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
124 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
125 g13s##TYPE, g14s##TYPE, g15s##TYPE); \
126 DEBUG_NL; \
127 testva##TYPE (16, \
128 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
129 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
130 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
131 g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
132 DEBUG_NL; \
133 DEBUG_FPUTS (#TYPE); \
134 DEBUG_FPUTS (" test2:"); \
135 test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE, \
136 g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE); \
137 DEBUG_NL; \
138 }
139
140 #include "small-struct-defs.h"
141 #include "small-struct-check.h"
142
143 T(Sc)
T(Ss)144 T(Ss)
145 T(Si)
146 T(Scs)
147 T(Ssc)
148 T(Sic)
149 T(Sci)
150 T(Ssi)
151 T(Sis)
152 T(Scsi)
153 T(Scis)
154 T(Ssci)
155 T(Ssic)
156 T(Sisc)
157 T(Sics)
158
159 #undef T
160
161 void
162 struct_by_value_3_x ()
163 {
164 DEBUG_INIT
165
166 #define T(TYPE) testit##TYPE ();
167
168 T(Sc)
169 T(Ss)
170 T(Si)
171 T(Scs)
172 T(Ssc)
173 T(Sic)
174 T(Sci)
175 T(Ssi)
176 T(Sis)
177 T(Scsi)
178 T(Scis)
179 T(Ssci)
180 T(Ssic)
181 T(Sisc)
182 T(Sics)
183
184 DEBUG_FINI
185
186 if (fails != 0)
187 abort ();
188
189 #undef T
190 }
191