IVOPT performance tuning patch. The main problem is a variant of maximal weight
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-by-value-9_x.c
blob5bbef770aca6789c629cf6bb992fe8bea198a534
1 #include "compat-common.h"
3 #define T(N, TYPE) \
4 struct S##TYPE##N { TYPE i[N]; }; \
6 struct S##TYPE##N g1s##TYPE##N, g2s##TYPE##N; \
7 struct S##TYPE##N g3s##TYPE##N, g4s##TYPE##N; \
8 struct S##TYPE##N g5s##TYPE##N, g6s##TYPE##N; \
9 struct S##TYPE##N g7s##TYPE##N, g8s##TYPE##N; \
10 struct S##TYPE##N g9s##TYPE##N, g10s##TYPE##N; \
11 struct S##TYPE##N g11s##TYPE##N, g12s##TYPE##N; \
12 struct S##TYPE##N g13s##TYPE##N, g14s##TYPE##N; \
13 struct S##TYPE##N g15s##TYPE##N, g16s##TYPE##N; \
15 extern void init##TYPE (TYPE *p, int i); \
16 extern void checkg##TYPE##N (void); \
17 extern void \
18 test##TYPE##N (struct S##TYPE##N s1, struct S##TYPE##N s2, \
19 struct S##TYPE##N s3, struct S##TYPE##N s4, \
20 struct S##TYPE##N s5, struct S##TYPE##N s6, \
21 struct S##TYPE##N s7, struct S##TYPE##N s8, \
22 struct S##TYPE##N s9, struct S##TYPE##N s10, \
23 struct S##TYPE##N s11, struct S##TYPE##N s12, \
24 struct S##TYPE##N s13, struct S##TYPE##N s14, \
25 struct S##TYPE##N s15, struct S##TYPE##N s16); \
26 extern void testva##TYPE##N (int n, ...); \
29 void \
30 init##TYPE##N (struct S##TYPE##N *p, int i) \
31 { \
32 int j; \
33 for (j = 0; j < N; j++) \
34 init##TYPE(&p->i[j], i+j); \
35 } \
37 void \
38 check##TYPE##N (struct S##TYPE##N *p, int i) \
39 { \
40 int j; \
41 for (j = 0; j < N; j++) \
42 check##TYPE(p->i[j], i+j); \
43 } \
45 void \
46 test2_##TYPE##N (struct S##TYPE##N s1, struct S##TYPE##N s2, \
47 struct S##TYPE##N s3, struct S##TYPE##N s4, \
48 struct S##TYPE##N s5, struct S##TYPE##N s6, \
49 struct S##TYPE##N s7, struct S##TYPE##N s8) \
50 { \
51 test##TYPE##N (s1, g2s##TYPE##N, s2, g4s##TYPE##N, \
52 s3, g6s##TYPE##N, s4, g8s##TYPE##N, \
53 s5, g10s##TYPE##N, s6, g12s##TYPE##N, \
54 s7, g14s##TYPE##N, s8, g16s##TYPE##N); \
55 } \
57 void \
58 testit##TYPE##N (void) \
59 { \
60 DEBUG_FPUTS (#TYPE "[" #N "]"); \
61 DEBUG_FPUTS (" init: "); \
62 init##TYPE##N ( &g1s##TYPE##N, 1*16); \
63 init##TYPE##N ( &g2s##TYPE##N, 2*16); \
64 init##TYPE##N ( &g3s##TYPE##N, 3*16); \
65 init##TYPE##N ( &g4s##TYPE##N, 4*16); \
66 init##TYPE##N ( &g5s##TYPE##N, 5*16); \
67 init##TYPE##N ( &g6s##TYPE##N, 6*16); \
68 init##TYPE##N ( &g7s##TYPE##N, 7*16); \
69 init##TYPE##N ( &g8s##TYPE##N, 8*16); \
70 init##TYPE##N ( &g9s##TYPE##N, 9*16); \
71 init##TYPE##N (&g10s##TYPE##N, 10*16); \
72 init##TYPE##N (&g11s##TYPE##N, 11*16); \
73 init##TYPE##N (&g12s##TYPE##N, 12*16); \
74 init##TYPE##N (&g13s##TYPE##N, 13*16); \
75 init##TYPE##N (&g14s##TYPE##N, 14*16); \
76 init##TYPE##N (&g15s##TYPE##N, 15*16); \
77 init##TYPE##N (&g16s##TYPE##N, 16*16); \
78 checkg##TYPE##N (); \
79 DEBUG_NL; \
80 DEBUG_FPUTS (#TYPE "[" #N "]"); \
81 DEBUG_FPUTS (" test: "); \
82 test##TYPE##N (g1s##TYPE##N, g2s##TYPE##N, \
83 g3s##TYPE##N, g4s##TYPE##N, \
84 g5s##TYPE##N, g6s##TYPE##N, \
85 g7s##TYPE##N, g8s##TYPE##N, \
86 g9s##TYPE##N, g10s##TYPE##N, \
87 g11s##TYPE##N, g12s##TYPE##N, \
88 g13s##TYPE##N, g14s##TYPE##N, \
89 g15s##TYPE##N, g16s##TYPE##N); \
90 DEBUG_NL; \
91 DEBUG_FPUTS (#TYPE "[" #N "]"); \
92 DEBUG_FPUTS (" testva:"); \
93 DEBUG_NL; \
94 testva##TYPE##N (16, \
95 g1s##TYPE##N, g2s##TYPE##N, \
96 g3s##TYPE##N, g4s##TYPE##N, \
97 g5s##TYPE##N, g6s##TYPE##N, \
98 g7s##TYPE##N, g8s##TYPE##N, \
99 g9s##TYPE##N, g10s##TYPE##N, \
100 g11s##TYPE##N, g12s##TYPE##N, \
101 g13s##TYPE##N, g14s##TYPE##N, \
102 g15s##TYPE##N, g16s##TYPE##N); \
103 DEBUG_NL; \
104 DEBUG_FPUTS (#TYPE "[" #N "]"); \
105 DEBUG_FPUTS (" test2: "); \
106 test2_##TYPE##N (g1s##TYPE##N, g3s##TYPE##N, \
107 g5s##TYPE##N, g7s##TYPE##N, \
108 g9s##TYPE##N, g11s##TYPE##N, \
109 g13s##TYPE##N, g15s##TYPE##N); \
110 DEBUG_NL; \
113 typedef struct { char c; } Sc;
114 typedef struct { short s; } Ss;
115 typedef struct { int i; } Si;
116 typedef struct { short s; char c; } Ssc;
117 typedef struct { int i; short s; } Sis;
118 typedef struct { char c; short s; int i; } Scsi;
119 typedef struct { char c; int i; short s; } Scis;
121 extern void abort (void);
123 void checkSc (Sc x, int i) { if (x.c != i/16) DEBUG_CHECK }
124 void checkSs (Ss x, int i) { if (x.s != i) DEBUG_CHECK }
125 void checkSi (Si x, int i) { if (x.i != i) DEBUG_CHECK }
126 void checkSsc (Ssc x, int i)
127 { if (x.s != i || x.c != (i/16)+1) DEBUG_CHECK }
128 void checkSis (Sis x, int i)
129 { if (x.i != i || x.s != i+1) DEBUG_CHECK }
130 void checkScsi (Scsi x, int i)
131 { if (x.c != i/16 || x.s != i+1 || x.i != i+2) DEBUG_CHECK }
132 void checkScis (Scis x, int i)
133 { if (x.c != i/16 || x.i != i+1 || x.s != i+2) DEBUG_CHECK }
135 #ifndef SKIP_ZERO_ARRAY
136 T(0, Scsi)
137 #endif
138 T(1, Scsi)
139 T(2, Scsi)
140 T(3, Scsi)
141 T(4, Scsi)
142 T(5, Scsi)
143 T(6, Scsi)
144 T(7, Scsi)
145 T(8, Scsi)
146 T(9, Scsi)
147 T(10, Scsi)
148 T(11, Scsi)
149 T(12, Scsi)
150 T(13, Scsi)
151 T(14, Scsi)
152 T(15, Scsi)
153 #ifndef SKIP_ZERO_ARRAY
154 T(0, Scis)
155 #endif
156 T(1, Scis)
157 T(2, Scis)
158 T(3, Scis)
159 T(4, Scis)
160 T(5, Scis)
161 T(6, Scis)
162 T(7, Scis)
163 T(8, Scis)
164 T(9, Scis)
165 T(10, Scis)
166 T(11, Scis)
167 T(12, Scis)
168 T(13, Scis)
169 T(14, Scis)
170 T(15, Scis)
172 #undef T
174 void
175 struct_by_value_9_x ()
177 DEBUG_INIT
179 #define T(N, TYPE) testit##TYPE##N ();
181 #ifndef SKIP_ZERO_ARRAY
182 T(0, Scsi)
183 #endif
184 T(1, Scsi)
185 T(2, Scsi)
186 T(3, Scsi)
187 T(4, Scsi)
188 T(5, Scsi)
189 T(6, Scsi)
190 T(7, Scsi)
191 T(8, Scsi)
192 T(9, Scsi)
193 T(10, Scsi)
194 T(11, Scsi)
195 T(12, Scsi)
196 T(13, Scsi)
197 T(14, Scsi)
198 T(15, Scsi)
199 #ifndef SKIP_ZERO_ARRAY
200 T(0, Scis)
201 #endif
202 T(1, Scis)
203 T(2, Scis)
204 T(3, Scis)
205 T(4, Scis)
206 T(5, Scis)
207 T(6, Scis)
208 T(7, Scis)
209 T(8, Scis)
210 T(9, Scis)
211 T(10, Scis)
212 T(11, Scis)
213 T(12, Scis)
214 T(13, Scis)
215 T(14, Scis)
216 T(15, Scis)
218 DEBUG_FINI
220 if (fails != 0)
221 abort ();
223 #undef T