1 struct a {
2 	char a, b;
3 	short c;
4 };
5 
6 int
a1()7 a1()
8 {
9 	static struct a x = { 1, 2, ~1 }, y = { 65, 2, ~2 };
10 
11 	return (x.a == (y.a & ~64) && x.b == y.b);
12 }
13 
14 int
a2()15 a2()
16 {
17 	static struct a x = { 1, 66, ~1 }, y = { 1, 2, ~2 };
18 
19 	return (x.a == y.a && (x.b & ~64) == y.b);
20 }
21 
22 int
a3()23 a3()
24 {
25 	static struct a x = { 9, 66, ~1 }, y = { 33, 18, ~2 };
26 
27 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
28 }
29 
30 struct b {
31 	int c;
32 	short b, a;
33 };
34 
35 int
b1()36 b1()
37 {
38 	static struct b x = { ~1, 2, 1 }, y = { ~2, 2, 65 };
39 
40 	return (x.a == (y.a & ~64) && x.b == y.b);
41 }
42 
43 int
b2()44 b2()
45 {
46 	static struct b x = { ~1, 66, 1 }, y = { ~2, 2, 1 };
47 
48 	return (x.a == y.a && (x.b & ~64) == y.b);
49 }
50 
51 int
b3()52 b3()
53 {
54 	static struct b x = { ~1, 66, 9 }, y = { ~2, 18, 33 };
55 
56 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
57 }
58 
59 struct c {
60 	unsigned int c:4, b:14, a:14;
61 } __attribute__ ((aligned));
62 
63 int
c1()64 c1()
65 {
66 	static struct c x = { ~1, 2, 1 }, y = { ~2, 2, 65 };
67 
68 	return (x.a == (y.a & ~64) && x.b == y.b);
69 }
70 
71 int
c2()72 c2()
73 {
74 	static struct c x = { ~1, 66, 1 }, y = { ~2, 2, 1 };
75 
76 	return (x.a == y.a && (x.b & ~64) == y.b);
77 }
78 
79 int
c3()80 c3()
81 {
82 	static struct c x = { ~1, 66, 9 }, y = { ~2, 18, 33 };
83 
84 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
85 }
86 
87 struct d {
88 	unsigned int a:14, b:14, c:4;
89 } __attribute__ ((aligned));
90 
91 int
d1()92 d1()
93 {
94 	static struct d x = { 1, 2, ~1 }, y = { 65, 2, ~2 };
95 
96 	return (x.a == (y.a & ~64) && x.b == y.b);
97 }
98 
99 int
d2()100 d2()
101 {
102 	static struct d x = { 1, 66, ~1 }, y = { 1, 2, ~2 };
103 
104 	return (x.a == y.a && (x.b & ~64) == y.b);
105 }
106 
107 int
d3()108 d3()
109 {
110 	static struct d x = { 9, 66, ~1 }, y = { 33, 18, ~2 };
111 
112 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
113 }
114 
115 struct e {
116 	int c:4, b:14, a:14;
117 } __attribute__ ((aligned));
118 
119 int
e1()120 e1()
121 {
122 	static struct e x = { ~1, -2, -65 }, y = { ~2, -2, -1 };
123 
124 	return (x.a == (y.a & ~64) && x.b == y.b);
125 }
126 
127 int
e2()128 e2()
129 {
130 	static struct e x = { ~1, -2, -1 }, y = { ~2, -66, -1 };
131 
132 	return (x.a == y.a && (x.b & ~64) == y.b);
133 }
134 
135 int
e3()136 e3()
137 {
138 	static struct e x = { ~1, -18, -33 }, y = { ~2, -66, -9 };
139 
140 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
141 }
142 
143 int
e4()144 e4()
145 {
146 	static struct e x = { -1, -1, 0 };
147 
148 	return x.a == 0 && x.b & 0x2000;
149 }
150 
151 struct f {
152 	int a:14, b:14, c:4;
153 } __attribute__ ((aligned));
154 
155 int
f1()156 f1()
157 {
158 	static struct f x = { -65, -2, ~1 }, y = { -1, -2, ~2 };
159 
160 	return (x.a == (y.a & ~64) && x.b == y.b);
161 }
162 
163 int
f2()164 f2()
165 {
166 	static struct f x = { -1, -2, ~1 }, y = { -1, -66, ~2 };
167 
168 	return (x.a == y.a && (x.b & ~64) == y.b);
169 }
170 
171 int
f3()172 f3()
173 {
174 	static struct f x = { -33, -18, ~1 }, y = { -9, -66, ~2 };
175 
176 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
177 }
178 
179 int
f4()180 f4()
181 {
182 	static struct f x = { 0, -1, -1 };
183 
184 	return x.a == 0 && x.b & 0x2000;
185 }
186 
187 struct gx {
188 	int c:4, b:14, a:14;
189 } __attribute__ ((aligned));
190 struct gy {
191 	int b:14, a:14, c:4;
192 } __attribute__ ((aligned));
193 
194 int
g1()195 g1()
196 {
197 	static struct gx x = { ~1, -2, -65 };
198 	static struct gy y = { -2, -1, ~2 };
199 
200 	return (x.a == (y.a & ~64) && x.b == y.b);
201 }
202 
203 int
g2()204 g2()
205 {
206 	static struct gx x = { ~1, -2, -1 };
207 	static struct gy y = { -66, -1, ~2 };
208 
209 	return (x.a == y.a && (x.b & ~64) == y.b);
210 }
211 
212 int
g3()213 g3()
214 {
215 	static struct gx x = { ~1, -18, -33 };
216 	static struct gy y = { -66, -9, ~2 };
217 
218 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
219 }
220 
221 int
g4()222 g4()
223 {
224 	static struct gx x = { ~1, 0x0020, 0x0010 };
225 	static struct gy y = { 0x0200, 0x0100, ~2 };
226 
227 	return ((x.a & 0x00f0) == (y.a & 0x0f00) &&
228 		(x.b & 0x00f0) == (y.b & 0x0f00));
229 }
230 
231 int
g5()232 g5()
233 {
234 	static struct gx x = { ~1, 0x0200, 0x0100 };
235 	static struct gy y = { 0x0020, 0x0010, ~2 };
236 
237 	return ((x.a & 0x0f00) == (y.a & 0x00f0) &&
238 		(x.b & 0x0f00) == (y.b & 0x00f0));
239 }
240 
241 int
g6()242 g6()
243 {
244 	static struct gx x = { ~1, 0xfe20, 0xfd10 };
245 	static struct gy y = { 0xc22f, 0xc11f, ~2 };
246 
247 	return ((x.a & 0x03ff) == (y.a & 0x3ff0) &&
248 		(x.b & 0x03ff) == (y.b & 0x3ff0));
249 }
250 
251 int
g7()252 g7()
253 {
254 	static struct gx x = { ~1, 0xc22f, 0xc11f };
255 	static struct gy y = { 0xfe20, 0xfd10, ~2 };
256 
257 	return ((x.a & 0x3ff0) == (y.a & 0x03ff) &&
258 		(x.b & 0x3ff0) == (y.b & 0x03ff));
259 }
260 
261 struct hx {
262 	int a:14, b:14, c:4;
263 } __attribute__ ((aligned));
264 struct hy {
265 	int c:4, a:14, b:14;
266 } __attribute__ ((aligned));
267 
268 int
h1()269 h1()
270 {
271 	static struct hx x = { -65, -2, ~1 };
272 	static struct hy y = { ~2, -1, -2 };
273 
274 	return (x.a == (y.a & ~64) && x.b == y.b);
275 }
276 
277 int
h2()278 h2()
279 {
280 	static struct hx x = { -1, -2, ~1 };
281 	static struct hy y = { ~2, -1, -66 };
282 
283 	return (x.a == y.a && (x.b & ~64) == y.b);
284 }
285 
286 int
h3()287 h3()
288 {
289 	static struct hx x = { -33, -18, ~1 };
290 	static struct hy y = { ~2, -9, -66 };
291 
292 	return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
293 }
294 
295 int
h4()296 h4()
297 {
298 	static struct hx x = { 0x0010, 0x0020, ~1 };
299 	static struct hy y = { ~2, 0x0100, 0x0200 };
300 
301 	return ((x.a & 0x00f0) == (y.a & 0x0f00) &&
302 		(x.b & 0x00f0) == (y.b & 0x0f00));
303 }
304 
305 int
h5()306 h5()
307 {
308 	static struct hx x = { 0x0100, 0x0200, ~1 };
309 	static struct hy y = { ~2, 0x0010, 0x0020 };
310 
311 	return ((x.a & 0x0f00) == (y.a & 0x00f0) &&
312 		(x.b & 0x0f00) == (y.b & 0x00f0));
313 }
314 
315 int
h6()316 h6()
317 {
318 	static struct hx x = { 0xfd10, 0xfe20, ~1 };
319 	static struct hy y = { ~2, 0xc11f, 0xc22f };
320 
321 	return ((x.a & 0x03ff) == (y.a & 0x3ff0) &&
322 		(x.b & 0x03ff) == (y.b & 0x3ff0));
323 }
324 
325 int
h7()326 h7()
327 {
328 	static struct hx x = { 0xc11f, 0xc22f, ~1 };
329 	static struct hy y = { ~2, 0xfd10, 0xfe20 };
330 
331 	return ((x.a & 0x3ff0) == (y.a & 0x03ff) &&
332 		(x.b & 0x3ff0) == (y.b & 0x03ff));
333 }
334 
335 int
main()336 main()
337 {
338   if (!a1 ())
339     abort ();
340   if (!a2 ())
341     abort ();
342   if (!a3 ())
343     abort ();
344   if (!b1 ())
345     abort ();
346   if (!b2 ())
347     abort ();
348   if (!b3 ())
349     abort ();
350   if (!c1 ())
351     abort ();
352   if (!c2 ())
353     abort ();
354   if (!c3 ())
355     abort ();
356   if (!d1 ())
357     abort ();
358   if (!d2 ())
359     abort ();
360   if (!d3 ())
361     abort ();
362   if (!e1 ())
363     abort ();
364   if (!e2 ())
365     abort ();
366   if (!e3 ())
367     abort ();
368   if (!e4 ())
369     abort ();
370   if (!f1 ())
371     abort ();
372   if (!f2 ())
373     abort ();
374   if (!f3 ())
375     abort ();
376   if (!f4 ())
377     abort ();
378   if (!g1 ())
379     abort ();
380   if (!g2 ())
381     abort ();
382   if (!g3 ())
383     abort ();
384   if (g4 ())
385     abort ();
386   if (g5 ())
387     abort ();
388   if (!g6 ())
389     abort ();
390   if (!g7 ())
391     abort ();
392   if (!h1 ())
393     abort ();
394   if (!h2 ())
395     abort ();
396   if (!h3 ())
397     abort ();
398   if (h4 ())
399     abort ();
400   if (h5 ())
401     abort ();
402   if (!h6 ())
403     abort ();
404   if (!h7 ())
405     abort ();
406   exit (0);
407 }
408