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