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