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 "mixed-struct-defs.h"
141 #include "mixed-struct-check.h"
142 
143 T(Scd)
T(Scsds)144 T(Scsds)
145 T(Scssdss)
146 
147 #undef T
148 
149 void
150 struct_by_value_20_x ()
151 {
152 DEBUG_INIT
153 
154 #define T(TYPE) testit##TYPE ();
155 
156 T(Scd)
157 T(Scsds)
158 T(Scssdss)
159 
160 DEBUG_FINI
161 
162 if (fails != 0)
163   abort ();
164 
165 #undef T
166 }
167