1 //===------------------------- dynamic_cast14.cpp -------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include <cassert>
10 #include "support/timer.h"
11 
12 namespace t1
13 {
14 
15 struct A1
16 {
17     char _[43981];
~A1t1::A118     virtual ~A1() {}
19 
getA1t1::A120     A1* getA1() {return this;}
21 };
22 
23 struct A2
24 {
25     char _[34981];
~A2t1::A226     virtual ~A2() {}
27 
getA2t1::A228     A2* getA2() {return this;}
29 };
30 
31 struct A3
32     : public A1,
33       public virtual A2
34 {
35     char _[93481];
~A3t1::A336     virtual ~A3() {}
37 
getA1_3t1::A338     A1* getA1_3() {return A1::getA1();}
getA2t1::A339     A2* getA2() {return A2::getA2();}
getA3t1::A340     A3* getA3() {return this;}
41 };
42 
43 struct A4
44     : public virtual A2,
45       public A1
46 {
47     char _[13489];
~A4t1::A448     virtual ~A4() {}
49 
getA1_4t1::A450     A1* getA1_4() {return A1::getA1();}
getA2t1::A451     A2* getA2() {return A2::getA2();}
getA4t1::A452     A4* getA4() {return this;}
53 };
54 
55 struct A5
56     : public A3,
57       public A4
58 {
59     char _[13489];
~A5t1::A560     virtual ~A5() {}
61 
getA1_3t1::A562     A1* getA1_3() {return A3::getA1();}
getA1_4t1::A563     A1* getA1_4() {return A4::getA1();}
getA2t1::A564     A2* getA2() {return A3::getA2();}
getA3t1::A565     A3* getA3() {return A3::getA3();}
getA4t1::A566     A4* getA4() {return A4::getA4();}
getA5t1::A567     A5* getA5() {return this;}
68 };
69 
70 struct A6
71     : public A1
72 {
73     char _[81349];
~A6t1::A674     virtual ~A6() {}
75 
getA1_6t1::A676     A1* getA1_6() {return A1::getA1();}
getA6t1::A677     A6* getA6() {return this;}
78 };
79 
80 struct A7
81     : public A5,
82       public A6
83 {
84     char _[34819];
~A7t1::A785     virtual ~A7() {}
86 
getA1_3t1::A787     A1* getA1_3() {return A5::getA1_3();}
getA1_4t1::A788     A1* getA1_4() {return A5::getA1_4();}
getA1_6t1::A789     A1* getA1_6() {return A6::getA1_6();}
getA2t1::A790     A2* getA2() {return A5::getA2();}
getA3t1::A791     A3* getA3() {return A5::getA3();}
getA4t1::A792     A4* getA4() {return A5::getA4();}
getA5t1::A793     A5* getA5() {return A5::getA5();}
getA6t1::A794     A6* getA6() {return A6::getA6();}
getA7t1::A795     A7* getA7() {return this;}
96 };
97 
98 struct A8
99     : public A7
100 {
101     char _[3489];
~A8t1::A8102     virtual ~A8() {}
103 
getA1_3t1::A8104     A1* getA1_3() {return A7::getA1_3();}
getA1_4t1::A8105     A1* getA1_4() {return A7::getA1_4();}
getA1_6t1::A8106     A1* getA1_6() {return A7::getA1_6();}
getA2t1::A8107     A2* getA2() {return A7::getA2();}
getA3t1::A8108     A3* getA3() {return A7::getA3();}
getA4t1::A8109     A4* getA4() {return A7::getA4();}
getA5t1::A8110     A5* getA5() {return A7::getA5();}
getA6t1::A8111     A6* getA6() {return A7::getA6();}
getA7t1::A8112     A7* getA7() {return A7::getA7();}
getA8t1::A8113     A8* getA8() {return this;}
114 };
115 
116 struct A9
117     : public A1
118 {
119     char _[3481];
~A9t1::A9120     virtual ~A9() {}
121 
getA1_9t1::A9122     A1* getA1_9() {return A1::getA1();}
getA9t1::A9123     A9* getA9() {return this;}
124 };
125 
126 struct A10
127     : public virtual A8
128 {
129     char _[4831];
~A10t1::A10130     virtual ~A10() {}
131 
getA1_3t1::A10132     A1* getA1_3() {return A8::getA1_3();}
getA1_4t1::A10133     A1* getA1_4() {return A8::getA1_4();}
getA1_6t1::A10134     A1* getA1_6() {return A8::getA1_6();}
getA2t1::A10135     A2* getA2() {return A8::getA2();}
getA3t1::A10136     A3* getA3() {return A8::getA3();}
getA4t1::A10137     A4* getA4() {return A8::getA4();}
getA5t1::A10138     A5* getA5() {return A8::getA5();}
getA6t1::A10139     A6* getA6() {return A8::getA6();}
getA7t1::A10140     A7* getA7() {return A8::getA7();}
getA8t1::A10141     A8* getA8() {return A8::getA8();}
getA10t1::A10142     A10* getA10() {return this;}
143 };
144 
145 struct A11
146     : public virtual A8,
147       public A9
148 {
149     char _[6483];
~A11t1::A11150     virtual ~A11() {}
151 
getA1_3t1::A11152     A1* getA1_3() {return A8::getA1_3();}
getA1_4t1::A11153     A1* getA1_4() {return A8::getA1_4();}
getA1_6t1::A11154     A1* getA1_6() {return A8::getA1_6();}
getA1_9t1::A11155     A1* getA1_9() {return A9::getA1_9();}
getA2t1::A11156     A2* getA2() {return A8::getA2();}
getA3t1::A11157     A3* getA3() {return A8::getA3();}
getA4t1::A11158     A4* getA4() {return A8::getA4();}
getA5t1::A11159     A5* getA5() {return A8::getA5();}
getA6t1::A11160     A6* getA6() {return A8::getA6();}
getA7t1::A11161     A7* getA7() {return A8::getA7();}
getA8t1::A11162     A8* getA8() {return A8::getA8();}
getA9t1::A11163     A9* getA9() {return A9::getA9();}
getA11t1::A11164     A11* getA11() {return this;}
165 };
166 
167 struct A12
168     : public A10,
169       public A11
170 {
171     char _[2283];
~A12t1::A12172     virtual ~A12() {}
173 
getA1_3t1::A12174     A1* getA1_3() {return A10::getA1_3();}
getA1_4t1::A12175     A1* getA1_4() {return A10::getA1_4();}
getA1_6t1::A12176     A1* getA1_6() {return A10::getA1_6();}
getA1_9t1::A12177     A1* getA1_9() {return A11::getA1_9();}
getA2t1::A12178     A2* getA2() {return A10::getA2();}
getA3t1::A12179     A3* getA3() {return A10::getA3();}
getA4t1::A12180     A4* getA4() {return A10::getA4();}
getA5t1::A12181     A5* getA5() {return A10::getA5();}
getA6t1::A12182     A6* getA6() {return A10::getA6();}
getA7t1::A12183     A7* getA7() {return A10::getA7();}
getA8t1::A12184     A8* getA8() {return A10::getA8();}
getA9t1::A12185     A9* getA9() {return A11::getA9();}
getA10t1::A12186     A10* getA10() {return A10::getA10();}
getA11t1::A12187     A11* getA11() {return A11::getA11();}
getA12t1::A12188     A12* getA12() {return this;}
189 };
190 
191 struct A13
192     : public A12
193 {
194     char _[1283];
~A13t1::A13195     virtual ~A13() {}
196 
getA1_3t1::A13197     A1* getA1_3() {return A12::getA1_3();}
getA1_4t1::A13198     A1* getA1_4() {return A12::getA1_4();}
getA1_6t1::A13199     A1* getA1_6() {return A12::getA1_6();}
getA1_9t1::A13200     A1* getA1_9() {return A12::getA1_9();}
getA2t1::A13201     A2* getA2() {return A12::getA2();}
getA3t1::A13202     A3* getA3() {return A12::getA3();}
getA4t1::A13203     A4* getA4() {return A12::getA4();}
getA5t1::A13204     A5* getA5() {return A12::getA5();}
getA6t1::A13205     A6* getA6() {return A12::getA6();}
getA7t1::A13206     A7* getA7() {return A12::getA7();}
getA8t1::A13207     A8* getA8() {return A12::getA8();}
getA9t1::A13208     A9* getA9() {return A12::getA9();}
getA10t1::A13209     A10* getA10() {return A12::getA10();}
getA11t1::A13210     A11* getA11() {return A12::getA11();}
getA12t1::A13211     A12* getA12() {return A12::getA12();}
getA13t1::A13212     A13* getA13() {return this;}
213 };
214 
215 A3 a3;
216 A4 a4;
217 A5 a5;
218 A6 a6;
219 A7 a7;
220 A8 a8;
221 A9 a9;
222 A10 a10;
223 A11 a11;
224 A12 a12;
225 A13 a13;
226 
test()227 void test()
228 {
229     assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
230     assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
231 
232     assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
233     assert(dynamic_cast<A3*>(a4.getA2()) == 0);
234     assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
235     assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
236 
237     assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
238     assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
239 
240     assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
241     assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
242     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
243     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
244 
245     assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
246     assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
247     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
248     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
249     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
250     assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
251 
252     assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
253 
254     assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
255 
256     assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
257 
258     assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
259 
260     assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
261     assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
262     assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
263 
264     assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
265     assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
266     assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
267     assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
268 
269     assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
270     assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
271     assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
272     assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
273     assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
274 
275     assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
276     assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
277     assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
278     assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
279     assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
280     assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
281     assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
282 
283     assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
284     assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
285     assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
286     assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
287     assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
288     assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
289     assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
290     assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
291 
292     assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
293     assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
294     assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
295 
296     assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
297     assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
298     assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
299     assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
300 
301     assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
302     assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
303     assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
304     assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
305     assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
306 
307     assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
308     assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
309     assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
310     assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
311     assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
312     assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
313     assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
314 
315     assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
316     assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
317     assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
318     assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
319     assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
320     assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
321     assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
322     assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
323 
324     assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
325     assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
326     assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
327     assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
328     assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
329     assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
330     assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
331     assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
332     assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
333 
334     assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
335 
336     assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
337 
338     assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
339 
340     assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
341 
342     assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
343 
344     assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
345 
346     assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
347 
348     assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
349     assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
350     assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
351     assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
352 
353     assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
354     assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
355     assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
356     assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
357     assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
358 
359     assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
360     assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
361     assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
362     assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
363     assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
364     assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
365 
366     assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
367     assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
368     assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
369     assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
370     assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
371     assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
372     assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
373 
374     assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
375     assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
376     assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
377     assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
378     assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
379     assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
380     assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
381     assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
382 
383     assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
384     assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
385     assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
386     assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
387     assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
388     assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
389     assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
390     assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
391     assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
392 
393     assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
394     assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
395     assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
396     assert(dynamic_cast<A9*>(a10.getA2()) == 0);
397     assert(dynamic_cast<A9*>(a10.getA3()) == 0);
398     assert(dynamic_cast<A9*>(a10.getA4()) == 0);
399     assert(dynamic_cast<A9*>(a10.getA5()) == 0);
400     assert(dynamic_cast<A9*>(a10.getA6()) == 0);
401     assert(dynamic_cast<A9*>(a10.getA7()) == 0);
402     assert(dynamic_cast<A9*>(a10.getA8()) == 0);
403 
404     assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
405     assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
406     assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
407     assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
408     assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
409     assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
410     assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
411     assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
412     assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
413     assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
414 
415     assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
416     assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
417     assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
418     assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
419     assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
420 
421     assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
422     assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
423     assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
424     assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
425     assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
426     assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
427 
428     assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
429     assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
430     assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
431     assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
432     assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
433     assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
434     assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
435 
436     assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
437     assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
438     assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
439     assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
440     assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
441     assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
442     assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
443     assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
444 
445     assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
446     assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
447     assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
448     assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
449     assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
450     assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
451     assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
452     assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
453     assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
454 
455     assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
456     assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
457     assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
458     assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
459     assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
460     assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
461     assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
462     assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
463     assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
464     assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
465 
466     assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
467     assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
468     assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
469     assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
470     assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
471     assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
472     assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
473     assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
474     assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
475     assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
476     assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
477 
478     assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
479     assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
480     assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
481     assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
482     assert(dynamic_cast<A10*>(a11.getA2()) == 0);
483     assert(dynamic_cast<A10*>(a11.getA3()) == 0);
484     assert(dynamic_cast<A10*>(a11.getA4()) == 0);
485     assert(dynamic_cast<A10*>(a11.getA5()) == 0);
486     assert(dynamic_cast<A10*>(a11.getA6()) == 0);
487     assert(dynamic_cast<A10*>(a11.getA7()) == 0);
488     assert(dynamic_cast<A10*>(a11.getA8()) == 0);
489     assert(dynamic_cast<A10*>(a11.getA9()) == 0);
490 
491     assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
492     assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
493     assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
494     assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
495     assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
496     assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
497     assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
498     assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
499     assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
500     assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
501     assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
502     assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
503 
504     assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
505     assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
506     assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
507     assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
508     assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
509 
510     assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
511     assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
512     assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
513     assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
514     assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
515     assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
516 
517     assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
518     assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
519     assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
520     assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
521     assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
522     assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
523     assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
524 
525     assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
526     assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
527     assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
528     assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
529     assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
530     assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
531     assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
532     assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
533 
534     assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
535     assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
536     assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
537     assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
538     assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
539     assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
540     assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
541     assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
542     assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
543 
544     assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
545     assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
546     assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
547     assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
548     assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
549     assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
550     assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
551     assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
552     assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
553     assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
554 
555     assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
556     assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
557     assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
558     assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
559     assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
560     assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
561     assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
562     assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
563     assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
564     assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
565     assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
566 
567     assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
568     assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
569     assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
570     assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
571     assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
572     assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
573     assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
574     assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
575     assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
576     assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
577     assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
578     assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
579 
580     assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
581     assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
582     assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
583     assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
584     assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
585     assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
586     assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
587     assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
588     assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
589     assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
590     assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
591     assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
592     assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
593 
594     assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
595     assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
596     assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
597     assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
598     assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
599     assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
600     assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
601     assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
602     assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
603     assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
604     assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
605     assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
606     assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
607     assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
608 
609     assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
610     assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
611     assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
612     assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
613     assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
614 
615     assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
616     assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
617     assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
618     assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
619     assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
620     assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
621 
622     assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
623     assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
624     assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
625     assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
626     assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
627     assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
628     assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
629 
630     assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
631     assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
632     assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
633     assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
634     assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
635     assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
636     assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
637     assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
638 
639     assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
640     assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
641     assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
642     assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
643     assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
644     assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
645     assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
646     assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
647     assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
648 
649     assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
650     assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
651     assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
652     assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
653     assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
654     assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
655     assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
656     assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
657     assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
658     assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
659 
660     assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
661     assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
662     assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
663     assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
664     assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
665     assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
666     assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
667     assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
668     assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
669     assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
670     assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
671 
672     assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
673     assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
674     assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
675     assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
676     assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
677     assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
678     assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
679     assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
680     assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
681     assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
682     assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
683     assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
684 
685     assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
686     assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
687     assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
688     assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
689     assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
690     assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
691     assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
692     assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
693     assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
694     assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
695     assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
696     assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
697     assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
698 
699     assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
700     assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
701     assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
702     assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
703     assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
704     assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
705     assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
706     assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
707     assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
708     assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
709     assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
710     assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
711     assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
712     assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
713 
714     assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
715     assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
716     assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
717     assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
718     assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
719     assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
720     assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
721     assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
722     assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
723     assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
724     assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
725     assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
726     assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
727     assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
728     assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
729 }
730 
731 }  // t1
732 
733 namespace t2
734 {
735 
736 struct A1
737 {
738     char _[43981];
~A1t2::A1739     virtual ~A1() {}
740 
getA1t2::A1741     A1* getA1() {return this;}
742 };
743 
744 struct A2
745 {
746     char _[34981];
~A2t2::A2747     virtual ~A2() {}
748 
getA2t2::A2749     A2* getA2() {return this;}
750 };
751 
752 struct A3
753     : protected A1,
754       public virtual A2
755 {
756     char _[93481];
~A3t2::A3757     virtual ~A3() {}
758 
getA1_3t2::A3759     A1* getA1_3() {return A1::getA1();}
getA2t2::A3760     A2* getA2() {return A2::getA2();}
getA3t2::A3761     A3* getA3() {return this;}
762 };
763 
764 struct A4
765     : public virtual A2,
766       public A1
767 {
768     char _[13489];
~A4t2::A4769     virtual ~A4() {}
770 
getA1_4t2::A4771     A1* getA1_4() {return A1::getA1();}
getA2t2::A4772     A2* getA2() {return A2::getA2();}
getA4t2::A4773     A4* getA4() {return this;}
774 };
775 
776 struct A5
777     : public A3,
778       public A4
779 {
780     char _[13489];
~A5t2::A5781     virtual ~A5() {}
782 
getA1_3t2::A5783     A1* getA1_3() {return A3::getA1();}
getA1_4t2::A5784     A1* getA1_4() {return A4::getA1();}
getA2t2::A5785     A2* getA2() {return A3::getA2();}
getA3t2::A5786     A3* getA3() {return A3::getA3();}
getA4t2::A5787     A4* getA4() {return A4::getA4();}
getA5t2::A5788     A5* getA5() {return this;}
789 };
790 
791 struct A6
792     : public A1
793 {
794     char _[81349];
~A6t2::A6795     virtual ~A6() {}
796 
getA1_6t2::A6797     A1* getA1_6() {return A1::getA1();}
getA6t2::A6798     A6* getA6() {return this;}
799 };
800 
801 struct A7
802     : public A5,
803       public A6
804 {
805     char _[34819];
~A7t2::A7806     virtual ~A7() {}
807 
getA1_3t2::A7808     A1* getA1_3() {return A5::getA1_3();}
getA1_4t2::A7809     A1* getA1_4() {return A5::getA1_4();}
getA1_6t2::A7810     A1* getA1_6() {return A6::getA1_6();}
getA2t2::A7811     A2* getA2() {return A5::getA2();}
getA3t2::A7812     A3* getA3() {return A5::getA3();}
getA4t2::A7813     A4* getA4() {return A5::getA4();}
getA5t2::A7814     A5* getA5() {return A5::getA5();}
getA6t2::A7815     A6* getA6() {return A6::getA6();}
getA7t2::A7816     A7* getA7() {return this;}
817 };
818 
819 struct A8
820     : public A7
821 {
822     char _[3489];
~A8t2::A8823     virtual ~A8() {}
824 
getA1_3t2::A8825     A1* getA1_3() {return A7::getA1_3();}
getA1_4t2::A8826     A1* getA1_4() {return A7::getA1_4();}
getA1_6t2::A8827     A1* getA1_6() {return A7::getA1_6();}
getA2t2::A8828     A2* getA2() {return A7::getA2();}
getA3t2::A8829     A3* getA3() {return A7::getA3();}
getA4t2::A8830     A4* getA4() {return A7::getA4();}
getA5t2::A8831     A5* getA5() {return A7::getA5();}
getA6t2::A8832     A6* getA6() {return A7::getA6();}
getA7t2::A8833     A7* getA7() {return A7::getA7();}
getA8t2::A8834     A8* getA8() {return this;}
835 };
836 
837 struct A9
838     : public A1
839 {
840     char _[3481];
~A9t2::A9841     virtual ~A9() {}
842 
getA1_9t2::A9843     A1* getA1_9() {return A1::getA1();}
getA9t2::A9844     A9* getA9() {return this;}
845 };
846 
847 struct A10
848     : public virtual A8
849 {
850     char _[4831];
~A10t2::A10851     virtual ~A10() {}
852 
getA1_3t2::A10853     A1* getA1_3() {return A8::getA1_3();}
getA1_4t2::A10854     A1* getA1_4() {return A8::getA1_4();}
getA1_6t2::A10855     A1* getA1_6() {return A8::getA1_6();}
getA2t2::A10856     A2* getA2() {return A8::getA2();}
getA3t2::A10857     A3* getA3() {return A8::getA3();}
getA4t2::A10858     A4* getA4() {return A8::getA4();}
getA5t2::A10859     A5* getA5() {return A8::getA5();}
getA6t2::A10860     A6* getA6() {return A8::getA6();}
getA7t2::A10861     A7* getA7() {return A8::getA7();}
getA8t2::A10862     A8* getA8() {return A8::getA8();}
getA10t2::A10863     A10* getA10() {return this;}
864 };
865 
866 struct A11
867     : public virtual A8,
868       public A9
869 {
870     char _[6483];
~A11t2::A11871     virtual ~A11() {}
872 
getA1_3t2::A11873     A1* getA1_3() {return A8::getA1_3();}
getA1_4t2::A11874     A1* getA1_4() {return A8::getA1_4();}
getA1_6t2::A11875     A1* getA1_6() {return A8::getA1_6();}
getA1_9t2::A11876     A1* getA1_9() {return A9::getA1_9();}
getA2t2::A11877     A2* getA2() {return A8::getA2();}
getA3t2::A11878     A3* getA3() {return A8::getA3();}
getA4t2::A11879     A4* getA4() {return A8::getA4();}
getA5t2::A11880     A5* getA5() {return A8::getA5();}
getA6t2::A11881     A6* getA6() {return A8::getA6();}
getA7t2::A11882     A7* getA7() {return A8::getA7();}
getA8t2::A11883     A8* getA8() {return A8::getA8();}
getA9t2::A11884     A9* getA9() {return A9::getA9();}
getA11t2::A11885     A11* getA11() {return this;}
886 };
887 
888 struct A12
889     : public A10,
890       public A11
891 {
892     char _[2283];
~A12t2::A12893     virtual ~A12() {}
894 
getA1_3t2::A12895     A1* getA1_3() {return A10::getA1_3();}
getA1_4t2::A12896     A1* getA1_4() {return A10::getA1_4();}
getA1_6t2::A12897     A1* getA1_6() {return A10::getA1_6();}
getA1_9t2::A12898     A1* getA1_9() {return A11::getA1_9();}
getA2t2::A12899     A2* getA2() {return A10::getA2();}
getA3t2::A12900     A3* getA3() {return A10::getA3();}
getA4t2::A12901     A4* getA4() {return A10::getA4();}
getA5t2::A12902     A5* getA5() {return A10::getA5();}
getA6t2::A12903     A6* getA6() {return A10::getA6();}
getA7t2::A12904     A7* getA7() {return A10::getA7();}
getA8t2::A12905     A8* getA8() {return A10::getA8();}
getA9t2::A12906     A9* getA9() {return A11::getA9();}
getA10t2::A12907     A10* getA10() {return A10::getA10();}
getA11t2::A12908     A11* getA11() {return A11::getA11();}
getA12t2::A12909     A12* getA12() {return this;}
910 };
911 
912 struct A13
913     : public A12
914 {
915     char _[1283];
~A13t2::A13916     virtual ~A13() {}
917 
getA1_3t2::A13918     A1* getA1_3() {return A12::getA1_3();}
getA1_4t2::A13919     A1* getA1_4() {return A12::getA1_4();}
getA1_6t2::A13920     A1* getA1_6() {return A12::getA1_6();}
getA1_9t2::A13921     A1* getA1_9() {return A12::getA1_9();}
getA2t2::A13922     A2* getA2() {return A12::getA2();}
getA3t2::A13923     A3* getA3() {return A12::getA3();}
getA4t2::A13924     A4* getA4() {return A12::getA4();}
getA5t2::A13925     A5* getA5() {return A12::getA5();}
getA6t2::A13926     A6* getA6() {return A12::getA6();}
getA7t2::A13927     A7* getA7() {return A12::getA7();}
getA8t2::A13928     A8* getA8() {return A12::getA8();}
getA9t2::A13929     A9* getA9() {return A12::getA9();}
getA10t2::A13930     A10* getA10() {return A12::getA10();}
getA11t2::A13931     A11* getA11() {return A12::getA11();}
getA12t2::A13932     A12* getA12() {return A12::getA12();}
getA13t2::A13933     A13* getA13() {return this;}
934 };
935 
936 A3 a3;
937 A4 a4;
938 A5 a5;
939 A6 a6;
940 A7 a7;
941 A8 a8;
942 A9 a9;
943 A10 a10;
944 A11 a11;
945 A12 a12;
946 A13 a13;
947 
test()948 void test()
949 {
950     assert(dynamic_cast<A3*>(a3.getA1_3()) == 0);
951     assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
952 
953     assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
954     assert(dynamic_cast<A3*>(a4.getA2()) == 0);
955     assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
956     assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
957 
958     assert(dynamic_cast<A3*>(a5.getA1_3()) == 0);
959     assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
960 
961     assert(dynamic_cast<A4*>(a5.getA1_3()) == 0);
962     assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
963     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
964     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
965 
966     assert(dynamic_cast<A5*>(a5.getA1_3()) == 0);
967     assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
968     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
969     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
970     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
971     assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
972 
973     assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
974 
975     assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
976 
977     assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
978 
979     assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
980 
981     assert(dynamic_cast<A3*>(a7.getA1_3()) == 0);
982     assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
983     assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
984 
985     assert(dynamic_cast<A4*>(a7.getA1_3()) == 0);
986     assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
987     assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
988     assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
989 
990     assert(dynamic_cast<A5*>(a7.getA1_3()) == 0);
991     assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
992     assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
993     assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
994     assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
995 
996     assert(dynamic_cast<A6*>(a7.getA1_3()) == 0);
997     assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
998     assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
999     assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1000     assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1001     assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1002     assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1003 
1004     assert(dynamic_cast<A7*>(a7.getA1_3()) == 0);
1005     assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1006     assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1007     assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1008     assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1009     assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1010     assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1011     assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1012 
1013     assert(dynamic_cast<A3*>(a8.getA1_3()) == 0);
1014     assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1015     assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1016 
1017     assert(dynamic_cast<A4*>(a8.getA1_3()) == 0);
1018     assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1019     assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1020     assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1021 
1022     assert(dynamic_cast<A5*>(a8.getA1_3()) == 0);
1023     assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1024     assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1025     assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1026     assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1027 
1028     assert(dynamic_cast<A6*>(a8.getA1_3()) == 0);
1029     assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1030     assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1031     assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1032     assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1033     assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1034     assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1035 
1036     assert(dynamic_cast<A7*>(a8.getA1_3()) == 0);
1037     assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1038     assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1039     assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1040     assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1041     assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1042     assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1043     assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1044 
1045     assert(dynamic_cast<A8*>(a8.getA1_3()) == 0);
1046     assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1047     assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1048     assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1049     assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1050     assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1051     assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1052     assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1053     assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1054 
1055     assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1056 
1057     assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1058 
1059     assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1060 
1061     assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1062 
1063     assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1064 
1065     assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1066 
1067     assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1068 
1069     assert(dynamic_cast<A3*>(a10.getA1_3()) == 0);
1070     assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1071     assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1072     assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1073 
1074     assert(dynamic_cast<A4*>(a10.getA1_3()) == 0);
1075     assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1076     assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1077     assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1078     assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1079 
1080     assert(dynamic_cast<A5*>(a10.getA1_3()) == 0);
1081     assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1082     assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1083     assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1084     assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1085     assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1086 
1087     assert(dynamic_cast<A6*>(a10.getA1_3()) == 0);
1088     assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1089     assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1090     assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1091     assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1092     assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1093     assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1094 
1095     assert(dynamic_cast<A7*>(a10.getA1_3()) == 0);
1096     assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1097     assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1098     assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1099     assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1100     assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1101     assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1102     assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1103 
1104     assert(dynamic_cast<A8*>(a10.getA1_3()) == 0);
1105     assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1106     assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1107     assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1108     assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1109     assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1110     assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1111     assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1112     assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1113 
1114     assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1115     assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1116     assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1117     assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1118     assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1119     assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1120     assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1121     assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1122     assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1123     assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1124 
1125     assert(dynamic_cast<A10*>(a10.getA1_3()) == 0);
1126     assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1127     assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1128     assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1129     assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1130     assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1131     assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1132     assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1133     assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1134     assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1135 
1136     assert(dynamic_cast<A3*>(a11.getA1_3()) == 0);
1137     assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1138     assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1139     assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1140     assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1141 
1142     assert(dynamic_cast<A4*>(a11.getA1_3()) == 0);
1143     assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1144     assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1145     assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1146     assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1147     assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1148 
1149     assert(dynamic_cast<A5*>(a11.getA1_3()) == 0);
1150     assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1151     assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1152     assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1153     assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1154     assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1155     assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1156 
1157     assert(dynamic_cast<A6*>(a11.getA1_3()) == 0);
1158     assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1159     assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1160     assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1161     assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1162     assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1163     assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1164     assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1165 
1166     assert(dynamic_cast<A7*>(a11.getA1_3()) == 0);
1167     assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1168     assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1169     assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1170     assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1171     assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1172     assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1173     assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1174     assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1175 
1176     assert(dynamic_cast<A8*>(a11.getA1_3()) == 0);
1177     assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1178     assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1179     assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1180     assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1181     assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1182     assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1183     assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1184     assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1185     assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1186 
1187     assert(dynamic_cast<A9*>(a11.getA1_3()) == 0);
1188     assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1189     assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1190     assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1191     assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1192     assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1193     assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1194     assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1195     assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1196     assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1197     assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1198 
1199     assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1200     assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1201     assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1202     assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1203     assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1204     assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1205     assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1206     assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1207     assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1208     assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1209     assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1210     assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1211 
1212     assert(dynamic_cast<A11*>(a11.getA1_3()) == 0);
1213     assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1214     assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1215     assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1216     assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1217     assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1218     assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1219     assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1220     assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1221     assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1222     assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1223     assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1224 
1225     assert(dynamic_cast<A3*>(a12.getA1_3()) == 0);
1226     assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1227     assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1228     assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1229     assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1230 
1231     assert(dynamic_cast<A4*>(a12.getA1_3()) == 0);
1232     assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1233     assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1234     assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1235     assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1236     assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1237 
1238     assert(dynamic_cast<A5*>(a12.getA1_3()) == 0);
1239     assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1240     assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1241     assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1242     assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1243     assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1244     assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1245 
1246     assert(dynamic_cast<A6*>(a12.getA1_3()) == 0);
1247     assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1248     assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1249     assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1250     assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1251     assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1252     assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1253     assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1254 
1255     assert(dynamic_cast<A7*>(a12.getA1_3()) == 0);
1256     assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1257     assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1258     assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1259     assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1260     assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1261     assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1262     assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1263     assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1264 
1265     assert(dynamic_cast<A8*>(a12.getA1_3()) == 0);
1266     assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1267     assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1268     assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1269     assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1270     assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1271     assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1272     assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1273     assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1274     assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1275 
1276     assert(dynamic_cast<A9*>(a12.getA1_3()) == 0);
1277     assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
1278     assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
1279     assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
1280     assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
1281     assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
1282     assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
1283     assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
1284     assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
1285     assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
1286     assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
1287 
1288     assert(dynamic_cast<A10*>(a12.getA1_3()) == 0);
1289     assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
1290     assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
1291     assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
1292     assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
1293     assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
1294     assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
1295     assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
1296     assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
1297     assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
1298     assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
1299     assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
1300 
1301     assert(dynamic_cast<A11*>(a12.getA1_3()) == 0);
1302     assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
1303     assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
1304     assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
1305     assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
1306     assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
1307     assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
1308     assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
1309     assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
1310     assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
1311     assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
1312     assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
1313     assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
1314 
1315     assert(dynamic_cast<A12*>(a12.getA1_3()) == 0);
1316     assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
1317     assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
1318     assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
1319     assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
1320     assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
1321     assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
1322     assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
1323     assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
1324     assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
1325     assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
1326     assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
1327     assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
1328     assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
1329 
1330     assert(dynamic_cast<A3*>(a13.getA1_3()) == 0);
1331     assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
1332     assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
1333     assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
1334     assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
1335 
1336     assert(dynamic_cast<A4*>(a13.getA1_3()) == 0);
1337     assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
1338     assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
1339     assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
1340     assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
1341     assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
1342 
1343     assert(dynamic_cast<A5*>(a13.getA1_3()) == 0);
1344     assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
1345     assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
1346     assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
1347     assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
1348     assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
1349     assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
1350 
1351     assert(dynamic_cast<A6*>(a13.getA1_3()) == 0);
1352     assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
1353     assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
1354     assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
1355     assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
1356     assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
1357     assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
1358     assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
1359 
1360     assert(dynamic_cast<A7*>(a13.getA1_3()) == 0);
1361     assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
1362     assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
1363     assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
1364     assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
1365     assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
1366     assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
1367     assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
1368     assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
1369 
1370     assert(dynamic_cast<A8*>(a13.getA1_3()) == 0);
1371     assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
1372     assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
1373     assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
1374     assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
1375     assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
1376     assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
1377     assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
1378     assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
1379     assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
1380 
1381     assert(dynamic_cast<A9*>(a13.getA1_3()) == 0);
1382     assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
1383     assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
1384     assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
1385     assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
1386     assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
1387     assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
1388     assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
1389     assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
1390     assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
1391     assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
1392 
1393     assert(dynamic_cast<A10*>(a13.getA1_3()) == 0);
1394     assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
1395     assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
1396     assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
1397     assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
1398     assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
1399     assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
1400     assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
1401     assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
1402     assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
1403     assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
1404     assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
1405 
1406     assert(dynamic_cast<A11*>(a13.getA1_3()) == 0);
1407     assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
1408     assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
1409     assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
1410     assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
1411     assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
1412     assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
1413     assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
1414     assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
1415     assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
1416     assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
1417     assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
1418     assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
1419 
1420     assert(dynamic_cast<A12*>(a13.getA1_3()) == 0);
1421     assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
1422     assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
1423     assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
1424     assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
1425     assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
1426     assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
1427     assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
1428     assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
1429     assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
1430     assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
1431     assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
1432     assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
1433     assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
1434 
1435     assert(dynamic_cast<A13*>(a13.getA1_3()) == 0);
1436     assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
1437     assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
1438     assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
1439     assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
1440     assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
1441     assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
1442     assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
1443     assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
1444     assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
1445     assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
1446     assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
1447     assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
1448     assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
1449     assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
1450 }
1451 
1452 }  // t2
1453 
1454 namespace t3
1455 {
1456 
1457 struct A1
1458 {
1459     char _[43981];
~A1t3::A11460     virtual ~A1() {}
1461 
getA1t3::A11462     A1* getA1() {return this;}
1463 };
1464 
1465 struct A2
1466 {
1467     char _[34981];
~A2t3::A21468     virtual ~A2() {}
1469 
getA2t3::A21470     A2* getA2() {return this;}
1471 };
1472 
1473 struct A3
1474     : public A1,
1475       protected virtual A2
1476 {
1477     char _[93481];
~A3t3::A31478     virtual ~A3() {}
1479 
getA1_3t3::A31480     A1* getA1_3() {return A1::getA1();}
getA2t3::A31481     A2* getA2() {return A2::getA2();}
getA3t3::A31482     A3* getA3() {return this;}
1483 };
1484 
1485 struct A4
1486     : public virtual A2,
1487       public A1
1488 {
1489     char _[13489];
~A4t3::A41490     virtual ~A4() {}
1491 
getA1_4t3::A41492     A1* getA1_4() {return A1::getA1();}
getA2t3::A41493     A2* getA2() {return A2::getA2();}
getA4t3::A41494     A4* getA4() {return this;}
1495 };
1496 
1497 struct A5
1498     : public A3,
1499       public A4
1500 {
1501     char _[13489];
~A5t3::A51502     virtual ~A5() {}
1503 
getA1_3t3::A51504     A1* getA1_3() {return A3::getA1();}
getA1_4t3::A51505     A1* getA1_4() {return A4::getA1();}
getA2t3::A51506     A2* getA2() {return A3::getA2();}
getA3t3::A51507     A3* getA3() {return A3::getA3();}
getA4t3::A51508     A4* getA4() {return A4::getA4();}
getA5t3::A51509     A5* getA5() {return this;}
1510 };
1511 
1512 struct A6
1513     : public A1
1514 {
1515     char _[81349];
~A6t3::A61516     virtual ~A6() {}
1517 
getA1_6t3::A61518     A1* getA1_6() {return A1::getA1();}
getA6t3::A61519     A6* getA6() {return this;}
1520 };
1521 
1522 struct A7
1523     : public A5,
1524       public A6
1525 {
1526     char _[34819];
~A7t3::A71527     virtual ~A7() {}
1528 
getA1_3t3::A71529     A1* getA1_3() {return A5::getA1_3();}
getA1_4t3::A71530     A1* getA1_4() {return A5::getA1_4();}
getA1_6t3::A71531     A1* getA1_6() {return A6::getA1_6();}
getA2t3::A71532     A2* getA2() {return A5::getA2();}
getA3t3::A71533     A3* getA3() {return A5::getA3();}
getA4t3::A71534     A4* getA4() {return A5::getA4();}
getA5t3::A71535     A5* getA5() {return A5::getA5();}
getA6t3::A71536     A6* getA6() {return A6::getA6();}
getA7t3::A71537     A7* getA7() {return this;}
1538 };
1539 
1540 struct A8
1541     : public A7
1542 {
1543     char _[3489];
~A8t3::A81544     virtual ~A8() {}
1545 
getA1_3t3::A81546     A1* getA1_3() {return A7::getA1_3();}
getA1_4t3::A81547     A1* getA1_4() {return A7::getA1_4();}
getA1_6t3::A81548     A1* getA1_6() {return A7::getA1_6();}
getA2t3::A81549     A2* getA2() {return A7::getA2();}
getA3t3::A81550     A3* getA3() {return A7::getA3();}
getA4t3::A81551     A4* getA4() {return A7::getA4();}
getA5t3::A81552     A5* getA5() {return A7::getA5();}
getA6t3::A81553     A6* getA6() {return A7::getA6();}
getA7t3::A81554     A7* getA7() {return A7::getA7();}
getA8t3::A81555     A8* getA8() {return this;}
1556 };
1557 
1558 struct A9
1559     : public A1
1560 {
1561     char _[3481];
~A9t3::A91562     virtual ~A9() {}
1563 
getA1_9t3::A91564     A1* getA1_9() {return A1::getA1();}
getA9t3::A91565     A9* getA9() {return this;}
1566 };
1567 
1568 struct A10
1569     : public virtual A8
1570 {
1571     char _[4831];
~A10t3::A101572     virtual ~A10() {}
1573 
getA1_3t3::A101574     A1* getA1_3() {return A8::getA1_3();}
getA1_4t3::A101575     A1* getA1_4() {return A8::getA1_4();}
getA1_6t3::A101576     A1* getA1_6() {return A8::getA1_6();}
getA2t3::A101577     A2* getA2() {return A8::getA2();}
getA3t3::A101578     A3* getA3() {return A8::getA3();}
getA4t3::A101579     A4* getA4() {return A8::getA4();}
getA5t3::A101580     A5* getA5() {return A8::getA5();}
getA6t3::A101581     A6* getA6() {return A8::getA6();}
getA7t3::A101582     A7* getA7() {return A8::getA7();}
getA8t3::A101583     A8* getA8() {return A8::getA8();}
getA10t3::A101584     A10* getA10() {return this;}
1585 };
1586 
1587 struct A11
1588     : public virtual A8,
1589       public A9
1590 {
1591     char _[6483];
~A11t3::A111592     virtual ~A11() {}
1593 
getA1_3t3::A111594     A1* getA1_3() {return A8::getA1_3();}
getA1_4t3::A111595     A1* getA1_4() {return A8::getA1_4();}
getA1_6t3::A111596     A1* getA1_6() {return A8::getA1_6();}
getA1_9t3::A111597     A1* getA1_9() {return A9::getA1_9();}
getA2t3::A111598     A2* getA2() {return A8::getA2();}
getA3t3::A111599     A3* getA3() {return A8::getA3();}
getA4t3::A111600     A4* getA4() {return A8::getA4();}
getA5t3::A111601     A5* getA5() {return A8::getA5();}
getA6t3::A111602     A6* getA6() {return A8::getA6();}
getA7t3::A111603     A7* getA7() {return A8::getA7();}
getA8t3::A111604     A8* getA8() {return A8::getA8();}
getA9t3::A111605     A9* getA9() {return A9::getA9();}
getA11t3::A111606     A11* getA11() {return this;}
1607 };
1608 
1609 struct A12
1610     : public A10,
1611       public A11
1612 {
1613     char _[2283];
~A12t3::A121614     virtual ~A12() {}
1615 
getA1_3t3::A121616     A1* getA1_3() {return A10::getA1_3();}
getA1_4t3::A121617     A1* getA1_4() {return A10::getA1_4();}
getA1_6t3::A121618     A1* getA1_6() {return A10::getA1_6();}
getA1_9t3::A121619     A1* getA1_9() {return A11::getA1_9();}
getA2t3::A121620     A2* getA2() {return A10::getA2();}
getA3t3::A121621     A3* getA3() {return A10::getA3();}
getA4t3::A121622     A4* getA4() {return A10::getA4();}
getA5t3::A121623     A5* getA5() {return A10::getA5();}
getA6t3::A121624     A6* getA6() {return A10::getA6();}
getA7t3::A121625     A7* getA7() {return A10::getA7();}
getA8t3::A121626     A8* getA8() {return A10::getA8();}
getA9t3::A121627     A9* getA9() {return A11::getA9();}
getA10t3::A121628     A10* getA10() {return A10::getA10();}
getA11t3::A121629     A11* getA11() {return A11::getA11();}
getA12t3::A121630     A12* getA12() {return this;}
1631 };
1632 
1633 struct A13
1634     : public A12
1635 {
1636     char _[1283];
~A13t3::A131637     virtual ~A13() {}
1638 
getA1_3t3::A131639     A1* getA1_3() {return A12::getA1_3();}
getA1_4t3::A131640     A1* getA1_4() {return A12::getA1_4();}
getA1_6t3::A131641     A1* getA1_6() {return A12::getA1_6();}
getA1_9t3::A131642     A1* getA1_9() {return A12::getA1_9();}
getA2t3::A131643     A2* getA2() {return A12::getA2();}
getA3t3::A131644     A3* getA3() {return A12::getA3();}
getA4t3::A131645     A4* getA4() {return A12::getA4();}
getA5t3::A131646     A5* getA5() {return A12::getA5();}
getA6t3::A131647     A6* getA6() {return A12::getA6();}
getA7t3::A131648     A7* getA7() {return A12::getA7();}
getA8t3::A131649     A8* getA8() {return A12::getA8();}
getA9t3::A131650     A9* getA9() {return A12::getA9();}
getA10t3::A131651     A10* getA10() {return A12::getA10();}
getA11t3::A131652     A11* getA11() {return A12::getA11();}
getA12t3::A131653     A12* getA12() {return A12::getA12();}
getA13t3::A131654     A13* getA13() {return this;}
1655 };
1656 
1657 A3 a3;
1658 A4 a4;
1659 A5 a5;
1660 A6 a6;
1661 A7 a7;
1662 A8 a8;
1663 A9 a9;
1664 A10 a10;
1665 A11 a11;
1666 A12 a12;
1667 A13 a13;
1668 
test()1669 void test()
1670 {
1671     assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
1672     assert(dynamic_cast<A3*>(a3.getA2()) == 0);
1673 
1674     assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
1675     assert(dynamic_cast<A3*>(a4.getA2()) == 0);
1676     assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
1677     assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
1678 
1679     assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
1680     assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
1681 
1682     assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
1683     assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
1684     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1685     assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1686 
1687     assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
1688     assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
1689     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1690     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1691     assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1692     assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
1693 
1694     assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
1695 
1696     assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
1697 
1698     assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
1699 
1700     assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
1701 
1702     assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
1703     assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
1704     assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
1705 
1706     assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
1707     assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
1708     assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
1709     assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
1710 
1711     assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
1712     assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
1713     assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
1714     assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
1715     assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
1716 
1717     assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
1718     assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
1719     assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
1720     assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1721     assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1722     assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1723     assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1724 
1725     assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
1726     assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1727     assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1728     assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1729     assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1730     assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1731     assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1732     assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1733 
1734     assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
1735     assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1736     assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1737 
1738     assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
1739     assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1740     assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1741     assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1742 
1743     assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
1744     assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1745     assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1746     assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1747     assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1748 
1749     assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
1750     assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1751     assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1752     assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1753     assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1754     assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1755     assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1756 
1757     assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
1758     assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1759     assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1760     assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1761     assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1762     assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1763     assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1764     assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1765 
1766     assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
1767     assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1768     assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1769     assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1770     assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1771     assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1772     assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1773     assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1774     assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1775 
1776     assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1777 
1778     assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1779 
1780     assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1781 
1782     assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1783 
1784     assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1785 
1786     assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1787 
1788     assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1789 
1790     assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
1791     assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1792     assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1793     assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1794 
1795     assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
1796     assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1797     assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1798     assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1799     assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1800 
1801     assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
1802     assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1803     assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1804     assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1805     assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1806     assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1807 
1808     assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
1809     assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1810     assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1811     assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1812     assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1813     assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1814     assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1815 
1816     assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
1817     assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1818     assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1819     assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1820     assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1821     assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1822     assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1823     assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1824 
1825     assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
1826     assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1827     assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1828     assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1829     assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1830     assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1831     assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1832     assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1833     assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1834 
1835     assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1836     assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1837     assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1838     assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1839     assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1840     assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1841     assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1842     assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1843     assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1844     assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1845 
1846     assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
1847     assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1848     assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1849     assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1850     assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1851     assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1852     assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1853     assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1854     assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1855     assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1856 
1857     assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
1858     assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1859     assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1860     assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1861     assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1862 
1863     assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
1864     assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1865     assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1866     assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1867     assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1868     assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1869 
1870     assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
1871     assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1872     assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1873     assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1874     assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1875     assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1876     assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1877 
1878     assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
1879     assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1880     assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1881     assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1882     assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1883     assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1884     assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1885     assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1886 
1887     assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
1888     assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1889     assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1890     assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1891     assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1892     assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1893     assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1894     assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1895     assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1896 
1897     assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
1898     assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1899     assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1900     assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1901     assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1902     assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1903     assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1904     assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1905     assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1906     assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1907 
1908     assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
1909     assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1910     assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1911     assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1912     assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1913     assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1914     assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1915     assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1916     assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1917     assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1918     assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1919 
1920     assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1921     assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1922     assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1923     assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1924     assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1925     assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1926     assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1927     assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1928     assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1929     assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1930     assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1931     assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1932 
1933     assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
1934     assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1935     assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1936     assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1937     assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1938     assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1939     assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1940     assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1941     assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1942     assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1943     assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1944     assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1945 
1946     assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
1947     assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1948     assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1949     assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1950     assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1951 
1952     assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
1953     assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1954     assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1955     assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1956     assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1957     assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1958 
1959     assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
1960     assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1961     assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1962     assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1963     assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1964     assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1965     assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1966 
1967     assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
1968     assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1969     assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1970     assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1971     assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1972     assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1973     assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1974     assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1975 
1976     assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
1977     assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1978     assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1979     assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1980     assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1981     assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1982     assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1983     assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1984     assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1985 
1986     assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
1987     assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1988     assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1989     assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1990     assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1991     assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1992     assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1993     assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1994     assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1995     assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1996 
1997     assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
1998     assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
1999     assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
2000     assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
2001     assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
2002     assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
2003     assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
2004     assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
2005     assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
2006     assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
2007     assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
2008 
2009     assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
2010     assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
2011     assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
2012     assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
2013     assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
2014     assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
2015     assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
2016     assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
2017     assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
2018     assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
2019     assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
2020     assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
2021 
2022     assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
2023     assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
2024     assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
2025     assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
2026     assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
2027     assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
2028     assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
2029     assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
2030     assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
2031     assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
2032     assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
2033     assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
2034     assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
2035 
2036     assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
2037     assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
2038     assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
2039     assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
2040     assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
2041     assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
2042     assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
2043     assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
2044     assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
2045     assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
2046     assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
2047     assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
2048     assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
2049     assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
2050 
2051     assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
2052     assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
2053     assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
2054     assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
2055     assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
2056 
2057     assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
2058     assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
2059     assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
2060     assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
2061     assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
2062     assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
2063 
2064     assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
2065     assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
2066     assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
2067     assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
2068     assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
2069     assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
2070     assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
2071 
2072     assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
2073     assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
2074     assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
2075     assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
2076     assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
2077     assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
2078     assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
2079     assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
2080 
2081     assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
2082     assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
2083     assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
2084     assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
2085     assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
2086     assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
2087     assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
2088     assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
2089     assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
2090 
2091     assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
2092     assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
2093     assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
2094     assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
2095     assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
2096     assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
2097     assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
2098     assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
2099     assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
2100     assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
2101 
2102     assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
2103     assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
2104     assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
2105     assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
2106     assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
2107     assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
2108     assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
2109     assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
2110     assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
2111     assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
2112     assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
2113 
2114     assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
2115     assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
2116     assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
2117     assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
2118     assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
2119     assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
2120     assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
2121     assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
2122     assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
2123     assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
2124     assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
2125     assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
2126 
2127     assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
2128     assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
2129     assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
2130     assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
2131     assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
2132     assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
2133     assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
2134     assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
2135     assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
2136     assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
2137     assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
2138     assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
2139     assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
2140 
2141     assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
2142     assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
2143     assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
2144     assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
2145     assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
2146     assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
2147     assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
2148     assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
2149     assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
2150     assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
2151     assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
2152     assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
2153     assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
2154     assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
2155 
2156     assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
2157     assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
2158     assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
2159     assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
2160     assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
2161     assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
2162     assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
2163     assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
2164     assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
2165     assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
2166     assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
2167     assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
2168     assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
2169     assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
2170     assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
2171 }
2172 
2173 }  // t3
2174 
main(int,char **)2175 int main(int, char**)
2176 {
2177     timer t;
2178     t1::test();
2179     t2::test();
2180     t3::test();
2181 
2182     return 0;
2183 }
2184