[test-suite] r214126 - ABI-Testsuite: Bulk of the testsuite
Sunil Srivastava
sunil_srivastava at playstation.sony.com
Mon Jul 28 14:20:39 PDT 2014
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/T_empty.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/T_nearly_empty.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/T_nearly_empty.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/T_nearly_empty.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/T_nearly_empty.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,7179 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
+// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
+// RUN: c_compiler -c %s -I "common" -o %t3.o
+// RUN: linker -o %t2%exeext %t1.o %t2.o %t3.o
+// RUN: runtool %t2%exeext | checker "TEST PASSED"
+#include "testsuite.h"
+#ifdef __cplusplus
+
+struct em_0 {
+};
+//SIG(-1 em_0) C1{}
+
+
+
+static void Test_em_0()
+{
+ {
+ init_simple_test("em_0");
+ em_0 lv;
+ check2(sizeof(lv), 1, "sizeof(em_0)");
+ check2(__alignof__(lv), 1, "__alignof__(em_0)");
+ }
+}
+static Arrange_To_Call_Me vem_0(Test_em_0, "em_0", 1);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI4em_0[];
+VTBL_ENTRY *P__ZTI4em_0 = _ZTI4em_0;
+Class_Descriptor cd_em_0 = { "em_0", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ 1, // object size
+ NSPAIRA(_ZTI4em_0),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct em_1 {
+};
+//SIG(-1 em_1) C1{}
+
+
+
+static void Test_em_1()
+{
+ {
+ init_simple_test("em_1");
+ em_1 lv;
+ check2(sizeof(lv), 1, "sizeof(em_1)");
+ check2(__alignof__(lv), 1, "__alignof__(em_1)");
+ }
+}
+static Arrange_To_Call_Me vem_1(Test_em_1, "em_1", 1);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI4em_1[];
+VTBL_ENTRY *P__ZTI4em_1 = _ZTI4em_1;
+Class_Descriptor cd_em_1 = { "em_1", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ 1, // object size
+ NSPAIRA(_ZTI4em_1),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct ne_0 {
+ void foo(); // _ZN4ne_03fooEv
+};
+//SIG(-1 ne_0) C1{ m}
+
+
+void ne_0 ::foo(){}
+
+static void Test_ne_0()
+{
+ {
+ init_simple_test("ne_0");
+ ne_0 lv;
+ check2(sizeof(lv), 1, "sizeof(ne_0)");
+ check2(__alignof__(lv), 1, "__alignof__(ne_0)");
+ }
+}
+static Arrange_To_Call_Me vne_0(Test_ne_0, "ne_0", 1);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI4ne_0[];
+VTBL_ENTRY *P__ZTI4ne_0 = _ZTI4ne_0;
+Class_Descriptor cd_ne_0 = { "ne_0", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ 1, // object size
+ NSPAIRA(_ZTI4ne_0),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct ne_1 {
+ int :0;
+ void foo(); // _ZN4ne_13fooEv
+};
+//SIG(-1 ne_1) C1{ m Fi:0}
+
+
+void ne_1 ::foo(){}
+
+static void Test_ne_1()
+{
+ {
+ init_simple_test("ne_1");
+ static ne_1 lv;
+ check2(sizeof(lv), ABISELECT(1,1), "sizeof(ne_1)");
+ check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(ne_1)");
+ }
+}
+static Arrange_To_Call_Me vne_1(Test_ne_1, "ne_1", ABISELECT(1,1));
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI4ne_1[];
+VTBL_ENTRY *P__ZTI4ne_1 = _ZTI4ne_1;
+Class_Descriptor cd_ne_1 = { "ne_1", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ ABISELECT(1,1), // object size
+ NSPAIRA(_ZTI4ne_1),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct ne_2 {
+ short :0;
+ int :0;
+ void foo(); // _ZN4ne_23fooEv
+};
+//SIG(-1 ne_2) C1{ m Fs:0 Fi:0}
+
+
+void ne_2 ::foo(){}
+
+static void Test_ne_2()
+{
+ {
+ init_simple_test("ne_2");
+ static ne_2 lv;
+ check2(sizeof(lv), ABISELECT(1,1), "sizeof(ne_2)");
+ check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(ne_2)");
+ }
+}
+static Arrange_To_Call_Me vne_2(Test_ne_2, "ne_2", ABISELECT(1,1));
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI4ne_2[];
+VTBL_ENTRY *P__ZTI4ne_2 = _ZTI4ne_2;
+Class_Descriptor cd_ne_2 = { "ne_2", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ ABISELECT(1,1), // object size
+ NSPAIRA(_ZTI4ne_2),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct xx {
+ int p;
+};
+//SIG(-1 xx) C1{ Fi}
+
+
+
+static void Test_xx()
+{
+ {
+ init_simple_test("xx");
+ xx lv;
+ check2(sizeof(lv), 4, "sizeof(xx)");
+ check2(__alignof__(lv), 4, "__alignof__(xx)");
+ check_field_offset(lv, p, 0, "xx.p");
+ }
+}
+static Arrange_To_Call_Me vxx(Test_xx, "xx", 4);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI2xx[];
+VTBL_ENTRY *P__ZTI2xx = _ZTI2xx;
+Class_Descriptor cd_xx = { "xx", // class name
+ 0,0,//no base classes
+ 0, // no vftv
+ 0, //no vtt
+ 4, // object size
+ NSPAIRA(_ZTI2xx),ABISELECT(16,8), //typeinfo_var
+ {0,0},0, // virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t01 : em_0 {
+ virtual void bar(); // _ZN3t013barEv
+ ~t01(); // tgen
+ t01(); // tgen
+};
+//SIG(-1 t01) C1{ BC2{} v1}
+
+
+void t01 ::bar(){vfunc_called(this, "_ZN3t013barEv");}
+t01 ::~t01(){ note_dtor("t01", this);} // tgen
+t01 ::t01(){ note_ctor("t01", this);} // tgen
+
+static void Test_t01()
+{
+ extern Class_Descriptor cd_t01;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t01, buf);
+ t01 *dp, &lv = *(dp=new (buf) t01());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t01)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t01)");
+ check_base_class_offset(lv, (em_0*), 0, "t01");
+ test_class_info(&lv, &cd_t01);
+ dp->~t01();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt01(Test_t01, "t01", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t01C1Ev();
+extern void _ZN3t01D1Ev();
+Name_Map name_map_t01[] = {
+ NSPAIR(_ZN3t01C1Ev),
+ NSPAIR(_ZN3t01D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+static Base_Class bases_t01[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t01[];
+extern void _ZN3t013barEv();
+static VTBL_ENTRY vtc_t01[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t01[0]),
+ (VTBL_ENTRY)&_ZN3t013barEv,
+};
+extern VTBL_ENTRY _ZTI3t01[];
+extern VTBL_ENTRY _ZTV3t01[];
+Class_Descriptor cd_t01 = { "t01", // class name
+ bases_t01, 1,
+ &(vtc_t01[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t01),ABISELECT(24,12), //typeinfo_var
+ NSPAIRA(_ZTV3t01),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t02 : virtual em_0 {
+ virtual void bar(); // _ZN3t023barEv
+ ~t02(); // tgen
+ t02(); // tgen
+};
+//SIG(-1 t02) C1{ VBC2{} v1}
+
+
+void t02 ::bar(){vfunc_called(this, "_ZN3t023barEv");}
+t02 ::~t02(){ note_dtor("t02", this);} // tgen
+t02 ::t02(){ note_ctor("t02", this);} // tgen
+
+static void Test_t02()
+{
+ extern Class_Descriptor cd_t02;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t02, buf);
+ t02 *dp, &lv = *(dp=new (buf) t02());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t02)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t02)");
+ check_base_class_offset(lv, (em_0*), 0, "t02");
+ test_class_info(&lv, &cd_t02);
+ dp->~t02();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt02(Test_t02, "t02", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t02C1Ev();
+extern void _ZN3t02D1Ev();
+Name_Map name_map_t02[] = {
+ NSPAIR(_ZN3t02C1Ev),
+ NSPAIR(_ZN3t02D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+static Base_Class bases_t02[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t02[];
+extern void _ZN3t023barEv();
+static VTBL_ENTRY vtc_t02[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t02[0]),
+ (VTBL_ENTRY)&_ZN3t023barEv,
+};
+extern VTBL_ENTRY _ZTV3t02[];
+static VTT_ENTRY vtt_t02[] = {
+ {&(_ZTV3t02[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t02[];
+extern VTBL_ENTRY _ZTV3t02[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t02[];
+Class_Descriptor cd_t02 = { "t02", // class name
+ bases_t02, 1,
+ &(vtc_t02[0]), // expected_vtbl_contents
+ &(vtt_t02[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t02),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV3t02),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t02),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t03 : em_0 , em_1 {
+ virtual void bar(); // _ZN3t033barEv
+ ~t03(); // tgen
+ t03(); // tgen
+};
+//SIG(-1 t03) C1{ BC2{} BC3{} v1}
+
+
+void t03 ::bar(){vfunc_called(this, "_ZN3t033barEv");}
+t03 ::~t03(){ note_dtor("t03", this);} // tgen
+t03 ::t03(){ note_ctor("t03", this);} // tgen
+
+static void Test_t03()
+{
+ extern Class_Descriptor cd_t03;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t03, buf);
+ t03 *dp, &lv = *(dp=new (buf) t03());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t03)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t03)");
+ check_base_class_offset(lv, (em_0*), 0, "t03");
+ check_base_class_offset(lv, (em_1*), 0, "t03");
+ test_class_info(&lv, &cd_t03);
+ dp->~t03();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt03(Test_t03, "t03", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t03C1Ev();
+extern void _ZN3t03D1Ev();
+Name_Map name_map_t03[] = {
+ NSPAIR(_ZN3t03C1Ev),
+ NSPAIR(_ZN3t03D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t03[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t03[];
+extern void _ZN3t033barEv();
+static VTBL_ENTRY vtc_t03[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t03[0]),
+ (VTBL_ENTRY)&_ZN3t033barEv,
+};
+extern VTBL_ENTRY _ZTI3t03[];
+extern VTBL_ENTRY _ZTV3t03[];
+Class_Descriptor cd_t03 = { "t03", // class name
+ bases_t03, 2,
+ &(vtc_t03[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t03),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t03),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t04 : virtual em_0 , em_1 {
+ virtual void bar(); // _ZN3t043barEv
+ ~t04(); // tgen
+ t04(); // tgen
+};
+//SIG(-1 t04) C1{ VBC2{} BC3{} v1}
+
+
+void t04 ::bar(){vfunc_called(this, "_ZN3t043barEv");}
+t04 ::~t04(){ note_dtor("t04", this);} // tgen
+t04 ::t04(){ note_ctor("t04", this);} // tgen
+
+static void Test_t04()
+{
+ extern Class_Descriptor cd_t04;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t04, buf);
+ t04 *dp, &lv = *(dp=new (buf) t04());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t04)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t04)");
+ check_base_class_offset(lv, (em_0*), 0, "t04");
+ check_base_class_offset(lv, (em_1*), 0, "t04");
+ test_class_info(&lv, &cd_t04);
+ dp->~t04();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt04(Test_t04, "t04", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t04C1Ev();
+extern void _ZN3t04D1Ev();
+Name_Map name_map_t04[] = {
+ NSPAIR(_ZN3t04C1Ev),
+ NSPAIR(_ZN3t04D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t04[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t04[];
+extern void _ZN3t043barEv();
+static VTBL_ENTRY vtc_t04[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t04[0]),
+ (VTBL_ENTRY)&_ZN3t043barEv,
+};
+extern VTBL_ENTRY _ZTV3t04[];
+static VTT_ENTRY vtt_t04[] = {
+ {&(_ZTV3t04[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t04[];
+extern VTBL_ENTRY _ZTV3t04[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t04[];
+Class_Descriptor cd_t04 = { "t04", // class name
+ bases_t04, 2,
+ &(vtc_t04[0]), // expected_vtbl_contents
+ &(vtt_t04[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t04),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t04),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t04),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t05 : em_0 , virtual em_1 {
+ virtual void bar(); // _ZN3t053barEv
+ ~t05(); // tgen
+ t05(); // tgen
+};
+//SIG(-1 t05) C1{ BC2{} VBC3{} v1}
+
+
+void t05 ::bar(){vfunc_called(this, "_ZN3t053barEv");}
+t05 ::~t05(){ note_dtor("t05", this);} // tgen
+t05 ::t05(){ note_ctor("t05", this);} // tgen
+
+static void Test_t05()
+{
+ extern Class_Descriptor cd_t05;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t05, buf);
+ t05 *dp, &lv = *(dp=new (buf) t05());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t05)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t05)");
+ check_base_class_offset(lv, (em_0*), 0, "t05");
+ check_base_class_offset(lv, (em_1*), 0, "t05");
+ test_class_info(&lv, &cd_t05);
+ dp->~t05();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt05(Test_t05, "t05", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t05C1Ev();
+extern void _ZN3t05D1Ev();
+Name_Map name_map_t05[] = {
+ NSPAIR(_ZN3t05C1Ev),
+ NSPAIR(_ZN3t05D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t05[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t05[];
+extern void _ZN3t053barEv();
+static VTBL_ENTRY vtc_t05[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t05[0]),
+ (VTBL_ENTRY)&_ZN3t053barEv,
+};
+extern VTBL_ENTRY _ZTV3t05[];
+static VTT_ENTRY vtt_t05[] = {
+ {&(_ZTV3t05[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t05[];
+extern VTBL_ENTRY _ZTV3t05[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t05[];
+Class_Descriptor cd_t05 = { "t05", // class name
+ bases_t05, 2,
+ &(vtc_t05[0]), // expected_vtbl_contents
+ &(vtt_t05[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t05),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t05),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t05),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t06 : virtual em_0 , virtual em_1 {
+ virtual void bar(); // _ZN3t063barEv
+ ~t06(); // tgen
+ t06(); // tgen
+};
+//SIG(-1 t06) C1{ VBC2{} VBC3{} v1}
+
+
+void t06 ::bar(){vfunc_called(this, "_ZN3t063barEv");}
+t06 ::~t06(){ note_dtor("t06", this);} // tgen
+t06 ::t06(){ note_ctor("t06", this);} // tgen
+
+static void Test_t06()
+{
+ extern Class_Descriptor cd_t06;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t06, buf);
+ t06 *dp, &lv = *(dp=new (buf) t06());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t06)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t06)");
+ check_base_class_offset(lv, (em_0*), 0, "t06");
+ check_base_class_offset(lv, (em_1*), 0, "t06");
+ test_class_info(&lv, &cd_t06);
+ dp->~t06();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt06(Test_t06, "t06", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t06C1Ev();
+extern void _ZN3t06D1Ev();
+Name_Map name_map_t06[] = {
+ NSPAIR(_ZN3t06C1Ev),
+ NSPAIR(_ZN3t06D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t06[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t06[];
+extern void _ZN3t063barEv();
+static VTBL_ENTRY vtc_t06[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t06[0]),
+ (VTBL_ENTRY)&_ZN3t063barEv,
+};
+extern VTBL_ENTRY _ZTV3t06[];
+static VTT_ENTRY vtt_t06[] = {
+ {&(_ZTV3t06[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t06[];
+extern VTBL_ENTRY _ZTV3t06[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t06[];
+Class_Descriptor cd_t06 = { "t06", // class name
+ bases_t06, 2,
+ &(vtc_t06[0]), // expected_vtbl_contents
+ &(vtt_t06[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t06),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t06),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t06),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t07 : em_0 , ne_1 {
+ virtual void bar(); // _ZN3t073barEv
+ ~t07(); // tgen
+ t07(); // tgen
+};
+//SIG(-1 t07) C1{ BC2{} BC3{ m Fi:0} v1}
+
+
+void t07 ::bar(){vfunc_called(this, "_ZN3t073barEv");}
+t07 ::~t07(){ note_dtor("t07", this);} // tgen
+t07 ::t07(){ note_ctor("t07", this);} // tgen
+
+static void Test_t07()
+{
+ extern Class_Descriptor cd_t07;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t07, buf);
+ t07 *dp, &lv = *(dp=new (buf) t07());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t07)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t07)");
+ check_base_class_offset(lv, (em_0*), 0, "t07");
+ check_base_class_offset(lv, (ne_1*), 0, "t07");
+ test_class_info(&lv, &cd_t07);
+ dp->~t07();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt07(Test_t07, "t07", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t07C1Ev();
+extern void _ZN3t07D1Ev();
+Name_Map name_map_t07[] = {
+ NSPAIR(_ZN3t07C1Ev),
+ NSPAIR(_ZN3t07D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t07[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t07[];
+extern void _ZN3t073barEv();
+static VTBL_ENTRY vtc_t07[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t07[0]),
+ (VTBL_ENTRY)&_ZN3t073barEv,
+};
+extern VTBL_ENTRY _ZTI3t07[];
+extern VTBL_ENTRY _ZTV3t07[];
+Class_Descriptor cd_t07 = { "t07", // class name
+ bases_t07, 2,
+ &(vtc_t07[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t07),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t07),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t08 : virtual em_0 , ne_1 {
+ virtual void bar(); // _ZN3t083barEv
+ ~t08(); // tgen
+ t08(); // tgen
+};
+//SIG(-1 t08) C1{ VBC2{} BC3{ m Fi:0} v1}
+
+
+void t08 ::bar(){vfunc_called(this, "_ZN3t083barEv");}
+t08 ::~t08(){ note_dtor("t08", this);} // tgen
+t08 ::t08(){ note_ctor("t08", this);} // tgen
+
+static void Test_t08()
+{
+ extern Class_Descriptor cd_t08;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t08, buf);
+ t08 *dp, &lv = *(dp=new (buf) t08());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t08)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t08)");
+ check_base_class_offset(lv, (em_0*), 0, "t08");
+ check_base_class_offset(lv, (ne_1*), 0, "t08");
+ test_class_info(&lv, &cd_t08);
+ dp->~t08();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt08(Test_t08, "t08", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t08C1Ev();
+extern void _ZN3t08D1Ev();
+Name_Map name_map_t08[] = {
+ NSPAIR(_ZN3t08C1Ev),
+ NSPAIR(_ZN3t08D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t08[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t08[];
+extern void _ZN3t083barEv();
+static VTBL_ENTRY vtc_t08[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t08[0]),
+ (VTBL_ENTRY)&_ZN3t083barEv,
+};
+extern VTBL_ENTRY _ZTV3t08[];
+static VTT_ENTRY vtt_t08[] = {
+ {&(_ZTV3t08[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t08[];
+extern VTBL_ENTRY _ZTV3t08[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t08[];
+Class_Descriptor cd_t08 = { "t08", // class name
+ bases_t08, 2,
+ &(vtc_t08[0]), // expected_vtbl_contents
+ &(vtt_t08[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t08),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t08),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t08),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t09 : em_0 , virtual ne_1 {
+ virtual void bar(); // _ZN3t093barEv
+ ~t09(); // tgen
+ t09(); // tgen
+};
+//SIG(-1 t09) C1{ BC2{} VBC3{ m Fi:0} v1}
+
+
+void t09 ::bar(){vfunc_called(this, "_ZN3t093barEv");}
+t09 ::~t09(){ note_dtor("t09", this);} // tgen
+t09 ::t09(){ note_ctor("t09", this);} // tgen
+
+static void Test_t09()
+{
+ extern Class_Descriptor cd_t09;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t09, buf);
+ t09 *dp, &lv = *(dp=new (buf) t09());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t09)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t09)");
+ check_base_class_offset(lv, (em_0*), 0, "t09");
+ check_base_class_offset(lv, (ne_1*), 0, "t09");
+ test_class_info(&lv, &cd_t09);
+ dp->~t09();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt09(Test_t09, "t09", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t09C1Ev();
+extern void _ZN3t09D1Ev();
+Name_Map name_map_t09[] = {
+ NSPAIR(_ZN3t09C1Ev),
+ NSPAIR(_ZN3t09D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t09[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t09[];
+extern void _ZN3t093barEv();
+static VTBL_ENTRY vtc_t09[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t09[0]),
+ (VTBL_ENTRY)&_ZN3t093barEv,
+};
+extern VTBL_ENTRY _ZTV3t09[];
+static VTT_ENTRY vtt_t09[] = {
+ {&(_ZTV3t09[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t09[];
+extern VTBL_ENTRY _ZTV3t09[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t09[];
+Class_Descriptor cd_t09 = { "t09", // class name
+ bases_t09, 2,
+ &(vtc_t09[0]), // expected_vtbl_contents
+ &(vtt_t09[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t09),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t09),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t09),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t00 : virtual em_0 , virtual ne_1 {
+ virtual void bar(); // _ZN3t003barEv
+ ~t00(); // tgen
+ t00(); // tgen
+};
+//SIG(-1 t00) C1{ VBC2{} VBC3{ m Fi:0} v1}
+
+
+void t00 ::bar(){vfunc_called(this, "_ZN3t003barEv");}
+t00 ::~t00(){ note_dtor("t00", this);} // tgen
+t00 ::t00(){ note_ctor("t00", this);} // tgen
+
+static void Test_t00()
+{
+ extern Class_Descriptor cd_t00;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t00, buf);
+ t00 *dp, &lv = *(dp=new (buf) t00());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t00)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t00)");
+ check_base_class_offset(lv, (em_0*), 0, "t00");
+ check_base_class_offset(lv, (ne_1*), 0, "t00");
+ test_class_info(&lv, &cd_t00);
+ dp->~t00();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt00(Test_t00, "t00", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t00C1Ev();
+extern void _ZN3t00D1Ev();
+Name_Map name_map_t00[] = {
+ NSPAIR(_ZN3t00C1Ev),
+ NSPAIR(_ZN3t00D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t00[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t00[];
+extern void _ZN3t003barEv();
+static VTBL_ENTRY vtc_t00[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t00[0]),
+ (VTBL_ENTRY)&_ZN3t003barEv,
+};
+extern VTBL_ENTRY _ZTV3t00[];
+static VTT_ENTRY vtt_t00[] = {
+ {&(_ZTV3t00[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t00[];
+extern VTBL_ENTRY _ZTV3t00[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t00[];
+Class_Descriptor cd_t00 = { "t00", // class name
+ bases_t00, 2,
+ &(vtc_t00[0]), // expected_vtbl_contents
+ &(vtt_t00[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t00),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t00),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t00),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t11 : ne_0 {
+ virtual void bar(); // _ZN3t113barEv
+ ~t11(); // tgen
+ t11(); // tgen
+};
+//SIG(-1 t11) C1{ BC2{ m} v1}
+
+
+void t11 ::bar(){vfunc_called(this, "_ZN3t113barEv");}
+t11 ::~t11(){ note_dtor("t11", this);} // tgen
+t11 ::t11(){ note_ctor("t11", this);} // tgen
+
+static void Test_t11()
+{
+ extern Class_Descriptor cd_t11;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t11, buf);
+ t11 *dp, &lv = *(dp=new (buf) t11());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t11)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t11)");
+ check_base_class_offset(lv, (ne_0*), 0, "t11");
+ test_class_info(&lv, &cd_t11);
+ dp->~t11();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt11(Test_t11, "t11", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t11C1Ev();
+extern void _ZN3t11D1Ev();
+Name_Map name_map_t11[] = {
+ NSPAIR(_ZN3t11C1Ev),
+ NSPAIR(_ZN3t11D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+static Base_Class bases_t11[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t11[];
+extern void _ZN3t113barEv();
+static VTBL_ENTRY vtc_t11[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t11[0]),
+ (VTBL_ENTRY)&_ZN3t113barEv,
+};
+extern VTBL_ENTRY _ZTI3t11[];
+extern VTBL_ENTRY _ZTV3t11[];
+Class_Descriptor cd_t11 = { "t11", // class name
+ bases_t11, 1,
+ &(vtc_t11[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t11),ABISELECT(24,12), //typeinfo_var
+ NSPAIRA(_ZTV3t11),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t12 : virtual ne_0 {
+ virtual void bar(); // _ZN3t123barEv
+ ~t12(); // tgen
+ t12(); // tgen
+};
+//SIG(-1 t12) C1{ VBC2{ m} v1}
+
+
+void t12 ::bar(){vfunc_called(this, "_ZN3t123barEv");}
+t12 ::~t12(){ note_dtor("t12", this);} // tgen
+t12 ::t12(){ note_ctor("t12", this);} // tgen
+
+static void Test_t12()
+{
+ extern Class_Descriptor cd_t12;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t12, buf);
+ t12 *dp, &lv = *(dp=new (buf) t12());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t12)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t12)");
+ check_base_class_offset(lv, (ne_0*), 0, "t12");
+ test_class_info(&lv, &cd_t12);
+ dp->~t12();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt12(Test_t12, "t12", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t12C1Ev();
+extern void _ZN3t12D1Ev();
+Name_Map name_map_t12[] = {
+ NSPAIR(_ZN3t12C1Ev),
+ NSPAIR(_ZN3t12D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+static Base_Class bases_t12[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t12[];
+extern void _ZN3t123barEv();
+static VTBL_ENTRY vtc_t12[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t12[0]),
+ (VTBL_ENTRY)&_ZN3t123barEv,
+};
+extern VTBL_ENTRY _ZTV3t12[];
+static VTT_ENTRY vtt_t12[] = {
+ {&(_ZTV3t12[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t12[];
+extern VTBL_ENTRY _ZTV3t12[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t12[];
+Class_Descriptor cd_t12 = { "t12", // class name
+ bases_t12, 1,
+ &(vtc_t12[0]), // expected_vtbl_contents
+ &(vtt_t12[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t12),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV3t12),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t12),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t13 : ne_0 , em_1 {
+ virtual void bar(); // _ZN3t133barEv
+ ~t13(); // tgen
+ t13(); // tgen
+};
+//SIG(-1 t13) C1{ BC2{ m} BC3{} v1}
+
+
+void t13 ::bar(){vfunc_called(this, "_ZN3t133barEv");}
+t13 ::~t13(){ note_dtor("t13", this);} // tgen
+t13 ::t13(){ note_ctor("t13", this);} // tgen
+
+static void Test_t13()
+{
+ extern Class_Descriptor cd_t13;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t13, buf);
+ t13 *dp, &lv = *(dp=new (buf) t13());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t13)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t13)");
+ check_base_class_offset(lv, (ne_0*), 0, "t13");
+ check_base_class_offset(lv, (em_1*), 0, "t13");
+ test_class_info(&lv, &cd_t13);
+ dp->~t13();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt13(Test_t13, "t13", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t13C1Ev();
+extern void _ZN3t13D1Ev();
+Name_Map name_map_t13[] = {
+ NSPAIR(_ZN3t13C1Ev),
+ NSPAIR(_ZN3t13D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t13[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t13[];
+extern void _ZN3t133barEv();
+static VTBL_ENTRY vtc_t13[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t13[0]),
+ (VTBL_ENTRY)&_ZN3t133barEv,
+};
+extern VTBL_ENTRY _ZTI3t13[];
+extern VTBL_ENTRY _ZTV3t13[];
+Class_Descriptor cd_t13 = { "t13", // class name
+ bases_t13, 2,
+ &(vtc_t13[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t13),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t13),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t14 : virtual ne_0 , em_1 {
+ virtual void bar(); // _ZN3t143barEv
+ ~t14(); // tgen
+ t14(); // tgen
+};
+//SIG(-1 t14) C1{ VBC2{ m} BC3{} v1}
+
+
+void t14 ::bar(){vfunc_called(this, "_ZN3t143barEv");}
+t14 ::~t14(){ note_dtor("t14", this);} // tgen
+t14 ::t14(){ note_ctor("t14", this);} // tgen
+
+static void Test_t14()
+{
+ extern Class_Descriptor cd_t14;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t14, buf);
+ t14 *dp, &lv = *(dp=new (buf) t14());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t14)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t14)");
+ check_base_class_offset(lv, (ne_0*), 0, "t14");
+ check_base_class_offset(lv, (em_1*), 0, "t14");
+ test_class_info(&lv, &cd_t14);
+ dp->~t14();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt14(Test_t14, "t14", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t14C1Ev();
+extern void _ZN3t14D1Ev();
+Name_Map name_map_t14[] = {
+ NSPAIR(_ZN3t14C1Ev),
+ NSPAIR(_ZN3t14D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t14[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t14[];
+extern void _ZN3t143barEv();
+static VTBL_ENTRY vtc_t14[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t14[0]),
+ (VTBL_ENTRY)&_ZN3t143barEv,
+};
+extern VTBL_ENTRY _ZTV3t14[];
+static VTT_ENTRY vtt_t14[] = {
+ {&(_ZTV3t14[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t14[];
+extern VTBL_ENTRY _ZTV3t14[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t14[];
+Class_Descriptor cd_t14 = { "t14", // class name
+ bases_t14, 2,
+ &(vtc_t14[0]), // expected_vtbl_contents
+ &(vtt_t14[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t14),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t14),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t14),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t15 : ne_0 , virtual em_1 {
+ virtual void bar(); // _ZN3t153barEv
+ ~t15(); // tgen
+ t15(); // tgen
+};
+//SIG(-1 t15) C1{ BC2{ m} VBC3{} v1}
+
+
+void t15 ::bar(){vfunc_called(this, "_ZN3t153barEv");}
+t15 ::~t15(){ note_dtor("t15", this);} // tgen
+t15 ::t15(){ note_ctor("t15", this);} // tgen
+
+static void Test_t15()
+{
+ extern Class_Descriptor cd_t15;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t15, buf);
+ t15 *dp, &lv = *(dp=new (buf) t15());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t15)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t15)");
+ check_base_class_offset(lv, (ne_0*), 0, "t15");
+ check_base_class_offset(lv, (em_1*), 0, "t15");
+ test_class_info(&lv, &cd_t15);
+ dp->~t15();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt15(Test_t15, "t15", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t15C1Ev();
+extern void _ZN3t15D1Ev();
+Name_Map name_map_t15[] = {
+ NSPAIR(_ZN3t15C1Ev),
+ NSPAIR(_ZN3t15D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t15[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t15[];
+extern void _ZN3t153barEv();
+static VTBL_ENTRY vtc_t15[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t15[0]),
+ (VTBL_ENTRY)&_ZN3t153barEv,
+};
+extern VTBL_ENTRY _ZTV3t15[];
+static VTT_ENTRY vtt_t15[] = {
+ {&(_ZTV3t15[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t15[];
+extern VTBL_ENTRY _ZTV3t15[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t15[];
+Class_Descriptor cd_t15 = { "t15", // class name
+ bases_t15, 2,
+ &(vtc_t15[0]), // expected_vtbl_contents
+ &(vtt_t15[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t15),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t15),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t15),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t16 : virtual ne_0 , virtual em_1 {
+ virtual void bar(); // _ZN3t163barEv
+ ~t16(); // tgen
+ t16(); // tgen
+};
+//SIG(-1 t16) C1{ VBC2{ m} VBC3{} v1}
+
+
+void t16 ::bar(){vfunc_called(this, "_ZN3t163barEv");}
+t16 ::~t16(){ note_dtor("t16", this);} // tgen
+t16 ::t16(){ note_ctor("t16", this);} // tgen
+
+static void Test_t16()
+{
+ extern Class_Descriptor cd_t16;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t16, buf);
+ t16 *dp, &lv = *(dp=new (buf) t16());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t16)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t16)");
+ check_base_class_offset(lv, (ne_0*), 0, "t16");
+ check_base_class_offset(lv, (em_1*), 0, "t16");
+ test_class_info(&lv, &cd_t16);
+ dp->~t16();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt16(Test_t16, "t16", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t16C1Ev();
+extern void _ZN3t16D1Ev();
+Name_Map name_map_t16[] = {
+ NSPAIR(_ZN3t16C1Ev),
+ NSPAIR(_ZN3t16D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t16[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t16[];
+extern void _ZN3t163barEv();
+static VTBL_ENTRY vtc_t16[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t16[0]),
+ (VTBL_ENTRY)&_ZN3t163barEv,
+};
+extern VTBL_ENTRY _ZTV3t16[];
+static VTT_ENTRY vtt_t16[] = {
+ {&(_ZTV3t16[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t16[];
+extern VTBL_ENTRY _ZTV3t16[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t16[];
+Class_Descriptor cd_t16 = { "t16", // class name
+ bases_t16, 2,
+ &(vtc_t16[0]), // expected_vtbl_contents
+ &(vtt_t16[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t16),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t16),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t16),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t17 : ne_0 , ne_1 {
+ virtual void bar(); // _ZN3t173barEv
+ ~t17(); // tgen
+ t17(); // tgen
+};
+//SIG(-1 t17) C1{ BC2{ m} BC3{ m Fi:0} v1}
+
+
+void t17 ::bar(){vfunc_called(this, "_ZN3t173barEv");}
+t17 ::~t17(){ note_dtor("t17", this);} // tgen
+t17 ::t17(){ note_ctor("t17", this);} // tgen
+
+static void Test_t17()
+{
+ extern Class_Descriptor cd_t17;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t17, buf);
+ t17 *dp, &lv = *(dp=new (buf) t17());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t17)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t17)");
+ check_base_class_offset(lv, (ne_0*), 0, "t17");
+ check_base_class_offset(lv, (ne_1*), 0, "t17");
+ test_class_info(&lv, &cd_t17);
+ dp->~t17();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt17(Test_t17, "t17", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t17C1Ev();
+extern void _ZN3t17D1Ev();
+Name_Map name_map_t17[] = {
+ NSPAIR(_ZN3t17C1Ev),
+ NSPAIR(_ZN3t17D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t17[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t17[];
+extern void _ZN3t173barEv();
+static VTBL_ENTRY vtc_t17[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t17[0]),
+ (VTBL_ENTRY)&_ZN3t173barEv,
+};
+extern VTBL_ENTRY _ZTI3t17[];
+extern VTBL_ENTRY _ZTV3t17[];
+Class_Descriptor cd_t17 = { "t17", // class name
+ bases_t17, 2,
+ &(vtc_t17[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t17),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t17),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t18 : virtual ne_0 , ne_1 {
+ virtual void bar(); // _ZN3t183barEv
+ ~t18(); // tgen
+ t18(); // tgen
+};
+//SIG(-1 t18) C1{ VBC2{ m} BC3{ m Fi:0} v1}
+
+
+void t18 ::bar(){vfunc_called(this, "_ZN3t183barEv");}
+t18 ::~t18(){ note_dtor("t18", this);} // tgen
+t18 ::t18(){ note_ctor("t18", this);} // tgen
+
+static void Test_t18()
+{
+ extern Class_Descriptor cd_t18;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t18, buf);
+ t18 *dp, &lv = *(dp=new (buf) t18());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t18)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t18)");
+ check_base_class_offset(lv, (ne_0*), 0, "t18");
+ check_base_class_offset(lv, (ne_1*), 0, "t18");
+ test_class_info(&lv, &cd_t18);
+ dp->~t18();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt18(Test_t18, "t18", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t18C1Ev();
+extern void _ZN3t18D1Ev();
+Name_Map name_map_t18[] = {
+ NSPAIR(_ZN3t18C1Ev),
+ NSPAIR(_ZN3t18D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t18[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t18[];
+extern void _ZN3t183barEv();
+static VTBL_ENTRY vtc_t18[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t18[0]),
+ (VTBL_ENTRY)&_ZN3t183barEv,
+};
+extern VTBL_ENTRY _ZTV3t18[];
+static VTT_ENTRY vtt_t18[] = {
+ {&(_ZTV3t18[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t18[];
+extern VTBL_ENTRY _ZTV3t18[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t18[];
+Class_Descriptor cd_t18 = { "t18", // class name
+ bases_t18, 2,
+ &(vtc_t18[0]), // expected_vtbl_contents
+ &(vtt_t18[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t18),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t18),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t18),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t19 : ne_0 , virtual ne_1 {
+ virtual void bar(); // _ZN3t193barEv
+ ~t19(); // tgen
+ t19(); // tgen
+};
+//SIG(-1 t19) C1{ BC2{ m} VBC3{ m Fi:0} v1}
+
+
+void t19 ::bar(){vfunc_called(this, "_ZN3t193barEv");}
+t19 ::~t19(){ note_dtor("t19", this);} // tgen
+t19 ::t19(){ note_ctor("t19", this);} // tgen
+
+static void Test_t19()
+{
+ extern Class_Descriptor cd_t19;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t19, buf);
+ t19 *dp, &lv = *(dp=new (buf) t19());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t19)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t19)");
+ check_base_class_offset(lv, (ne_0*), 0, "t19");
+ check_base_class_offset(lv, (ne_1*), 0, "t19");
+ test_class_info(&lv, &cd_t19);
+ dp->~t19();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt19(Test_t19, "t19", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t19C1Ev();
+extern void _ZN3t19D1Ev();
+Name_Map name_map_t19[] = {
+ NSPAIR(_ZN3t19C1Ev),
+ NSPAIR(_ZN3t19D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t19[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t19[];
+extern void _ZN3t193barEv();
+static VTBL_ENTRY vtc_t19[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t19[0]),
+ (VTBL_ENTRY)&_ZN3t193barEv,
+};
+extern VTBL_ENTRY _ZTV3t19[];
+static VTT_ENTRY vtt_t19[] = {
+ {&(_ZTV3t19[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t19[];
+extern VTBL_ENTRY _ZTV3t19[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t19[];
+Class_Descriptor cd_t19 = { "t19", // class name
+ bases_t19, 2,
+ &(vtc_t19[0]), // expected_vtbl_contents
+ &(vtt_t19[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t19),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t19),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t19),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t20 : virtual ne_0 , virtual ne_1 {
+ virtual void bar(); // _ZN3t203barEv
+ ~t20(); // tgen
+ t20(); // tgen
+};
+//SIG(-1 t20) C1{ VBC2{ m} VBC3{ m Fi:0} v1}
+
+
+void t20 ::bar(){vfunc_called(this, "_ZN3t203barEv");}
+t20 ::~t20(){ note_dtor("t20", this);} // tgen
+t20 ::t20(){ note_ctor("t20", this);} // tgen
+
+static void Test_t20()
+{
+ extern Class_Descriptor cd_t20;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_t20, buf);
+ t20 *dp, &lv = *(dp=new (buf) t20());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(t20)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t20)");
+ check_base_class_offset(lv, (ne_0*), 0, "t20");
+ check_base_class_offset(lv, (ne_1*), 0, "t20");
+ test_class_info(&lv, &cd_t20);
+ dp->~t20();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt20(Test_t20, "t20", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN3t20C1Ev();
+extern void _ZN3t20D1Ev();
+Name_Map name_map_t20[] = {
+ NSPAIR(_ZN3t20C1Ev),
+ NSPAIR(_ZN3t20D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t20[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t20[];
+extern void _ZN3t203barEv();
+static VTBL_ENTRY vtc_t20[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t20[0]),
+ (VTBL_ENTRY)&_ZN3t203barEv,
+};
+extern VTBL_ENTRY _ZTV3t20[];
+static VTT_ENTRY vtt_t20[] = {
+ {&(_ZTV3t20[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t20[];
+extern VTBL_ENTRY _ZTV3t20[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t20[];
+Class_Descriptor cd_t20 = { "t20", // class name
+ bases_t20, 2,
+ &(vtc_t20[0]), // expected_vtbl_contents
+ &(vtt_t20[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI3t20),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t20),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t20),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t21 : xx {
+ virtual void bar(); // _ZN3t213barEv
+ ~t21(); // tgen
+ t21(); // tgen
+};
+//SIG(-1 t21) C1{ BC2{ Fi} v1}
+
+
+void t21 ::bar(){vfunc_called(this, "_ZN3t213barEv");}
+t21 ::~t21(){ note_dtor("t21", this);} // tgen
+t21 ::t21(){ note_ctor("t21", this);} // tgen
+
+static void Test_t21()
+{
+ extern Class_Descriptor cd_t21;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t21, buf);
+ t21 *dp, &lv = *(dp=new (buf) t21());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t21)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t21)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t21");
+ test_class_info(&lv, &cd_t21);
+ dp->~t21();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt21(Test_t21, "t21", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t21C1Ev();
+extern void _ZN3t21D1Ev();
+Name_Map name_map_t21[] = {
+ NSPAIR(_ZN3t21C1Ev),
+ NSPAIR(_ZN3t21D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+static Base_Class bases_t21[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t21[];
+extern void _ZN3t213barEv();
+static VTBL_ENTRY vtc_t21[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t21[0]),
+ (VTBL_ENTRY)&_ZN3t213barEv,
+};
+extern VTBL_ENTRY _ZTI3t21[];
+extern VTBL_ENTRY _ZTV3t21[];
+Class_Descriptor cd_t21 = { "t21", // class name
+ bases_t21, 1,
+ &(vtc_t21[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t21),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV3t21),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t22 : virtual xx {
+ virtual void bar(); // _ZN3t223barEv
+ ~t22(); // tgen
+ t22(); // tgen
+};
+//SIG(-1 t22) C1{ VBC2{ Fi} v1}
+
+
+void t22 ::bar(){vfunc_called(this, "_ZN3t223barEv");}
+t22 ::~t22(){ note_dtor("t22", this);} // tgen
+t22 ::t22(){ note_ctor("t22", this);} // tgen
+
+static void Test_t22()
+{
+ extern Class_Descriptor cd_t22;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t22, buf);
+ t22 *dp, &lv = *(dp=new (buf) t22());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t22)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t22)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t22");
+ test_class_info(&lv, &cd_t22);
+ dp->~t22();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt22(Test_t22, "t22", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t22C1Ev();
+extern void _ZN3t22D1Ev();
+Name_Map name_map_t22[] = {
+ NSPAIR(_ZN3t22C1Ev),
+ NSPAIR(_ZN3t22D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+static Base_Class bases_t22[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t22[];
+extern void _ZN3t223barEv();
+static VTBL_ENTRY vtc_t22[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t22[0]),
+ (VTBL_ENTRY)&_ZN3t223barEv,
+};
+extern VTBL_ENTRY _ZTV3t22[];
+static VTT_ENTRY vtt_t22[] = {
+ {&(_ZTV3t22[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t22[];
+extern VTBL_ENTRY _ZTV3t22[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t22[];
+Class_Descriptor cd_t22 = { "t22", // class name
+ bases_t22, 1,
+ &(vtc_t22[0]), // expected_vtbl_contents
+ &(vtt_t22[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t22),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV3t22),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t22),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t23 : xx , em_1 {
+ virtual void bar(); // _ZN3t233barEv
+ ~t23(); // tgen
+ t23(); // tgen
+};
+//SIG(-1 t23) C1{ BC2{ Fi} BC3{} v1}
+
+
+void t23 ::bar(){vfunc_called(this, "_ZN3t233barEv");}
+t23 ::~t23(){ note_dtor("t23", this);} // tgen
+t23 ::t23(){ note_ctor("t23", this);} // tgen
+
+static void Test_t23()
+{
+ extern Class_Descriptor cd_t23;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t23, buf);
+ t23 *dp, &lv = *(dp=new (buf) t23());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t23)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t23)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t23");
+ check_base_class_offset(lv, (em_1*), 0, "t23");
+ test_class_info(&lv, &cd_t23);
+ dp->~t23();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt23(Test_t23, "t23", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t23C1Ev();
+extern void _ZN3t23D1Ev();
+Name_Map name_map_t23[] = {
+ NSPAIR(_ZN3t23C1Ev),
+ NSPAIR(_ZN3t23D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t23[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t23[];
+extern void _ZN3t233barEv();
+static VTBL_ENTRY vtc_t23[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t23[0]),
+ (VTBL_ENTRY)&_ZN3t233barEv,
+};
+extern VTBL_ENTRY _ZTI3t23[];
+extern VTBL_ENTRY _ZTV3t23[];
+Class_Descriptor cd_t23 = { "t23", // class name
+ bases_t23, 2,
+ &(vtc_t23[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t23),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t23),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t24 : virtual xx , em_1 {
+ virtual void bar(); // _ZN3t243barEv
+ ~t24(); // tgen
+ t24(); // tgen
+};
+//SIG(-1 t24) C1{ VBC2{ Fi} BC3{} v1}
+
+
+void t24 ::bar(){vfunc_called(this, "_ZN3t243barEv");}
+t24 ::~t24(){ note_dtor("t24", this);} // tgen
+t24 ::t24(){ note_ctor("t24", this);} // tgen
+
+static void Test_t24()
+{
+ extern Class_Descriptor cd_t24;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t24, buf);
+ t24 *dp, &lv = *(dp=new (buf) t24());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t24)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t24)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t24");
+ check_base_class_offset(lv, (em_1*), 0, "t24");
+ test_class_info(&lv, &cd_t24);
+ dp->~t24();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt24(Test_t24, "t24", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t24C1Ev();
+extern void _ZN3t24D1Ev();
+Name_Map name_map_t24[] = {
+ NSPAIR(_ZN3t24C1Ev),
+ NSPAIR(_ZN3t24D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t24[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t24[];
+extern void _ZN3t243barEv();
+static VTBL_ENTRY vtc_t24[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t24[0]),
+ (VTBL_ENTRY)&_ZN3t243barEv,
+};
+extern VTBL_ENTRY _ZTV3t24[];
+static VTT_ENTRY vtt_t24[] = {
+ {&(_ZTV3t24[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t24[];
+extern VTBL_ENTRY _ZTV3t24[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t24[];
+Class_Descriptor cd_t24 = { "t24", // class name
+ bases_t24, 2,
+ &(vtc_t24[0]), // expected_vtbl_contents
+ &(vtt_t24[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t24),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t24),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t24),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t25 : xx , virtual em_1 {
+ virtual void bar(); // _ZN3t253barEv
+ ~t25(); // tgen
+ t25(); // tgen
+};
+//SIG(-1 t25) C1{ BC2{ Fi} VBC3{} v1}
+
+
+void t25 ::bar(){vfunc_called(this, "_ZN3t253barEv");}
+t25 ::~t25(){ note_dtor("t25", this);} // tgen
+t25 ::t25(){ note_ctor("t25", this);} // tgen
+
+static void Test_t25()
+{
+ extern Class_Descriptor cd_t25;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t25, buf);
+ t25 *dp, &lv = *(dp=new (buf) t25());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t25)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t25)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t25");
+ check_base_class_offset(lv, (em_1*), 0, "t25");
+ test_class_info(&lv, &cd_t25);
+ dp->~t25();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt25(Test_t25, "t25", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t25C1Ev();
+extern void _ZN3t25D1Ev();
+Name_Map name_map_t25[] = {
+ NSPAIR(_ZN3t25C1Ev),
+ NSPAIR(_ZN3t25D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t25[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t25[];
+extern void _ZN3t253barEv();
+static VTBL_ENTRY vtc_t25[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t25[0]),
+ (VTBL_ENTRY)&_ZN3t253barEv,
+};
+extern VTBL_ENTRY _ZTV3t25[];
+static VTT_ENTRY vtt_t25[] = {
+ {&(_ZTV3t25[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t25[];
+extern VTBL_ENTRY _ZTV3t25[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t25[];
+Class_Descriptor cd_t25 = { "t25", // class name
+ bases_t25, 2,
+ &(vtc_t25[0]), // expected_vtbl_contents
+ &(vtt_t25[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t25),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t25),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t25),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t26 : virtual xx , virtual em_1 {
+ virtual void bar(); // _ZN3t263barEv
+ ~t26(); // tgen
+ t26(); // tgen
+};
+//SIG(-1 t26) C1{ VBC2{ Fi} VBC3{} v1}
+
+
+void t26 ::bar(){vfunc_called(this, "_ZN3t263barEv");}
+t26 ::~t26(){ note_dtor("t26", this);} // tgen
+t26 ::t26(){ note_ctor("t26", this);} // tgen
+
+static void Test_t26()
+{
+ extern Class_Descriptor cd_t26;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t26, buf);
+ t26 *dp, &lv = *(dp=new (buf) t26());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t26)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t26)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t26");
+ check_base_class_offset(lv, (em_1*), 0, "t26");
+ test_class_info(&lv, &cd_t26);
+ dp->~t26();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt26(Test_t26, "t26", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t26C1Ev();
+extern void _ZN3t26D1Ev();
+Name_Map name_map_t26[] = {
+ NSPAIR(_ZN3t26C1Ev),
+ NSPAIR(_ZN3t26D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+static Base_Class bases_t26[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t26[];
+extern void _ZN3t263barEv();
+static VTBL_ENTRY vtc_t26[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t26[0]),
+ (VTBL_ENTRY)&_ZN3t263barEv,
+};
+extern VTBL_ENTRY _ZTV3t26[];
+static VTT_ENTRY vtt_t26[] = {
+ {&(_ZTV3t26[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t26[];
+extern VTBL_ENTRY _ZTV3t26[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t26[];
+Class_Descriptor cd_t26 = { "t26", // class name
+ bases_t26, 2,
+ &(vtc_t26[0]), // expected_vtbl_contents
+ &(vtt_t26[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t26),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t26),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t26),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t27 : xx , ne_1 {
+ virtual void bar(); // _ZN3t273barEv
+ ~t27(); // tgen
+ t27(); // tgen
+};
+//SIG(-1 t27) C1{ BC2{ Fi} BC3{ m Fi:0} v1}
+
+
+void t27 ::bar(){vfunc_called(this, "_ZN3t273barEv");}
+t27 ::~t27(){ note_dtor("t27", this);} // tgen
+t27 ::t27(){ note_ctor("t27", this);} // tgen
+
+static void Test_t27()
+{
+ extern Class_Descriptor cd_t27;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t27, buf);
+ t27 *dp, &lv = *(dp=new (buf) t27());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t27)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t27)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t27");
+ check_base_class_offset(lv, (ne_1*), 0, "t27");
+ test_class_info(&lv, &cd_t27);
+ dp->~t27();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt27(Test_t27, "t27", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t27C1Ev();
+extern void _ZN3t27D1Ev();
+Name_Map name_map_t27[] = {
+ NSPAIR(_ZN3t27C1Ev),
+ NSPAIR(_ZN3t27D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t27[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t27[];
+extern void _ZN3t273barEv();
+static VTBL_ENTRY vtc_t27[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t27[0]),
+ (VTBL_ENTRY)&_ZN3t273barEv,
+};
+extern VTBL_ENTRY _ZTI3t27[];
+extern VTBL_ENTRY _ZTV3t27[];
+Class_Descriptor cd_t27 = { "t27", // class name
+ bases_t27, 2,
+ &(vtc_t27[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t27),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t27),3, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t28 : virtual xx , ne_1 {
+ virtual void bar(); // _ZN3t283barEv
+ ~t28(); // tgen
+ t28(); // tgen
+};
+//SIG(-1 t28) C1{ VBC2{ Fi} BC3{ m Fi:0} v1}
+
+
+void t28 ::bar(){vfunc_called(this, "_ZN3t283barEv");}
+t28 ::~t28(){ note_dtor("t28", this);} // tgen
+t28 ::t28(){ note_ctor("t28", this);} // tgen
+
+static void Test_t28()
+{
+ extern Class_Descriptor cd_t28;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t28, buf);
+ t28 *dp, &lv = *(dp=new (buf) t28());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t28)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t28)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t28");
+ check_base_class_offset(lv, (ne_1*), 0, "t28");
+ test_class_info(&lv, &cd_t28);
+ dp->~t28();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt28(Test_t28, "t28", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t28C1Ev();
+extern void _ZN3t28D1Ev();
+Name_Map name_map_t28[] = {
+ NSPAIR(_ZN3t28C1Ev),
+ NSPAIR(_ZN3t28D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t28[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI3t28[];
+extern void _ZN3t283barEv();
+static VTBL_ENTRY vtc_t28[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t28[0]),
+ (VTBL_ENTRY)&_ZN3t283barEv,
+};
+extern VTBL_ENTRY _ZTV3t28[];
+static VTT_ENTRY vtt_t28[] = {
+ {&(_ZTV3t28[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t28[];
+extern VTBL_ENTRY _ZTV3t28[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t28[];
+Class_Descriptor cd_t28 = { "t28", // class name
+ bases_t28, 2,
+ &(vtc_t28[0]), // expected_vtbl_contents
+ &(vtt_t28[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t28),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t28),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t28),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t29 : xx , virtual ne_1 {
+ virtual void bar(); // _ZN3t293barEv
+ ~t29(); // tgen
+ t29(); // tgen
+};
+//SIG(-1 t29) C1{ BC2{ Fi} VBC3{ m Fi:0} v1}
+
+
+void t29 ::bar(){vfunc_called(this, "_ZN3t293barEv");}
+t29 ::~t29(){ note_dtor("t29", this);} // tgen
+t29 ::t29(){ note_ctor("t29", this);} // tgen
+
+static void Test_t29()
+{
+ extern Class_Descriptor cd_t29;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t29, buf);
+ t29 *dp, &lv = *(dp=new (buf) t29());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t29)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t29)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t29");
+ check_base_class_offset(lv, (ne_1*), 0, "t29");
+ test_class_info(&lv, &cd_t29);
+ dp->~t29();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt29(Test_t29, "t29", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t29C1Ev();
+extern void _ZN3t29D1Ev();
+Name_Map name_map_t29[] = {
+ NSPAIR(_ZN3t29C1Ev),
+ NSPAIR(_ZN3t29D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t29[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t29[];
+extern void _ZN3t293barEv();
+static VTBL_ENTRY vtc_t29[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t29[0]),
+ (VTBL_ENTRY)&_ZN3t293barEv,
+};
+extern VTBL_ENTRY _ZTV3t29[];
+static VTT_ENTRY vtt_t29[] = {
+ {&(_ZTV3t29[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3t29[];
+extern VTBL_ENTRY _ZTV3t29[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t29[];
+Class_Descriptor cd_t29 = { "t29", // class name
+ bases_t29, 2,
+ &(vtc_t29[0]), // expected_vtbl_contents
+ &(vtt_t29[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t29),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t29),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t29),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct t30 : virtual xx , virtual ne_1 {
+ virtual void bar(); // _ZN3t303barEv
+ ~t30(); // tgen
+ t30(); // tgen
+};
+//SIG(-1 t30) C1{ VBC2{ Fi} VBC3{ m Fi:0} v1}
+
+
+void t30 ::bar(){vfunc_called(this, "_ZN3t303barEv");}
+t30 ::~t30(){ note_dtor("t30", this);} // tgen
+t30 ::t30(){ note_ctor("t30", this);} // tgen
+
+static void Test_t30()
+{
+ extern Class_Descriptor cd_t30;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_t30, buf);
+ t30 *dp, &lv = *(dp=new (buf) t30());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(t30)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(t30)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "t30");
+ check_base_class_offset(lv, (ne_1*), 0, "t30");
+ test_class_info(&lv, &cd_t30);
+ dp->~t30();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vt30(Test_t30, "t30", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3t30C1Ev();
+extern void _ZN3t30D1Ev();
+Name_Map name_map_t30[] = {
+ NSPAIR(_ZN3t30C1Ev),
+ NSPAIR(_ZN3t30D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_t30[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3t30[];
+extern void _ZN3t303barEv();
+static VTBL_ENTRY vtc_t30[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t30[0]),
+ (VTBL_ENTRY)&_ZN3t303barEv,
+};
+extern VTBL_ENTRY _ZTV3t30[];
+static VTT_ENTRY vtt_t30[] = {
+ {&(_ZTV3t30[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI3t30[];
+extern VTBL_ENTRY _ZTV3t30[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t30[];
+Class_Descriptor cd_t30 = { "t30", // class name
+ bases_t30, 2,
+ &(vtc_t30[0]), // expected_vtbl_contents
+ &(vtt_t30[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3t30),ABISELECT(56,32), //typeinfo_var
+ NSPAIRA(_ZTV3t30),5, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3t30),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xem_0 : virtual em_0 {
+ virtual void abc(); // _ZN5Xem_03abcEv
+ ~Xem_0(); // tgen
+ Xem_0(); // tgen
+};
+//SIG(1 Xem_0) C1{ VBC2{} v1}
+
+
+void Xem_0 ::abc(){vfunc_called(this, "_ZN5Xem_03abcEv");}
+Xem_0 ::~Xem_0(){ note_dtor("Xem_0", this);} // tgen
+Xem_0 ::Xem_0(){ note_ctor("Xem_0", this);} // tgen
+
+static void Test_Xem_0()
+{
+ extern Class_Descriptor cd_Xem_0;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xem_0, buf);
+ Xem_0 *dp, &lv = *(dp=new (buf) Xem_0());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xem_0)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xem_0)");
+ check_base_class_offset(lv, (em_0*), 0, "Xem_0");
+ test_class_info(&lv, &cd_Xem_0);
+ dp->~Xem_0();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXem_0(Test_Xem_0, "Xem_0", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN5Xem_0C1Ev();
+extern void _ZN5Xem_0D1Ev();
+Name_Map name_map_Xem_0[] = {
+ NSPAIR(_ZN5Xem_0C1Ev),
+ NSPAIR(_ZN5Xem_0D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+static Base_Class bases_Xem_0[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI5Xem_0[];
+extern void _ZN5Xem_03abcEv();
+static VTBL_ENTRY vtc_Xem_0[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI5Xem_0[0]),
+ (VTBL_ENTRY)&_ZN5Xem_03abcEv,
+};
+extern VTBL_ENTRY _ZTV5Xem_0[];
+static VTT_ENTRY vtt_Xem_0[] = {
+ {&(_ZTV5Xem_0[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI5Xem_0[];
+extern VTBL_ENTRY _ZTV5Xem_0[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT5Xem_0[];
+Class_Descriptor cd_Xem_0 = { "Xem_0", // class name
+ bases_Xem_0, 1,
+ &(vtc_Xem_0[0]), // expected_vtbl_contents
+ &(vtt_Xem_0[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI5Xem_0),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV5Xem_0),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT5Xem_0),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xne_0 : virtual ne_0 {
+ virtual void abc(); // _ZN5Xne_03abcEv
+ ~Xne_0(); // tgen
+ Xne_0(); // tgen
+};
+//SIG(1 Xne_0) C1{ VBC2{ m} v1}
+
+
+void Xne_0 ::abc(){vfunc_called(this, "_ZN5Xne_03abcEv");}
+Xne_0 ::~Xne_0(){ note_dtor("Xne_0", this);} // tgen
+Xne_0 ::Xne_0(){ note_ctor("Xne_0", this);} // tgen
+
+static void Test_Xne_0()
+{
+ extern Class_Descriptor cd_Xne_0;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xne_0, buf);
+ Xne_0 *dp, &lv = *(dp=new (buf) Xne_0());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xne_0)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xne_0)");
+ check_base_class_offset(lv, (ne_0*), 0, "Xne_0");
+ test_class_info(&lv, &cd_Xne_0);
+ dp->~Xne_0();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXne_0(Test_Xne_0, "Xne_0", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN5Xne_0C1Ev();
+extern void _ZN5Xne_0D1Ev();
+Name_Map name_map_Xne_0[] = {
+ NSPAIR(_ZN5Xne_0C1Ev),
+ NSPAIR(_ZN5Xne_0D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+static Base_Class bases_Xne_0[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI5Xne_0[];
+extern void _ZN5Xne_03abcEv();
+static VTBL_ENTRY vtc_Xne_0[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI5Xne_0[0]),
+ (VTBL_ENTRY)&_ZN5Xne_03abcEv,
+};
+extern VTBL_ENTRY _ZTV5Xne_0[];
+static VTT_ENTRY vtt_Xne_0[] = {
+ {&(_ZTV5Xne_0[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI5Xne_0[];
+extern VTBL_ENTRY _ZTV5Xne_0[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT5Xne_0[];
+Class_Descriptor cd_Xne_0 = { "Xne_0", // class name
+ bases_Xne_0, 1,
+ &(vtc_Xne_0[0]), // expected_vtbl_contents
+ &(vtt_Xne_0[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI5Xne_0),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV5Xne_0),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT5Xne_0),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xne_1 : virtual ne_1 {
+ virtual void abc(); // _ZN5Xne_13abcEv
+ ~Xne_1(); // tgen
+ Xne_1(); // tgen
+};
+//SIG(1 Xne_1) C1{ VBC2{ m Fi:0} v1}
+
+
+void Xne_1 ::abc(){vfunc_called(this, "_ZN5Xne_13abcEv");}
+Xne_1 ::~Xne_1(){ note_dtor("Xne_1", this);} // tgen
+Xne_1 ::Xne_1(){ note_ctor("Xne_1", this);} // tgen
+
+static void Test_Xne_1()
+{
+ extern Class_Descriptor cd_Xne_1;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xne_1, buf);
+ Xne_1 *dp, &lv = *(dp=new (buf) Xne_1());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xne_1)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xne_1)");
+ check_base_class_offset(lv, (ne_1*), 0, "Xne_1");
+ test_class_info(&lv, &cd_Xne_1);
+ dp->~Xne_1();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXne_1(Test_Xne_1, "Xne_1", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN5Xne_1C1Ev();
+extern void _ZN5Xne_1D1Ev();
+Name_Map name_map_Xne_1[] = {
+ NSPAIR(_ZN5Xne_1C1Ev),
+ NSPAIR(_ZN5Xne_1D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+static Base_Class bases_Xne_1[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI5Xne_1[];
+extern void _ZN5Xne_13abcEv();
+static VTBL_ENTRY vtc_Xne_1[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI5Xne_1[0]),
+ (VTBL_ENTRY)&_ZN5Xne_13abcEv,
+};
+extern VTBL_ENTRY _ZTV5Xne_1[];
+static VTT_ENTRY vtt_Xne_1[] = {
+ {&(_ZTV5Xne_1[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI5Xne_1[];
+extern VTBL_ENTRY _ZTV5Xne_1[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT5Xne_1[];
+Class_Descriptor cd_Xne_1 = { "Xne_1", // class name
+ bases_Xne_1, 1,
+ &(vtc_Xne_1[0]), // expected_vtbl_contents
+ &(vtt_Xne_1[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI5Xne_1),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV5Xne_1),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT5Xne_1),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xne_2 : virtual ne_2 {
+ virtual void abc(); // _ZN5Xne_23abcEv
+ ~Xne_2(); // tgen
+ Xne_2(); // tgen
+};
+//SIG(1 Xne_2) C1{ VBC2{ m Fs:0 Fi:0} v1}
+
+
+void Xne_2 ::abc(){vfunc_called(this, "_ZN5Xne_23abcEv");}
+Xne_2 ::~Xne_2(){ note_dtor("Xne_2", this);} // tgen
+Xne_2 ::Xne_2(){ note_ctor("Xne_2", this);} // tgen
+
+static void Test_Xne_2()
+{
+ extern Class_Descriptor cd_Xne_2;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xne_2, buf);
+ Xne_2 *dp, &lv = *(dp=new (buf) Xne_2());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xne_2)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xne_2)");
+ check_base_class_offset(lv, (ne_2*), 0, "Xne_2");
+ test_class_info(&lv, &cd_Xne_2);
+ dp->~Xne_2();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXne_2(Test_Xne_2, "Xne_2", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN5Xne_2C1Ev();
+extern void _ZN5Xne_2D1Ev();
+Name_Map name_map_Xne_2[] = {
+ NSPAIR(_ZN5Xne_2C1Ev),
+ NSPAIR(_ZN5Xne_2D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_2;
+extern VTBL_ENTRY _ZTI4ne_2[];
+static Base_Class bases_Xne_2[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_2, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI5Xne_2[];
+extern void _ZN5Xne_23abcEv();
+static VTBL_ENTRY vtc_Xne_2[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI5Xne_2[0]),
+ (VTBL_ENTRY)&_ZN5Xne_23abcEv,
+};
+extern VTBL_ENTRY _ZTV5Xne_2[];
+static VTT_ENTRY vtt_Xne_2[] = {
+ {&(_ZTV5Xne_2[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI5Xne_2[];
+extern VTBL_ENTRY _ZTV5Xne_2[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT5Xne_2[];
+Class_Descriptor cd_Xne_2 = { "Xne_2", // class name
+ bases_Xne_2, 1,
+ &(vtc_Xne_2[0]), // expected_vtbl_contents
+ &(vtt_Xne_2[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI5Xne_2),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV5Xne_2),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT5Xne_2),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xxx : virtual xx {
+ virtual void abc(); // _ZN3Xxx3abcEv
+ ~Xxx(); // tgen
+ Xxx(); // tgen
+};
+//SIG(1 Xxx) C1{ VBC2{ Fi} v1}
+
+
+void Xxx ::abc(){vfunc_called(this, "_ZN3Xxx3abcEv");}
+Xxx ::~Xxx(){ note_dtor("Xxx", this);} // tgen
+Xxx ::Xxx(){ note_ctor("Xxx", this);} // tgen
+
+static void Test_Xxx()
+{
+ extern Class_Descriptor cd_Xxx;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xxx, buf);
+ Xxx *dp, &lv = *(dp=new (buf) Xxx());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xxx)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xxx)");
+ check_base_class_offset(lv, (xx*), ABISELECT(8,4), "Xxx");
+ test_class_info(&lv, &cd_Xxx);
+ dp->~Xxx();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXxx(Test_Xxx, "Xxx", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3XxxC1Ev();
+extern void _ZN3XxxD1Ev();
+Name_Map name_map_Xxx[] = {
+ NSPAIR(_ZN3XxxC1Ev),
+ NSPAIR(_ZN3XxxD1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+static Base_Class bases_Xxx[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI3Xxx[];
+extern void _ZN3Xxx3abcEv();
+static VTBL_ENTRY vtc_Xxx[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3Xxx[0]),
+ (VTBL_ENTRY)&_ZN3Xxx3abcEv,
+};
+extern VTBL_ENTRY _ZTV3Xxx[];
+static VTT_ENTRY vtt_Xxx[] = {
+ {&(_ZTV3Xxx[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI3Xxx[];
+extern VTBL_ENTRY _ZTV3Xxx[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3Xxx[];
+Class_Descriptor cd_Xxx = { "Xxx", // class name
+ bases_Xxx, 1,
+ &(vtc_Xxx[0]), // expected_vtbl_contents
+ &(vtt_Xxx[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI3Xxx),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV3Xxx),4, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT3Xxx),1, //virtual table table var
+ 0, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt01 : virtual t01 {
+ virtual void abc(); // _ZN4Xt013abcEv
+ ~Xt01(); // tgen
+ Xt01(); // tgen
+};
+//SIG(1 Xt01) C1{ VBC2{ BC3{} v2} v1}
+
+
+void Xt01 ::abc(){vfunc_called(this, "_ZN4Xt013abcEv");}
+Xt01 ::~Xt01(){ note_dtor("Xt01", this);} // tgen
+Xt01 ::Xt01(){ note_ctor("Xt01", this);} // tgen
+
+static void Test_Xt01()
+{
+ extern Class_Descriptor cd_Xt01;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt01, buf);
+ Xt01 *dp, &lv = *(dp=new (buf) Xt01());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt01)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt01)");
+ check_base_class_offset(lv, (em_0*)(t01*), 0, "Xt01");
+ check_base_class_offset(lv, (t01*), 0, "Xt01");
+ test_class_info(&lv, &cd_Xt01);
+ dp->~Xt01();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt01(Test_Xt01, "Xt01", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt01C1Ev();
+extern void _ZN4Xt01D1Ev();
+Name_Map name_map_Xt01[] = {
+ NSPAIR(_ZN4Xt01C1Ev),
+ NSPAIR(_ZN4Xt01D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_t01;
+extern VTBL_ENTRY _ZTI3t01[];
+extern VTBL_ENTRY _ZTV3t01[];
+static Base_Class bases_Xt01[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 0},
+ {&cd_t01, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt01[];
+extern void _ZN3t013barEv();
+extern void _ZN4Xt013abcEv();
+static VTBL_ENTRY vtc_Xt01[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt01[0]),
+ (VTBL_ENTRY)&_ZN3t013barEv,
+ (VTBL_ENTRY)&_ZN4Xt013abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt01[];
+static VTT_ENTRY vtt_Xt01[] = {
+ {&(_ZTV4Xt01[4]), 4,6},
+ {&(_ZTV4Xt01[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt01[];
+extern VTBL_ENTRY _ZTV4Xt01[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt01[];
+Class_Descriptor cd_Xt01 = { "Xt01", // class name
+ bases_Xt01, 2,
+ &(vtc_Xt01[0]), // expected_vtbl_contents
+ &(vtt_Xt01[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt01),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt01),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt01),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt02 : virtual t02 {
+ virtual void abc(); // _ZN4Xt023abcEv
+ ~Xt02(); // tgen
+ Xt02(); // tgen
+};
+//SIG(1 Xt02) C1{ VBC2{ VBC3{} v2} v1}
+
+
+void Xt02 ::abc(){vfunc_called(this, "_ZN4Xt023abcEv");}
+Xt02 ::~Xt02(){ note_dtor("Xt02", this);} // tgen
+Xt02 ::Xt02(){ note_ctor("Xt02", this);} // tgen
+
+static void Test_Xt02()
+{
+ extern Class_Descriptor cd_Xt02;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt02, buf);
+ Xt02 *dp, &lv = *(dp=new (buf) Xt02());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt02)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt02)");
+ check_base_class_offset(lv, (em_0*)(t02*), 0, "Xt02");
+ check_base_class_offset(lv, (t02*), 0, "Xt02");
+ test_class_info(&lv, &cd_Xt02);
+ dp->~Xt02();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt02(Test_Xt02, "Xt02", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt02C1Ev();
+extern void _ZN4Xt02D1Ev();
+Name_Map name_map_Xt02[] = {
+ NSPAIR(_ZN4Xt02C1Ev),
+ NSPAIR(_ZN4Xt02D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_t02;
+extern VTBL_ENTRY _ZTI3t02[];
+extern VTBL_ENTRY _ZTV3t02[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t02[];
+static Base_Class bases_Xt02[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 1},
+ {&cd_t02, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt02[];
+extern void _ZN3t023barEv();
+extern void _ZN4Xt023abcEv();
+static VTBL_ENTRY vtc_Xt02[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt02[0]),
+ (VTBL_ENTRY)&_ZN3t023barEv,
+ (VTBL_ENTRY)&_ZN4Xt023abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt02[];
+extern void _ZN3t023barEv();
+static VTBL_ENTRY _tg__ZTV3t02__4Xt02[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t02[0]),
+ (VTBL_ENTRY)&_ZN3t023barEv,
+};
+static VTT_ENTRY vtt_Xt02[] = {
+ {&(_ZTV4Xt02[5]), 5,7},
+ {&(_ZTV4Xt02[5]), 5,7},
+ {&(_tg__ZTV3t02__4Xt02[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt02[];
+extern VTBL_ENTRY _ZTV4Xt02[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt02[];
+Class_Descriptor cd_Xt02 = { "Xt02", // class name
+ bases_Xt02, 2,
+ &(vtc_Xt02[0]), // expected_vtbl_contents
+ &(vtt_Xt02[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt02),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt02),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt02),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt03 : virtual t03 {
+ virtual void abc(); // _ZN4Xt033abcEv
+ ~Xt03(); // tgen
+ Xt03(); // tgen
+};
+//SIG(1 Xt03) C1{ VBC2{ BC3{} BC4{} v2} v1}
+
+
+void Xt03 ::abc(){vfunc_called(this, "_ZN4Xt033abcEv");}
+Xt03 ::~Xt03(){ note_dtor("Xt03", this);} // tgen
+Xt03 ::Xt03(){ note_ctor("Xt03", this);} // tgen
+
+static void Test_Xt03()
+{
+ extern Class_Descriptor cd_Xt03;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt03, buf);
+ Xt03 *dp, &lv = *(dp=new (buf) Xt03());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt03)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt03)");
+ check_base_class_offset(lv, (em_0*)(t03*), 0, "Xt03");
+ check_base_class_offset(lv, (em_1*)(t03*), 0, "Xt03");
+ check_base_class_offset(lv, (t03*), 0, "Xt03");
+ test_class_info(&lv, &cd_Xt03);
+ dp->~Xt03();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt03(Test_Xt03, "Xt03", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt03C1Ev();
+extern void _ZN4Xt03D1Ev();
+Name_Map name_map_Xt03[] = {
+ NSPAIR(_ZN4Xt03C1Ev),
+ NSPAIR(_ZN4Xt03D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t03;
+extern VTBL_ENTRY _ZTI3t03[];
+extern VTBL_ENTRY _ZTV3t03[];
+static Base_Class bases_Xt03[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t03, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt03[];
+extern void _ZN3t033barEv();
+extern void _ZN4Xt033abcEv();
+static VTBL_ENTRY vtc_Xt03[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt03[0]),
+ (VTBL_ENTRY)&_ZN3t033barEv,
+ (VTBL_ENTRY)&_ZN4Xt033abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt03[];
+static VTT_ENTRY vtt_Xt03[] = {
+ {&(_ZTV4Xt03[4]), 4,6},
+ {&(_ZTV4Xt03[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt03[];
+extern VTBL_ENTRY _ZTV4Xt03[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt03[];
+Class_Descriptor cd_Xt03 = { "Xt03", // class name
+ bases_Xt03, 3,
+ &(vtc_Xt03[0]), // expected_vtbl_contents
+ &(vtt_Xt03[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt03),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt03),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt03),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt04 : virtual t04 {
+ virtual void abc(); // _ZN4Xt043abcEv
+ ~Xt04(); // tgen
+ Xt04(); // tgen
+};
+//SIG(1 Xt04) C1{ VBC2{ VBC3{} BC4{} v2} v1}
+
+
+void Xt04 ::abc(){vfunc_called(this, "_ZN4Xt043abcEv");}
+Xt04 ::~Xt04(){ note_dtor("Xt04", this);} // tgen
+Xt04 ::Xt04(){ note_ctor("Xt04", this);} // tgen
+
+static void Test_Xt04()
+{
+ extern Class_Descriptor cd_Xt04;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt04, buf);
+ Xt04 *dp, &lv = *(dp=new (buf) Xt04());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt04)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt04)");
+ check_base_class_offset(lv, (em_0*)(t04*), 0, "Xt04");
+ check_base_class_offset(lv, (em_1*)(t04*), 0, "Xt04");
+ check_base_class_offset(lv, (t04*), 0, "Xt04");
+ test_class_info(&lv, &cd_Xt04);
+ dp->~Xt04();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt04(Test_Xt04, "Xt04", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt04C1Ev();
+extern void _ZN4Xt04D1Ev();
+Name_Map name_map_Xt04[] = {
+ NSPAIR(_ZN4Xt04C1Ev),
+ NSPAIR(_ZN4Xt04D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t04;
+extern VTBL_ENTRY _ZTI3t04[];
+extern VTBL_ENTRY _ZTV3t04[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t04[];
+static Base_Class bases_Xt04[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t04, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt04[];
+extern void _ZN3t043barEv();
+extern void _ZN4Xt043abcEv();
+static VTBL_ENTRY vtc_Xt04[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt04[0]),
+ (VTBL_ENTRY)&_ZN3t043barEv,
+ (VTBL_ENTRY)&_ZN4Xt043abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt04[];
+extern void _ZN3t043barEv();
+static VTBL_ENTRY _tg__ZTV3t04__4Xt04[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t04[0]),
+ (VTBL_ENTRY)&_ZN3t043barEv,
+};
+static VTT_ENTRY vtt_Xt04[] = {
+ {&(_ZTV4Xt04[5]), 5,7},
+ {&(_ZTV4Xt04[5]), 5,7},
+ {&(_tg__ZTV3t04__4Xt04[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt04[];
+extern VTBL_ENTRY _ZTV4Xt04[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt04[];
+Class_Descriptor cd_Xt04 = { "Xt04", // class name
+ bases_Xt04, 3,
+ &(vtc_Xt04[0]), // expected_vtbl_contents
+ &(vtt_Xt04[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt04),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt04),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt04),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt05 : virtual t05 {
+ virtual void abc(); // _ZN4Xt053abcEv
+ ~Xt05(); // tgen
+ Xt05(); // tgen
+};
+//SIG(1 Xt05) C1{ VBC2{ BC3{} VBC4{} v2} v1}
+
+
+void Xt05 ::abc(){vfunc_called(this, "_ZN4Xt053abcEv");}
+Xt05 ::~Xt05(){ note_dtor("Xt05", this);} // tgen
+Xt05 ::Xt05(){ note_ctor("Xt05", this);} // tgen
+
+static void Test_Xt05()
+{
+ extern Class_Descriptor cd_Xt05;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt05, buf);
+ Xt05 *dp, &lv = *(dp=new (buf) Xt05());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt05)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt05)");
+ check_base_class_offset(lv, (em_0*)(t05*), 0, "Xt05");
+ check_base_class_offset(lv, (em_1*)(t05*), 0, "Xt05");
+ check_base_class_offset(lv, (t05*), 0, "Xt05");
+ test_class_info(&lv, &cd_Xt05);
+ dp->~Xt05();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt05(Test_Xt05, "Xt05", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt05C1Ev();
+extern void _ZN4Xt05D1Ev();
+Name_Map name_map_Xt05[] = {
+ NSPAIR(_ZN4Xt05C1Ev),
+ NSPAIR(_ZN4Xt05D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t05;
+extern VTBL_ENTRY _ZTI3t05[];
+extern VTBL_ENTRY _ZTV3t05[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t05[];
+static Base_Class bases_Xt05[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t05, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt05[];
+extern void _ZN3t053barEv();
+extern void _ZN4Xt053abcEv();
+static VTBL_ENTRY vtc_Xt05[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt05[0]),
+ (VTBL_ENTRY)&_ZN3t053barEv,
+ (VTBL_ENTRY)&_ZN4Xt053abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt05[];
+extern void _ZN3t053barEv();
+static VTBL_ENTRY _tg__ZTV3t05__4Xt05[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t05[0]),
+ (VTBL_ENTRY)&_ZN3t053barEv,
+};
+static VTT_ENTRY vtt_Xt05[] = {
+ {&(_ZTV4Xt05[5]), 5,7},
+ {&(_ZTV4Xt05[5]), 5,7},
+ {&(_tg__ZTV3t05__4Xt05[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt05[];
+extern VTBL_ENTRY _ZTV4Xt05[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt05[];
+Class_Descriptor cd_Xt05 = { "Xt05", // class name
+ bases_Xt05, 3,
+ &(vtc_Xt05[0]), // expected_vtbl_contents
+ &(vtt_Xt05[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt05),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt05),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt05),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt06 : virtual t06 {
+ virtual void abc(); // _ZN4Xt063abcEv
+ ~Xt06(); // tgen
+ Xt06(); // tgen
+};
+//SIG(1 Xt06) C1{ VBC2{ VBC3{} VBC4{} v2} v1}
+
+
+void Xt06 ::abc(){vfunc_called(this, "_ZN4Xt063abcEv");}
+Xt06 ::~Xt06(){ note_dtor("Xt06", this);} // tgen
+Xt06 ::Xt06(){ note_ctor("Xt06", this);} // tgen
+
+static void Test_Xt06()
+{
+ extern Class_Descriptor cd_Xt06;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt06, buf);
+ Xt06 *dp, &lv = *(dp=new (buf) Xt06());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt06)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt06)");
+ check_base_class_offset(lv, (em_0*)(t06*), 0, "Xt06");
+ check_base_class_offset(lv, (em_1*)(t06*), 0, "Xt06");
+ check_base_class_offset(lv, (t06*), 0, "Xt06");
+ test_class_info(&lv, &cd_Xt06);
+ dp->~Xt06();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt06(Test_Xt06, "Xt06", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt06C1Ev();
+extern void _ZN4Xt06D1Ev();
+Name_Map name_map_Xt06[] = {
+ NSPAIR(_ZN4Xt06C1Ev),
+ NSPAIR(_ZN4Xt06D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t06;
+extern VTBL_ENTRY _ZTI3t06[];
+extern VTBL_ENTRY _ZTV3t06[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t06[];
+static Base_Class bases_Xt06[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t06, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt06[];
+extern void _ZN3t063barEv();
+extern void _ZN4Xt063abcEv();
+static VTBL_ENTRY vtc_Xt06[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt06[0]),
+ (VTBL_ENTRY)&_ZN3t063barEv,
+ (VTBL_ENTRY)&_ZN4Xt063abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt06[];
+extern void _ZN3t063barEv();
+static VTBL_ENTRY _tg__ZTV3t06__4Xt06[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t06[0]),
+ (VTBL_ENTRY)&_ZN3t063barEv,
+};
+static VTT_ENTRY vtt_Xt06[] = {
+ {&(_ZTV4Xt06[6]), 6,8},
+ {&(_ZTV4Xt06[6]), 6,8},
+ {&(_tg__ZTV3t06__4Xt06[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt06[];
+extern VTBL_ENTRY _ZTV4Xt06[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt06[];
+Class_Descriptor cd_Xt06 = { "Xt06", // class name
+ bases_Xt06, 3,
+ &(vtc_Xt06[0]), // expected_vtbl_contents
+ &(vtt_Xt06[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt06),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt06),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt06),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt07 : virtual t07 {
+ virtual void abc(); // _ZN4Xt073abcEv
+ ~Xt07(); // tgen
+ Xt07(); // tgen
+};
+//SIG(1 Xt07) C1{ VBC2{ BC3{} BC4{ m Fi:0} v2} v1}
+
+
+void Xt07 ::abc(){vfunc_called(this, "_ZN4Xt073abcEv");}
+Xt07 ::~Xt07(){ note_dtor("Xt07", this);} // tgen
+Xt07 ::Xt07(){ note_ctor("Xt07", this);} // tgen
+
+static void Test_Xt07()
+{
+ extern Class_Descriptor cd_Xt07;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt07, buf);
+ Xt07 *dp, &lv = *(dp=new (buf) Xt07());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt07)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt07)");
+ check_base_class_offset(lv, (em_0*)(t07*), 0, "Xt07");
+ check_base_class_offset(lv, (ne_1*)(t07*), 0, "Xt07");
+ check_base_class_offset(lv, (t07*), 0, "Xt07");
+ test_class_info(&lv, &cd_Xt07);
+ dp->~Xt07();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt07(Test_Xt07, "Xt07", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt07C1Ev();
+extern void _ZN4Xt07D1Ev();
+Name_Map name_map_Xt07[] = {
+ NSPAIR(_ZN4Xt07C1Ev),
+ NSPAIR(_ZN4Xt07D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t07;
+extern VTBL_ENTRY _ZTI3t07[];
+extern VTBL_ENTRY _ZTV3t07[];
+static Base_Class bases_Xt07[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t07, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt07[];
+extern void _ZN3t073barEv();
+extern void _ZN4Xt073abcEv();
+static VTBL_ENTRY vtc_Xt07[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt07[0]),
+ (VTBL_ENTRY)&_ZN3t073barEv,
+ (VTBL_ENTRY)&_ZN4Xt073abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt07[];
+static VTT_ENTRY vtt_Xt07[] = {
+ {&(_ZTV4Xt07[4]), 4,6},
+ {&(_ZTV4Xt07[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt07[];
+extern VTBL_ENTRY _ZTV4Xt07[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt07[];
+Class_Descriptor cd_Xt07 = { "Xt07", // class name
+ bases_Xt07, 3,
+ &(vtc_Xt07[0]), // expected_vtbl_contents
+ &(vtt_Xt07[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt07),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt07),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt07),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt08 : virtual t08 {
+ virtual void abc(); // _ZN4Xt083abcEv
+ ~Xt08(); // tgen
+ Xt08(); // tgen
+};
+//SIG(1 Xt08) C1{ VBC2{ VBC3{} BC4{ m Fi:0} v2} v1}
+
+
+void Xt08 ::abc(){vfunc_called(this, "_ZN4Xt083abcEv");}
+Xt08 ::~Xt08(){ note_dtor("Xt08", this);} // tgen
+Xt08 ::Xt08(){ note_ctor("Xt08", this);} // tgen
+
+static void Test_Xt08()
+{
+ extern Class_Descriptor cd_Xt08;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt08, buf);
+ Xt08 *dp, &lv = *(dp=new (buf) Xt08());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt08)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt08)");
+ check_base_class_offset(lv, (em_0*)(t08*), 0, "Xt08");
+ check_base_class_offset(lv, (ne_1*)(t08*), 0, "Xt08");
+ check_base_class_offset(lv, (t08*), 0, "Xt08");
+ test_class_info(&lv, &cd_Xt08);
+ dp->~Xt08();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt08(Test_Xt08, "Xt08", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt08C1Ev();
+extern void _ZN4Xt08D1Ev();
+Name_Map name_map_Xt08[] = {
+ NSPAIR(_ZN4Xt08C1Ev),
+ NSPAIR(_ZN4Xt08D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t08;
+extern VTBL_ENTRY _ZTI3t08[];
+extern VTBL_ENTRY _ZTV3t08[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t08[];
+static Base_Class bases_Xt08[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t08, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt08[];
+extern void _ZN3t083barEv();
+extern void _ZN4Xt083abcEv();
+static VTBL_ENTRY vtc_Xt08[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt08[0]),
+ (VTBL_ENTRY)&_ZN3t083barEv,
+ (VTBL_ENTRY)&_ZN4Xt083abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt08[];
+extern void _ZN3t083barEv();
+static VTBL_ENTRY _tg__ZTV3t08__4Xt08[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t08[0]),
+ (VTBL_ENTRY)&_ZN3t083barEv,
+};
+static VTT_ENTRY vtt_Xt08[] = {
+ {&(_ZTV4Xt08[5]), 5,7},
+ {&(_ZTV4Xt08[5]), 5,7},
+ {&(_tg__ZTV3t08__4Xt08[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt08[];
+extern VTBL_ENTRY _ZTV4Xt08[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt08[];
+Class_Descriptor cd_Xt08 = { "Xt08", // class name
+ bases_Xt08, 3,
+ &(vtc_Xt08[0]), // expected_vtbl_contents
+ &(vtt_Xt08[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt08),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt08),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt08),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt09 : virtual t09 {
+ virtual void abc(); // _ZN4Xt093abcEv
+ ~Xt09(); // tgen
+ Xt09(); // tgen
+};
+//SIG(1 Xt09) C1{ VBC2{ BC3{} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt09 ::abc(){vfunc_called(this, "_ZN4Xt093abcEv");}
+Xt09 ::~Xt09(){ note_dtor("Xt09", this);} // tgen
+Xt09 ::Xt09(){ note_ctor("Xt09", this);} // tgen
+
+static void Test_Xt09()
+{
+ extern Class_Descriptor cd_Xt09;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt09, buf);
+ Xt09 *dp, &lv = *(dp=new (buf) Xt09());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt09)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt09)");
+ check_base_class_offset(lv, (em_0*)(t09*), 0, "Xt09");
+ check_base_class_offset(lv, (ne_1*)(t09*), 0, "Xt09");
+ check_base_class_offset(lv, (t09*), 0, "Xt09");
+ test_class_info(&lv, &cd_Xt09);
+ dp->~Xt09();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt09(Test_Xt09, "Xt09", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt09C1Ev();
+extern void _ZN4Xt09D1Ev();
+Name_Map name_map_Xt09[] = {
+ NSPAIR(_ZN4Xt09C1Ev),
+ NSPAIR(_ZN4Xt09D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t09;
+extern VTBL_ENTRY _ZTI3t09[];
+extern VTBL_ENTRY _ZTV3t09[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t09[];
+static Base_Class bases_Xt09[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t09, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt09[];
+extern void _ZN3t093barEv();
+extern void _ZN4Xt093abcEv();
+static VTBL_ENTRY vtc_Xt09[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt09[0]),
+ (VTBL_ENTRY)&_ZN3t093barEv,
+ (VTBL_ENTRY)&_ZN4Xt093abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt09[];
+extern void _ZN3t093barEv();
+static VTBL_ENTRY _tg__ZTV3t09__4Xt09[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t09[0]),
+ (VTBL_ENTRY)&_ZN3t093barEv,
+};
+static VTT_ENTRY vtt_Xt09[] = {
+ {&(_ZTV4Xt09[5]), 5,7},
+ {&(_ZTV4Xt09[5]), 5,7},
+ {&(_tg__ZTV3t09__4Xt09[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt09[];
+extern VTBL_ENTRY _ZTV4Xt09[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt09[];
+Class_Descriptor cd_Xt09 = { "Xt09", // class name
+ bases_Xt09, 3,
+ &(vtc_Xt09[0]), // expected_vtbl_contents
+ &(vtt_Xt09[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt09),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt09),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt09),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt00 : virtual t00 {
+ virtual void abc(); // _ZN4Xt003abcEv
+ ~Xt00(); // tgen
+ Xt00(); // tgen
+};
+//SIG(1 Xt00) C1{ VBC2{ VBC3{} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt00 ::abc(){vfunc_called(this, "_ZN4Xt003abcEv");}
+Xt00 ::~Xt00(){ note_dtor("Xt00", this);} // tgen
+Xt00 ::Xt00(){ note_ctor("Xt00", this);} // tgen
+
+static void Test_Xt00()
+{
+ extern Class_Descriptor cd_Xt00;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt00, buf);
+ Xt00 *dp, &lv = *(dp=new (buf) Xt00());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt00)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt00)");
+ check_base_class_offset(lv, (em_0*)(t00*), 0, "Xt00");
+ check_base_class_offset(lv, (ne_1*)(t00*), 0, "Xt00");
+ check_base_class_offset(lv, (t00*), 0, "Xt00");
+ test_class_info(&lv, &cd_Xt00);
+ dp->~Xt00();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt00(Test_Xt00, "Xt00", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt00C1Ev();
+extern void _ZN4Xt00D1Ev();
+Name_Map name_map_Xt00[] = {
+ NSPAIR(_ZN4Xt00C1Ev),
+ NSPAIR(_ZN4Xt00D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_em_0;
+extern VTBL_ENTRY _ZTI4em_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t00;
+extern VTBL_ENTRY _ZTI3t00[];
+extern VTBL_ENTRY _ZTV3t00[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t00[];
+static Base_Class bases_Xt00[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_em_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t00, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt00[];
+extern void _ZN3t003barEv();
+extern void _ZN4Xt003abcEv();
+static VTBL_ENTRY vtc_Xt00[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt00[0]),
+ (VTBL_ENTRY)&_ZN3t003barEv,
+ (VTBL_ENTRY)&_ZN4Xt003abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt00[];
+extern void _ZN3t003barEv();
+static VTBL_ENTRY _tg__ZTV3t00__4Xt00[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t00[0]),
+ (VTBL_ENTRY)&_ZN3t003barEv,
+};
+static VTT_ENTRY vtt_Xt00[] = {
+ {&(_ZTV4Xt00[6]), 6,8},
+ {&(_ZTV4Xt00[6]), 6,8},
+ {&(_tg__ZTV3t00__4Xt00[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt00[];
+extern VTBL_ENTRY _ZTV4Xt00[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt00[];
+Class_Descriptor cd_Xt00 = { "Xt00", // class name
+ bases_Xt00, 3,
+ &(vtc_Xt00[0]), // expected_vtbl_contents
+ &(vtt_Xt00[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt00),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt00),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt00),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt11 : virtual t11 {
+ virtual void abc(); // _ZN4Xt113abcEv
+ ~Xt11(); // tgen
+ Xt11(); // tgen
+};
+//SIG(1 Xt11) C1{ VBC2{ BC3{ m} v2} v1}
+
+
+void Xt11 ::abc(){vfunc_called(this, "_ZN4Xt113abcEv");}
+Xt11 ::~Xt11(){ note_dtor("Xt11", this);} // tgen
+Xt11 ::Xt11(){ note_ctor("Xt11", this);} // tgen
+
+static void Test_Xt11()
+{
+ extern Class_Descriptor cd_Xt11;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt11, buf);
+ Xt11 *dp, &lv = *(dp=new (buf) Xt11());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt11)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt11)");
+ check_base_class_offset(lv, (ne_0*)(t11*), 0, "Xt11");
+ check_base_class_offset(lv, (t11*), 0, "Xt11");
+ test_class_info(&lv, &cd_Xt11);
+ dp->~Xt11();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt11(Test_Xt11, "Xt11", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt11C1Ev();
+extern void _ZN4Xt11D1Ev();
+Name_Map name_map_Xt11[] = {
+ NSPAIR(_ZN4Xt11C1Ev),
+ NSPAIR(_ZN4Xt11D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_t11;
+extern VTBL_ENTRY _ZTI3t11[];
+extern VTBL_ENTRY _ZTV3t11[];
+static Base_Class bases_Xt11[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 0},
+ {&cd_t11, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt11[];
+extern void _ZN3t113barEv();
+extern void _ZN4Xt113abcEv();
+static VTBL_ENTRY vtc_Xt11[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt11[0]),
+ (VTBL_ENTRY)&_ZN3t113barEv,
+ (VTBL_ENTRY)&_ZN4Xt113abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt11[];
+static VTT_ENTRY vtt_Xt11[] = {
+ {&(_ZTV4Xt11[4]), 4,6},
+ {&(_ZTV4Xt11[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt11[];
+extern VTBL_ENTRY _ZTV4Xt11[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt11[];
+Class_Descriptor cd_Xt11 = { "Xt11", // class name
+ bases_Xt11, 2,
+ &(vtc_Xt11[0]), // expected_vtbl_contents
+ &(vtt_Xt11[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt11),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt11),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt11),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt12 : virtual t12 {
+ virtual void abc(); // _ZN4Xt123abcEv
+ ~Xt12(); // tgen
+ Xt12(); // tgen
+};
+//SIG(1 Xt12) C1{ VBC2{ VBC3{ m} v2} v1}
+
+
+void Xt12 ::abc(){vfunc_called(this, "_ZN4Xt123abcEv");}
+Xt12 ::~Xt12(){ note_dtor("Xt12", this);} // tgen
+Xt12 ::Xt12(){ note_ctor("Xt12", this);} // tgen
+
+static void Test_Xt12()
+{
+ extern Class_Descriptor cd_Xt12;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt12, buf);
+ Xt12 *dp, &lv = *(dp=new (buf) Xt12());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt12)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt12)");
+ check_base_class_offset(lv, (ne_0*)(t12*), 0, "Xt12");
+ check_base_class_offset(lv, (t12*), 0, "Xt12");
+ test_class_info(&lv, &cd_Xt12);
+ dp->~Xt12();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt12(Test_Xt12, "Xt12", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt12C1Ev();
+extern void _ZN4Xt12D1Ev();
+Name_Map name_map_Xt12[] = {
+ NSPAIR(_ZN4Xt12C1Ev),
+ NSPAIR(_ZN4Xt12D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_t12;
+extern VTBL_ENTRY _ZTI3t12[];
+extern VTBL_ENTRY _ZTV3t12[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t12[];
+static Base_Class bases_Xt12[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 1},
+ {&cd_t12, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt12[];
+extern void _ZN3t123barEv();
+extern void _ZN4Xt123abcEv();
+static VTBL_ENTRY vtc_Xt12[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt12[0]),
+ (VTBL_ENTRY)&_ZN3t123barEv,
+ (VTBL_ENTRY)&_ZN4Xt123abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt12[];
+extern void _ZN3t123barEv();
+static VTBL_ENTRY _tg__ZTV3t12__4Xt12[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t12[0]),
+ (VTBL_ENTRY)&_ZN3t123barEv,
+};
+static VTT_ENTRY vtt_Xt12[] = {
+ {&(_ZTV4Xt12[5]), 5,7},
+ {&(_ZTV4Xt12[5]), 5,7},
+ {&(_tg__ZTV3t12__4Xt12[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt12[];
+extern VTBL_ENTRY _ZTV4Xt12[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt12[];
+Class_Descriptor cd_Xt12 = { "Xt12", // class name
+ bases_Xt12, 2,
+ &(vtc_Xt12[0]), // expected_vtbl_contents
+ &(vtt_Xt12[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt12),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt12),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt12),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt13 : virtual t13 {
+ virtual void abc(); // _ZN4Xt133abcEv
+ ~Xt13(); // tgen
+ Xt13(); // tgen
+};
+//SIG(1 Xt13) C1{ VBC2{ BC3{ m} BC4{} v2} v1}
+
+
+void Xt13 ::abc(){vfunc_called(this, "_ZN4Xt133abcEv");}
+Xt13 ::~Xt13(){ note_dtor("Xt13", this);} // tgen
+Xt13 ::Xt13(){ note_ctor("Xt13", this);} // tgen
+
+static void Test_Xt13()
+{
+ extern Class_Descriptor cd_Xt13;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt13, buf);
+ Xt13 *dp, &lv = *(dp=new (buf) Xt13());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt13)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt13)");
+ check_base_class_offset(lv, (ne_0*)(t13*), 0, "Xt13");
+ check_base_class_offset(lv, (em_1*)(t13*), 0, "Xt13");
+ check_base_class_offset(lv, (t13*), 0, "Xt13");
+ test_class_info(&lv, &cd_Xt13);
+ dp->~Xt13();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt13(Test_Xt13, "Xt13", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt13C1Ev();
+extern void _ZN4Xt13D1Ev();
+Name_Map name_map_Xt13[] = {
+ NSPAIR(_ZN4Xt13C1Ev),
+ NSPAIR(_ZN4Xt13D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t13;
+extern VTBL_ENTRY _ZTI3t13[];
+extern VTBL_ENTRY _ZTV3t13[];
+static Base_Class bases_Xt13[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t13, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt13[];
+extern void _ZN3t133barEv();
+extern void _ZN4Xt133abcEv();
+static VTBL_ENTRY vtc_Xt13[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt13[0]),
+ (VTBL_ENTRY)&_ZN3t133barEv,
+ (VTBL_ENTRY)&_ZN4Xt133abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt13[];
+static VTT_ENTRY vtt_Xt13[] = {
+ {&(_ZTV4Xt13[4]), 4,6},
+ {&(_ZTV4Xt13[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt13[];
+extern VTBL_ENTRY _ZTV4Xt13[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt13[];
+Class_Descriptor cd_Xt13 = { "Xt13", // class name
+ bases_Xt13, 3,
+ &(vtc_Xt13[0]), // expected_vtbl_contents
+ &(vtt_Xt13[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt13),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt13),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt13),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt14 : virtual t14 {
+ virtual void abc(); // _ZN4Xt143abcEv
+ ~Xt14(); // tgen
+ Xt14(); // tgen
+};
+//SIG(1 Xt14) C1{ VBC2{ VBC3{ m} BC4{} v2} v1}
+
+
+void Xt14 ::abc(){vfunc_called(this, "_ZN4Xt143abcEv");}
+Xt14 ::~Xt14(){ note_dtor("Xt14", this);} // tgen
+Xt14 ::Xt14(){ note_ctor("Xt14", this);} // tgen
+
+static void Test_Xt14()
+{
+ extern Class_Descriptor cd_Xt14;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt14, buf);
+ Xt14 *dp, &lv = *(dp=new (buf) Xt14());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt14)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt14)");
+ check_base_class_offset(lv, (ne_0*)(t14*), 0, "Xt14");
+ check_base_class_offset(lv, (em_1*)(t14*), 0, "Xt14");
+ check_base_class_offset(lv, (t14*), 0, "Xt14");
+ test_class_info(&lv, &cd_Xt14);
+ dp->~Xt14();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt14(Test_Xt14, "Xt14", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt14C1Ev();
+extern void _ZN4Xt14D1Ev();
+Name_Map name_map_Xt14[] = {
+ NSPAIR(_ZN4Xt14C1Ev),
+ NSPAIR(_ZN4Xt14D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t14;
+extern VTBL_ENTRY _ZTI3t14[];
+extern VTBL_ENTRY _ZTV3t14[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t14[];
+static Base_Class bases_Xt14[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t14, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt14[];
+extern void _ZN3t143barEv();
+extern void _ZN4Xt143abcEv();
+static VTBL_ENTRY vtc_Xt14[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt14[0]),
+ (VTBL_ENTRY)&_ZN3t143barEv,
+ (VTBL_ENTRY)&_ZN4Xt143abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt14[];
+extern void _ZN3t143barEv();
+static VTBL_ENTRY _tg__ZTV3t14__4Xt14[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t14[0]),
+ (VTBL_ENTRY)&_ZN3t143barEv,
+};
+static VTT_ENTRY vtt_Xt14[] = {
+ {&(_ZTV4Xt14[5]), 5,7},
+ {&(_ZTV4Xt14[5]), 5,7},
+ {&(_tg__ZTV3t14__4Xt14[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt14[];
+extern VTBL_ENTRY _ZTV4Xt14[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt14[];
+Class_Descriptor cd_Xt14 = { "Xt14", // class name
+ bases_Xt14, 3,
+ &(vtc_Xt14[0]), // expected_vtbl_contents
+ &(vtt_Xt14[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt14),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt14),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt14),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt15 : virtual t15 {
+ virtual void abc(); // _ZN4Xt153abcEv
+ ~Xt15(); // tgen
+ Xt15(); // tgen
+};
+//SIG(1 Xt15) C1{ VBC2{ BC3{ m} VBC4{} v2} v1}
+
+
+void Xt15 ::abc(){vfunc_called(this, "_ZN4Xt153abcEv");}
+Xt15 ::~Xt15(){ note_dtor("Xt15", this);} // tgen
+Xt15 ::Xt15(){ note_ctor("Xt15", this);} // tgen
+
+static void Test_Xt15()
+{
+ extern Class_Descriptor cd_Xt15;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt15, buf);
+ Xt15 *dp, &lv = *(dp=new (buf) Xt15());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt15)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt15)");
+ check_base_class_offset(lv, (ne_0*)(t15*), 0, "Xt15");
+ check_base_class_offset(lv, (em_1*)(t15*), 0, "Xt15");
+ check_base_class_offset(lv, (t15*), 0, "Xt15");
+ test_class_info(&lv, &cd_Xt15);
+ dp->~Xt15();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt15(Test_Xt15, "Xt15", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt15C1Ev();
+extern void _ZN4Xt15D1Ev();
+Name_Map name_map_Xt15[] = {
+ NSPAIR(_ZN4Xt15C1Ev),
+ NSPAIR(_ZN4Xt15D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t15;
+extern VTBL_ENTRY _ZTI3t15[];
+extern VTBL_ENTRY _ZTV3t15[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t15[];
+static Base_Class bases_Xt15[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t15, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt15[];
+extern void _ZN3t153barEv();
+extern void _ZN4Xt153abcEv();
+static VTBL_ENTRY vtc_Xt15[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt15[0]),
+ (VTBL_ENTRY)&_ZN3t153barEv,
+ (VTBL_ENTRY)&_ZN4Xt153abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt15[];
+extern void _ZN3t153barEv();
+static VTBL_ENTRY _tg__ZTV3t15__4Xt15[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t15[0]),
+ (VTBL_ENTRY)&_ZN3t153barEv,
+};
+static VTT_ENTRY vtt_Xt15[] = {
+ {&(_ZTV4Xt15[5]), 5,7},
+ {&(_ZTV4Xt15[5]), 5,7},
+ {&(_tg__ZTV3t15__4Xt15[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt15[];
+extern VTBL_ENTRY _ZTV4Xt15[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt15[];
+Class_Descriptor cd_Xt15 = { "Xt15", // class name
+ bases_Xt15, 3,
+ &(vtc_Xt15[0]), // expected_vtbl_contents
+ &(vtt_Xt15[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt15),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt15),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt15),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt16 : virtual t16 {
+ virtual void abc(); // _ZN4Xt163abcEv
+ ~Xt16(); // tgen
+ Xt16(); // tgen
+};
+//SIG(1 Xt16) C1{ VBC2{ VBC3{ m} VBC4{} v2} v1}
+
+
+void Xt16 ::abc(){vfunc_called(this, "_ZN4Xt163abcEv");}
+Xt16 ::~Xt16(){ note_dtor("Xt16", this);} // tgen
+Xt16 ::Xt16(){ note_ctor("Xt16", this);} // tgen
+
+static void Test_Xt16()
+{
+ extern Class_Descriptor cd_Xt16;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt16, buf);
+ Xt16 *dp, &lv = *(dp=new (buf) Xt16());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt16)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt16)");
+ check_base_class_offset(lv, (ne_0*)(t16*), 0, "Xt16");
+ check_base_class_offset(lv, (em_1*)(t16*), 0, "Xt16");
+ check_base_class_offset(lv, (t16*), 0, "Xt16");
+ test_class_info(&lv, &cd_Xt16);
+ dp->~Xt16();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt16(Test_Xt16, "Xt16", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt16C1Ev();
+extern void _ZN4Xt16D1Ev();
+Name_Map name_map_Xt16[] = {
+ NSPAIR(_ZN4Xt16C1Ev),
+ NSPAIR(_ZN4Xt16D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t16;
+extern VTBL_ENTRY _ZTI3t16[];
+extern VTBL_ENTRY _ZTV3t16[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t16[];
+static Base_Class bases_Xt16[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t16, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt16[];
+extern void _ZN3t163barEv();
+extern void _ZN4Xt163abcEv();
+static VTBL_ENTRY vtc_Xt16[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt16[0]),
+ (VTBL_ENTRY)&_ZN3t163barEv,
+ (VTBL_ENTRY)&_ZN4Xt163abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt16[];
+extern void _ZN3t163barEv();
+static VTBL_ENTRY _tg__ZTV3t16__4Xt16[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t16[0]),
+ (VTBL_ENTRY)&_ZN3t163barEv,
+};
+static VTT_ENTRY vtt_Xt16[] = {
+ {&(_ZTV4Xt16[6]), 6,8},
+ {&(_ZTV4Xt16[6]), 6,8},
+ {&(_tg__ZTV3t16__4Xt16[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt16[];
+extern VTBL_ENTRY _ZTV4Xt16[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt16[];
+Class_Descriptor cd_Xt16 = { "Xt16", // class name
+ bases_Xt16, 3,
+ &(vtc_Xt16[0]), // expected_vtbl_contents
+ &(vtt_Xt16[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt16),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt16),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt16),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt17 : virtual t17 {
+ virtual void abc(); // _ZN4Xt173abcEv
+ ~Xt17(); // tgen
+ Xt17(); // tgen
+};
+//SIG(1 Xt17) C1{ VBC2{ BC3{ m} BC4{ m Fi:0} v2} v1}
+
+
+void Xt17 ::abc(){vfunc_called(this, "_ZN4Xt173abcEv");}
+Xt17 ::~Xt17(){ note_dtor("Xt17", this);} // tgen
+Xt17 ::Xt17(){ note_ctor("Xt17", this);} // tgen
+
+static void Test_Xt17()
+{
+ extern Class_Descriptor cd_Xt17;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt17, buf);
+ Xt17 *dp, &lv = *(dp=new (buf) Xt17());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt17)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt17)");
+ check_base_class_offset(lv, (ne_0*)(t17*), 0, "Xt17");
+ check_base_class_offset(lv, (ne_1*)(t17*), 0, "Xt17");
+ check_base_class_offset(lv, (t17*), 0, "Xt17");
+ test_class_info(&lv, &cd_Xt17);
+ dp->~Xt17();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt17(Test_Xt17, "Xt17", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt17C1Ev();
+extern void _ZN4Xt17D1Ev();
+Name_Map name_map_Xt17[] = {
+ NSPAIR(_ZN4Xt17C1Ev),
+ NSPAIR(_ZN4Xt17D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t17;
+extern VTBL_ENTRY _ZTI3t17[];
+extern VTBL_ENTRY _ZTV3t17[];
+static Base_Class bases_Xt17[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t17, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt17[];
+extern void _ZN3t173barEv();
+extern void _ZN4Xt173abcEv();
+static VTBL_ENTRY vtc_Xt17[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt17[0]),
+ (VTBL_ENTRY)&_ZN3t173barEv,
+ (VTBL_ENTRY)&_ZN4Xt173abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt17[];
+static VTT_ENTRY vtt_Xt17[] = {
+ {&(_ZTV4Xt17[4]), 4,6},
+ {&(_ZTV4Xt17[4]), 4,6},
+};
+extern VTBL_ENTRY _ZTI4Xt17[];
+extern VTBL_ENTRY _ZTV4Xt17[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt17[];
+Class_Descriptor cd_Xt17 = { "Xt17", // class name
+ bases_Xt17, 3,
+ &(vtc_Xt17[0]), // expected_vtbl_contents
+ &(vtt_Xt17[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt17),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt17),6, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt17),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt18 : virtual t18 {
+ virtual void abc(); // _ZN4Xt183abcEv
+ ~Xt18(); // tgen
+ Xt18(); // tgen
+};
+//SIG(1 Xt18) C1{ VBC2{ VBC3{ m} BC4{ m Fi:0} v2} v1}
+
+
+void Xt18 ::abc(){vfunc_called(this, "_ZN4Xt183abcEv");}
+Xt18 ::~Xt18(){ note_dtor("Xt18", this);} // tgen
+Xt18 ::Xt18(){ note_ctor("Xt18", this);} // tgen
+
+static void Test_Xt18()
+{
+ extern Class_Descriptor cd_Xt18;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt18, buf);
+ Xt18 *dp, &lv = *(dp=new (buf) Xt18());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt18)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt18)");
+ check_base_class_offset(lv, (ne_0*)(t18*), 0, "Xt18");
+ check_base_class_offset(lv, (ne_1*)(t18*), 0, "Xt18");
+ check_base_class_offset(lv, (t18*), 0, "Xt18");
+ test_class_info(&lv, &cd_Xt18);
+ dp->~Xt18();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt18(Test_Xt18, "Xt18", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt18C1Ev();
+extern void _ZN4Xt18D1Ev();
+Name_Map name_map_Xt18[] = {
+ NSPAIR(_ZN4Xt18C1Ev),
+ NSPAIR(_ZN4Xt18D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t18;
+extern VTBL_ENTRY _ZTI3t18[];
+extern VTBL_ENTRY _ZTV3t18[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t18[];
+static Base_Class bases_Xt18[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t18, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt18[];
+extern void _ZN3t183barEv();
+extern void _ZN4Xt183abcEv();
+static VTBL_ENTRY vtc_Xt18[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt18[0]),
+ (VTBL_ENTRY)&_ZN3t183barEv,
+ (VTBL_ENTRY)&_ZN4Xt183abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt18[];
+extern void _ZN3t183barEv();
+static VTBL_ENTRY _tg__ZTV3t18__4Xt18[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t18[0]),
+ (VTBL_ENTRY)&_ZN3t183barEv,
+};
+static VTT_ENTRY vtt_Xt18[] = {
+ {&(_ZTV4Xt18[5]), 5,7},
+ {&(_ZTV4Xt18[5]), 5,7},
+ {&(_tg__ZTV3t18__4Xt18[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt18[];
+extern VTBL_ENTRY _ZTV4Xt18[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt18[];
+Class_Descriptor cd_Xt18 = { "Xt18", // class name
+ bases_Xt18, 3,
+ &(vtc_Xt18[0]), // expected_vtbl_contents
+ &(vtt_Xt18[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt18),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt18),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt18),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt19 : virtual t19 {
+ virtual void abc(); // _ZN4Xt193abcEv
+ ~Xt19(); // tgen
+ Xt19(); // tgen
+};
+//SIG(1 Xt19) C1{ VBC2{ BC3{ m} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt19 ::abc(){vfunc_called(this, "_ZN4Xt193abcEv");}
+Xt19 ::~Xt19(){ note_dtor("Xt19", this);} // tgen
+Xt19 ::Xt19(){ note_ctor("Xt19", this);} // tgen
+
+static void Test_Xt19()
+{
+ extern Class_Descriptor cd_Xt19;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt19, buf);
+ Xt19 *dp, &lv = *(dp=new (buf) Xt19());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt19)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt19)");
+ check_base_class_offset(lv, (ne_0*)(t19*), 0, "Xt19");
+ check_base_class_offset(lv, (ne_1*)(t19*), 0, "Xt19");
+ check_base_class_offset(lv, (t19*), 0, "Xt19");
+ test_class_info(&lv, &cd_Xt19);
+ dp->~Xt19();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt19(Test_Xt19, "Xt19", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt19C1Ev();
+extern void _ZN4Xt19D1Ev();
+Name_Map name_map_Xt19[] = {
+ NSPAIR(_ZN4Xt19C1Ev),
+ NSPAIR(_ZN4Xt19D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t19;
+extern VTBL_ENTRY _ZTI3t19[];
+extern VTBL_ENTRY _ZTV3t19[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t19[];
+static Base_Class bases_Xt19[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t19, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt19[];
+extern void _ZN3t193barEv();
+extern void _ZN4Xt193abcEv();
+static VTBL_ENTRY vtc_Xt19[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt19[0]),
+ (VTBL_ENTRY)&_ZN3t193barEv,
+ (VTBL_ENTRY)&_ZN4Xt193abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt19[];
+extern void _ZN3t193barEv();
+static VTBL_ENTRY _tg__ZTV3t19__4Xt19[] = {
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t19[0]),
+ (VTBL_ENTRY)&_ZN3t193barEv,
+};
+static VTT_ENTRY vtt_Xt19[] = {
+ {&(_ZTV4Xt19[5]), 5,7},
+ {&(_ZTV4Xt19[5]), 5,7},
+ {&(_tg__ZTV3t19__4Xt19[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt19[];
+extern VTBL_ENTRY _ZTV4Xt19[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt19[];
+Class_Descriptor cd_Xt19 = { "Xt19", // class name
+ bases_Xt19, 3,
+ &(vtc_Xt19[0]), // expected_vtbl_contents
+ &(vtt_Xt19[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt19),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt19),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt19),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt20 : virtual t20 {
+ virtual void abc(); // _ZN4Xt203abcEv
+ ~Xt20(); // tgen
+ Xt20(); // tgen
+};
+//SIG(1 Xt20) C1{ VBC2{ VBC3{ m} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt20 ::abc(){vfunc_called(this, "_ZN4Xt203abcEv");}
+Xt20 ::~Xt20(){ note_dtor("Xt20", this);} // tgen
+Xt20 ::Xt20(){ note_ctor("Xt20", this);} // tgen
+
+static void Test_Xt20()
+{
+ extern Class_Descriptor cd_Xt20;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[2];
+ init_test(&cd_Xt20, buf);
+ Xt20 *dp, &lv = *(dp=new (buf) Xt20());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(8,4), "sizeof(Xt20)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt20)");
+ check_base_class_offset(lv, (ne_0*)(t20*), 0, "Xt20");
+ check_base_class_offset(lv, (ne_1*)(t20*), 0, "Xt20");
+ check_base_class_offset(lv, (t20*), 0, "Xt20");
+ test_class_info(&lv, &cd_Xt20);
+ dp->~Xt20();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt20(Test_Xt20, "Xt20", ABISELECT(8,4));
+
+#else // __cplusplus
+
+extern void _ZN4Xt20C1Ev();
+extern void _ZN4Xt20D1Ev();
+Name_Map name_map_Xt20[] = {
+ NSPAIR(_ZN4Xt20C1Ev),
+ NSPAIR(_ZN4Xt20D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_ne_0;
+extern VTBL_ENTRY _ZTI4ne_0[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t20;
+extern VTBL_ENTRY _ZTI3t20[];
+extern VTBL_ENTRY _ZTV3t20[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t20[];
+static Base_Class bases_Xt20[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_ne_0, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t20, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt20[];
+extern void _ZN3t203barEv();
+extern void _ZN4Xt203abcEv();
+static VTBL_ENTRY vtc_Xt20[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt20[0]),
+ (VTBL_ENTRY)&_ZN3t203barEv,
+ (VTBL_ENTRY)&_ZN4Xt203abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt20[];
+extern void _ZN3t203barEv();
+static VTBL_ENTRY _tg__ZTV3t20__4Xt20[] = {
+ 0,
+ 0,
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t20[0]),
+ (VTBL_ENTRY)&_ZN3t203barEv,
+};
+static VTT_ENTRY vtt_Xt20[] = {
+ {&(_ZTV4Xt20[6]), 6,8},
+ {&(_ZTV4Xt20[6]), 6,8},
+ {&(_tg__ZTV3t20__4Xt20[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt20[];
+extern VTBL_ENTRY _ZTV4Xt20[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt20[];
+Class_Descriptor cd_Xt20 = { "Xt20", // class name
+ bases_Xt20, 3,
+ &(vtc_Xt20[0]), // expected_vtbl_contents
+ &(vtt_Xt20[0]), // expected_vtt_contents
+ ABISELECT(8,4), // object size
+ NSPAIRA(_ZTI4Xt20),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt20),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt20),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt21 : virtual t21 {
+ virtual void abc(); // _ZN4Xt213abcEv
+ ~Xt21(); // tgen
+ Xt21(); // tgen
+};
+//SIG(1 Xt21) C1{ VBC2{ BC3{ Fi} v2} v1}
+
+
+void Xt21 ::abc(){vfunc_called(this, "_ZN4Xt213abcEv");}
+Xt21 ::~Xt21(){ note_dtor("Xt21", this);} // tgen
+Xt21 ::Xt21(){ note_ctor("Xt21", this);} // tgen
+
+static void Test_Xt21()
+{
+ extern Class_Descriptor cd_Xt21;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[4];
+ init_test(&cd_Xt21, buf);
+ Xt21 *dp, &lv = *(dp=new (buf) Xt21());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,12), "sizeof(Xt21)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt21)");
+ check_base_class_offset(lv, (xx*)(t21*), ABISELECT(16,8), "Xt21");
+ check_base_class_offset(lv, (t21*), ABISELECT(8,4), "Xt21");
+ test_class_info(&lv, &cd_Xt21);
+ dp->~Xt21();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt21(Test_Xt21, "Xt21", ABISELECT(24,12));
+
+#else // __cplusplus
+
+extern void _ZN4Xt21C1Ev();
+extern void _ZN4Xt21D1Ev();
+Name_Map name_map_Xt21[] = {
+ NSPAIR(_ZN4Xt21C1Ev),
+ NSPAIR(_ZN4Xt21D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_t21;
+extern VTBL_ENTRY _ZTI3t21[];
+extern VTBL_ENTRY _ZTV3t21[];
+static Base_Class bases_Xt21[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(16,8), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 0},
+ {&cd_t21, ABISELECT(8,4), //bcp->offset
+ 4, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt21[];
+extern void _ZN4Xt213abcEv();
+extern void _ZN3t213barEv();
+static VTBL_ENTRY vtc_Xt21[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt21[0]),
+ (VTBL_ENTRY)&_ZN4Xt213abcEv,
+ 0,
+ ABISELECT(-8,-4),
+ (VTBL_ENTRY)&(_ZTI4Xt21[0]),
+ (VTBL_ENTRY)&_ZN3t213barEv,
+};
+extern VTBL_ENTRY _ZTV4Xt21[];
+static VTT_ENTRY vtt_Xt21[] = {
+ {&(_ZTV4Xt21[3]), 3,8},
+ {&(_ZTV4Xt21[7]), 7,8},
+};
+extern VTBL_ENTRY _ZTI4Xt21[];
+extern VTBL_ENTRY _ZTV4Xt21[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt21[];
+Class_Descriptor cd_Xt21 = { "Xt21", // class name
+ bases_Xt21, 2,
+ &(vtc_Xt21[0]), // expected_vtbl_contents
+ &(vtt_Xt21[0]), // expected_vtt_contents
+ ABISELECT(24,12), // object size
+ NSPAIRA(_ZTI4Xt21),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt21),8, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt21),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt22 : virtual t22 {
+ virtual void abc(); // _ZN4Xt223abcEv
+ ~Xt22(); // tgen
+ Xt22(); // tgen
+};
+//SIG(1 Xt22) C1{ VBC2{ VBC3{ Fi} v2} v1}
+
+
+void Xt22 ::abc(){vfunc_called(this, "_ZN4Xt223abcEv");}
+Xt22 ::~Xt22(){ note_dtor("Xt22", this);} // tgen
+Xt22 ::Xt22(){ note_ctor("Xt22", this);} // tgen
+
+static void Test_Xt22()
+{
+ extern Class_Descriptor cd_Xt22;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xt22, buf);
+ Xt22 *dp, &lv = *(dp=new (buf) Xt22());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xt22)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt22)");
+ check_base_class_offset(lv, (xx*)(t22*), ABISELECT(8,4), "Xt22");
+ check_base_class_offset(lv, (t22*), 0, "Xt22");
+ test_class_info(&lv, &cd_Xt22);
+ dp->~Xt22();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt22(Test_Xt22, "Xt22", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN4Xt22C1Ev();
+extern void _ZN4Xt22D1Ev();
+Name_Map name_map_Xt22[] = {
+ NSPAIR(_ZN4Xt22C1Ev),
+ NSPAIR(_ZN4Xt22D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_t22;
+extern VTBL_ENTRY _ZTI3t22[];
+extern VTBL_ENTRY _ZTV3t22[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t22[];
+static Base_Class bases_Xt22[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 1, //immediately_derived
+ 0, 1},
+ {&cd_t22, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt22[];
+extern void _ZN3t223barEv();
+extern void _ZN4Xt223abcEv();
+static VTBL_ENTRY vtc_Xt22[] = {
+ 0,
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt22[0]),
+ (VTBL_ENTRY)&_ZN3t223barEv,
+ (VTBL_ENTRY)&_ZN4Xt223abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt22[];
+extern void _ZN3t223barEv();
+static VTBL_ENTRY _tg__ZTV3t22__4Xt22[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t22[0]),
+ (VTBL_ENTRY)&_ZN3t223barEv,
+};
+static VTT_ENTRY vtt_Xt22[] = {
+ {&(_ZTV4Xt22[5]), 5,7},
+ {&(_ZTV4Xt22[5]), 5,7},
+ {&(_tg__ZTV3t22__4Xt22[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt22[];
+extern VTBL_ENTRY _ZTV4Xt22[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt22[];
+Class_Descriptor cd_Xt22 = { "Xt22", // class name
+ bases_Xt22, 2,
+ &(vtc_Xt22[0]), // expected_vtbl_contents
+ &(vtt_Xt22[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4Xt22),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt22),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt22),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt23 : virtual t23 {
+ virtual void abc(); // _ZN4Xt233abcEv
+ ~Xt23(); // tgen
+ Xt23(); // tgen
+};
+//SIG(1 Xt23) C1{ VBC2{ BC3{ Fi} BC4{} v2} v1}
+
+
+void Xt23 ::abc(){vfunc_called(this, "_ZN4Xt233abcEv");}
+Xt23 ::~Xt23(){ note_dtor("Xt23", this);} // tgen
+Xt23 ::Xt23(){ note_ctor("Xt23", this);} // tgen
+
+static void Test_Xt23()
+{
+ extern Class_Descriptor cd_Xt23;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[4];
+ init_test(&cd_Xt23, buf);
+ Xt23 *dp, &lv = *(dp=new (buf) Xt23());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,12), "sizeof(Xt23)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt23)");
+ check_base_class_offset(lv, (xx*)(t23*), ABISELECT(16,8), "Xt23");
+ check_base_class_offset(lv, (em_1*)(t23*), ABISELECT(8,4), "Xt23");
+ check_base_class_offset(lv, (t23*), ABISELECT(8,4), "Xt23");
+ test_class_info(&lv, &cd_Xt23);
+ dp->~Xt23();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt23(Test_Xt23, "Xt23", ABISELECT(24,12));
+
+#else // __cplusplus
+
+extern void _ZN4Xt23C1Ev();
+extern void _ZN4Xt23D1Ev();
+Name_Map name_map_Xt23[] = {
+ NSPAIR(_ZN4Xt23C1Ev),
+ NSPAIR(_ZN4Xt23D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t23;
+extern VTBL_ENTRY _ZTI3t23[];
+extern VTBL_ENTRY _ZTV3t23[];
+static Base_Class bases_Xt23[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(16,8), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t23, ABISELECT(8,4), //bcp->offset
+ 4, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt23[];
+extern void _ZN4Xt233abcEv();
+extern void _ZN3t233barEv();
+static VTBL_ENTRY vtc_Xt23[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt23[0]),
+ (VTBL_ENTRY)&_ZN4Xt233abcEv,
+ 0,
+ ABISELECT(-8,-4),
+ (VTBL_ENTRY)&(_ZTI4Xt23[0]),
+ (VTBL_ENTRY)&_ZN3t233barEv,
+};
+extern VTBL_ENTRY _ZTV4Xt23[];
+static VTT_ENTRY vtt_Xt23[] = {
+ {&(_ZTV4Xt23[3]), 3,8},
+ {&(_ZTV4Xt23[7]), 7,8},
+};
+extern VTBL_ENTRY _ZTI4Xt23[];
+extern VTBL_ENTRY _ZTV4Xt23[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt23[];
+Class_Descriptor cd_Xt23 = { "Xt23", // class name
+ bases_Xt23, 3,
+ &(vtc_Xt23[0]), // expected_vtbl_contents
+ &(vtt_Xt23[0]), // expected_vtt_contents
+ ABISELECT(24,12), // object size
+ NSPAIRA(_ZTI4Xt23),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt23),8, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt23),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt24 : virtual t24 {
+ virtual void abc(); // _ZN4Xt243abcEv
+ ~Xt24(); // tgen
+ Xt24(); // tgen
+};
+//SIG(1 Xt24) C1{ VBC2{ VBC3{ Fi} BC4{} v2} v1}
+
+
+void Xt24 ::abc(){vfunc_called(this, "_ZN4Xt243abcEv");}
+Xt24 ::~Xt24(){ note_dtor("Xt24", this);} // tgen
+Xt24 ::Xt24(){ note_ctor("Xt24", this);} // tgen
+
+static void Test_Xt24()
+{
+ extern Class_Descriptor cd_Xt24;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xt24, buf);
+ Xt24 *dp, &lv = *(dp=new (buf) Xt24());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xt24)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt24)");
+ check_base_class_offset(lv, (xx*)(t24*), ABISELECT(8,4), "Xt24");
+ check_base_class_offset(lv, (em_1*)(t24*), 0, "Xt24");
+ check_base_class_offset(lv, (t24*), 0, "Xt24");
+ test_class_info(&lv, &cd_Xt24);
+ dp->~Xt24();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt24(Test_Xt24, "Xt24", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN4Xt24C1Ev();
+extern void _ZN4Xt24D1Ev();
+Name_Map name_map_Xt24[] = {
+ NSPAIR(_ZN4Xt24C1Ev),
+ NSPAIR(_ZN4Xt24D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t24;
+extern VTBL_ENTRY _ZTI3t24[];
+extern VTBL_ENTRY _ZTV3t24[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t24[];
+static Base_Class bases_Xt24[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t24, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt24[];
+extern void _ZN3t243barEv();
+extern void _ZN4Xt243abcEv();
+static VTBL_ENTRY vtc_Xt24[] = {
+ 0,
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt24[0]),
+ (VTBL_ENTRY)&_ZN3t243barEv,
+ (VTBL_ENTRY)&_ZN4Xt243abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt24[];
+extern void _ZN3t243barEv();
+static VTBL_ENTRY _tg__ZTV3t24__4Xt24[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t24[0]),
+ (VTBL_ENTRY)&_ZN3t243barEv,
+};
+static VTT_ENTRY vtt_Xt24[] = {
+ {&(_ZTV4Xt24[5]), 5,7},
+ {&(_ZTV4Xt24[5]), 5,7},
+ {&(_tg__ZTV3t24__4Xt24[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt24[];
+extern VTBL_ENTRY _ZTV4Xt24[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt24[];
+Class_Descriptor cd_Xt24 = { "Xt24", // class name
+ bases_Xt24, 3,
+ &(vtc_Xt24[0]), // expected_vtbl_contents
+ &(vtt_Xt24[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4Xt24),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt24),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt24),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt25 : virtual t25 {
+ virtual void abc(); // _ZN4Xt253abcEv
+ ~Xt25(); // tgen
+ Xt25(); // tgen
+};
+//SIG(1 Xt25) C1{ VBC2{ BC3{ Fi} VBC4{} v2} v1}
+
+
+void Xt25 ::abc(){vfunc_called(this, "_ZN4Xt253abcEv");}
+Xt25 ::~Xt25(){ note_dtor("Xt25", this);} // tgen
+Xt25 ::Xt25(){ note_ctor("Xt25", this);} // tgen
+
+static void Test_Xt25()
+{
+ extern Class_Descriptor cd_Xt25;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[4];
+ init_test(&cd_Xt25, buf);
+ Xt25 *dp, &lv = *(dp=new (buf) Xt25());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,12), "sizeof(Xt25)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt25)");
+ check_base_class_offset(lv, (xx*)(t25*), ABISELECT(16,8), "Xt25");
+ check_base_class_offset(lv, (em_1*)(t25*), 0, "Xt25");
+ check_base_class_offset(lv, (t25*), ABISELECT(8,4), "Xt25");
+ test_class_info(&lv, &cd_Xt25);
+ dp->~Xt25();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt25(Test_Xt25, "Xt25", ABISELECT(24,12));
+
+#else // __cplusplus
+
+extern void _ZN4Xt25C1Ev();
+extern void _ZN4Xt25D1Ev();
+Name_Map name_map_Xt25[] = {
+ NSPAIR(_ZN4Xt25C1Ev),
+ NSPAIR(_ZN4Xt25D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t25;
+extern VTBL_ENTRY _ZTI3t25[];
+extern VTBL_ENTRY _ZTV3t25[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t25[];
+static Base_Class bases_Xt25[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(16,8), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t25, ABISELECT(8,4), //bcp->offset
+ 5, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt25[];
+extern void _ZN4Xt253abcEv();
+extern void _ZN3t253barEv();
+static VTBL_ENTRY vtc_Xt25[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt25[0]),
+ (VTBL_ENTRY)&_ZN4Xt253abcEv,
+ 0,
+ ABISELECT(-8,-4),
+ ABISELECT(-8,-4),
+ (VTBL_ENTRY)&(_ZTI4Xt25[0]),
+ (VTBL_ENTRY)&_ZN3t253barEv,
+};
+extern VTBL_ENTRY _ZTV4Xt25[];
+extern void _ZN3t253barEv();
+static VTBL_ENTRY _tg__ZTV3t25__4Xt25[] = {
+ ABISELECT(-8,-4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t25[0]),
+ (VTBL_ENTRY)&_ZN3t253barEv,
+};
+static VTT_ENTRY vtt_Xt25[] = {
+ {&(_ZTV4Xt25[4]), 4,10},
+ {&(_ZTV4Xt25[9]), 9,10},
+ {&(_tg__ZTV3t25__4Xt25[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt25[];
+extern VTBL_ENTRY _ZTV4Xt25[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt25[];
+Class_Descriptor cd_Xt25 = { "Xt25", // class name
+ bases_Xt25, 3,
+ &(vtc_Xt25[0]), // expected_vtbl_contents
+ &(vtt_Xt25[0]), // expected_vtt_contents
+ ABISELECT(24,12), // object size
+ NSPAIRA(_ZTI4Xt25),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt25),10, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt25),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt26 : virtual t26 {
+ virtual void abc(); // _ZN4Xt263abcEv
+ ~Xt26(); // tgen
+ Xt26(); // tgen
+};
+//SIG(1 Xt26) C1{ VBC2{ VBC3{ Fi} VBC4{} v2} v1}
+
+
+void Xt26 ::abc(){vfunc_called(this, "_ZN4Xt263abcEv");}
+Xt26 ::~Xt26(){ note_dtor("Xt26", this);} // tgen
+Xt26 ::Xt26(){ note_ctor("Xt26", this);} // tgen
+
+static void Test_Xt26()
+{
+ extern Class_Descriptor cd_Xt26;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xt26, buf);
+ Xt26 *dp, &lv = *(dp=new (buf) Xt26());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xt26)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt26)");
+ check_base_class_offset(lv, (xx*)(t26*), ABISELECT(8,4), "Xt26");
+ check_base_class_offset(lv, (em_1*)(t26*), 0, "Xt26");
+ check_base_class_offset(lv, (t26*), 0, "Xt26");
+ test_class_info(&lv, &cd_Xt26);
+ dp->~Xt26();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt26(Test_Xt26, "Xt26", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN4Xt26C1Ev();
+extern void _ZN4Xt26D1Ev();
+Name_Map name_map_Xt26[] = {
+ NSPAIR(_ZN4Xt26C1Ev),
+ NSPAIR(_ZN4Xt26D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_em_1;
+extern VTBL_ENTRY _ZTI4em_1[];
+extern Class_Descriptor cd_t26;
+extern VTBL_ENTRY _ZTI3t26[];
+extern VTBL_ENTRY _ZTV3t26[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t26[];
+static Base_Class bases_Xt26[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_em_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t26, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt26[];
+extern void _ZN3t263barEv();
+extern void _ZN4Xt263abcEv();
+static VTBL_ENTRY vtc_Xt26[] = {
+ 0,
+ 0,
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt26[0]),
+ (VTBL_ENTRY)&_ZN3t263barEv,
+ (VTBL_ENTRY)&_ZN4Xt263abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt26[];
+extern void _ZN3t263barEv();
+static VTBL_ENTRY _tg__ZTV3t26__4Xt26[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t26[0]),
+ (VTBL_ENTRY)&_ZN3t263barEv,
+};
+static VTT_ENTRY vtt_Xt26[] = {
+ {&(_ZTV4Xt26[6]), 6,8},
+ {&(_ZTV4Xt26[6]), 6,8},
+ {&(_tg__ZTV3t26__4Xt26[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt26[];
+extern VTBL_ENTRY _ZTV4Xt26[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt26[];
+Class_Descriptor cd_Xt26 = { "Xt26", // class name
+ bases_Xt26, 3,
+ &(vtc_Xt26[0]), // expected_vtbl_contents
+ &(vtt_Xt26[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4Xt26),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt26),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt26),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt27 : virtual t27 {
+ virtual void abc(); // _ZN4Xt273abcEv
+ ~Xt27(); // tgen
+ Xt27(); // tgen
+};
+//SIG(1 Xt27) C1{ VBC2{ BC3{ Fi} BC4{ m Fi:0} v2} v1}
+
+
+void Xt27 ::abc(){vfunc_called(this, "_ZN4Xt273abcEv");}
+Xt27 ::~Xt27(){ note_dtor("Xt27", this);} // tgen
+Xt27 ::Xt27(){ note_ctor("Xt27", this);} // tgen
+
+static void Test_Xt27()
+{
+ extern Class_Descriptor cd_Xt27;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[4];
+ init_test(&cd_Xt27, buf);
+ Xt27 *dp, &lv = *(dp=new (buf) Xt27());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,12), "sizeof(Xt27)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt27)");
+ check_base_class_offset(lv, (xx*)(t27*), ABISELECT(16,8), "Xt27");
+ check_base_class_offset(lv, (ne_1*)(t27*), ABISELECT(8,4), "Xt27");
+ check_base_class_offset(lv, (t27*), ABISELECT(8,4), "Xt27");
+ test_class_info(&lv, &cd_Xt27);
+ dp->~Xt27();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt27(Test_Xt27, "Xt27", ABISELECT(24,12));
+
+#else // __cplusplus
+
+extern void _ZN4Xt27C1Ev();
+extern void _ZN4Xt27D1Ev();
+Name_Map name_map_Xt27[] = {
+ NSPAIR(_ZN4Xt27C1Ev),
+ NSPAIR(_ZN4Xt27D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t27;
+extern VTBL_ENTRY _ZTI3t27[];
+extern VTBL_ENTRY _ZTV3t27[];
+static Base_Class bases_Xt27[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(16,8), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t27, ABISELECT(8,4), //bcp->offset
+ 4, //bcp->virtual_function_table_offset
+ 3, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt27[];
+extern void _ZN4Xt273abcEv();
+extern void _ZN3t273barEv();
+static VTBL_ENTRY vtc_Xt27[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt27[0]),
+ (VTBL_ENTRY)&_ZN4Xt273abcEv,
+ 0,
+ ABISELECT(-8,-4),
+ (VTBL_ENTRY)&(_ZTI4Xt27[0]),
+ (VTBL_ENTRY)&_ZN3t273barEv,
+};
+extern VTBL_ENTRY _ZTV4Xt27[];
+static VTT_ENTRY vtt_Xt27[] = {
+ {&(_ZTV4Xt27[3]), 3,8},
+ {&(_ZTV4Xt27[7]), 7,8},
+};
+extern VTBL_ENTRY _ZTI4Xt27[];
+extern VTBL_ENTRY _ZTV4Xt27[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt27[];
+Class_Descriptor cd_Xt27 = { "Xt27", // class name
+ bases_Xt27, 3,
+ &(vtc_Xt27[0]), // expected_vtbl_contents
+ &(vtt_Xt27[0]), // expected_vtt_contents
+ ABISELECT(24,12), // object size
+ NSPAIRA(_ZTI4Xt27),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt27),8, //virtual function table var
+ 3, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt27),2, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt28 : virtual t28 {
+ virtual void abc(); // _ZN4Xt283abcEv
+ ~Xt28(); // tgen
+ Xt28(); // tgen
+};
+//SIG(1 Xt28) C1{ VBC2{ VBC3{ Fi} BC4{ m Fi:0} v2} v1}
+
+
+void Xt28 ::abc(){vfunc_called(this, "_ZN4Xt283abcEv");}
+Xt28 ::~Xt28(){ note_dtor("Xt28", this);} // tgen
+Xt28 ::Xt28(){ note_ctor("Xt28", this);} // tgen
+
+static void Test_Xt28()
+{
+ extern Class_Descriptor cd_Xt28;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xt28, buf);
+ Xt28 *dp, &lv = *(dp=new (buf) Xt28());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xt28)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt28)");
+ check_base_class_offset(lv, (xx*)(t28*), ABISELECT(8,4), "Xt28");
+ check_base_class_offset(lv, (ne_1*)(t28*), 0, "Xt28");
+ check_base_class_offset(lv, (t28*), 0, "Xt28");
+ test_class_info(&lv, &cd_Xt28);
+ dp->~Xt28();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt28(Test_Xt28, "Xt28", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN4Xt28C1Ev();
+extern void _ZN4Xt28D1Ev();
+Name_Map name_map_Xt28[] = {
+ NSPAIR(_ZN4Xt28C1Ev),
+ NSPAIR(_ZN4Xt28D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t28;
+extern VTBL_ENTRY _ZTI3t28[];
+extern VTBL_ENTRY _ZTV3t28[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t28[];
+static Base_Class bases_Xt28[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_t28, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt28[];
+extern void _ZN3t283barEv();
+extern void _ZN4Xt283abcEv();
+static VTBL_ENTRY vtc_Xt28[] = {
+ 0,
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt28[0]),
+ (VTBL_ENTRY)&_ZN3t283barEv,
+ (VTBL_ENTRY)&_ZN4Xt283abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt28[];
+extern void _ZN3t283barEv();
+static VTBL_ENTRY _tg__ZTV3t28__4Xt28[] = {
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t28[0]),
+ (VTBL_ENTRY)&_ZN3t283barEv,
+};
+static VTT_ENTRY vtt_Xt28[] = {
+ {&(_ZTV4Xt28[5]), 5,7},
+ {&(_ZTV4Xt28[5]), 5,7},
+ {&(_tg__ZTV3t28__4Xt28[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt28[];
+extern VTBL_ENTRY _ZTV4Xt28[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt28[];
+Class_Descriptor cd_Xt28 = { "Xt28", // class name
+ bases_Xt28, 3,
+ &(vtc_Xt28[0]), // expected_vtbl_contents
+ &(vtt_Xt28[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4Xt28),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt28),7, //virtual function table var
+ 5, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt28),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt29 : virtual t29 {
+ virtual void abc(); // _ZN4Xt293abcEv
+ ~Xt29(); // tgen
+ Xt29(); // tgen
+};
+//SIG(1 Xt29) C1{ VBC2{ BC3{ Fi} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt29 ::abc(){vfunc_called(this, "_ZN4Xt293abcEv");}
+Xt29 ::~Xt29(){ note_dtor("Xt29", this);} // tgen
+Xt29 ::Xt29(){ note_ctor("Xt29", this);} // tgen
+
+static void Test_Xt29()
+{
+ extern Class_Descriptor cd_Xt29;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[4];
+ init_test(&cd_Xt29, buf);
+ Xt29 *dp, &lv = *(dp=new (buf) Xt29());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,12), "sizeof(Xt29)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt29)");
+ check_base_class_offset(lv, (xx*)(t29*), ABISELECT(16,8), "Xt29");
+ check_base_class_offset(lv, (ne_1*)(t29*), 0, "Xt29");
+ check_base_class_offset(lv, (t29*), ABISELECT(8,4), "Xt29");
+ test_class_info(&lv, &cd_Xt29);
+ dp->~Xt29();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt29(Test_Xt29, "Xt29", ABISELECT(24,12));
+
+#else // __cplusplus
+
+extern void _ZN4Xt29C1Ev();
+extern void _ZN4Xt29D1Ev();
+Name_Map name_map_Xt29[] = {
+ NSPAIR(_ZN4Xt29C1Ev),
+ NSPAIR(_ZN4Xt29D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t29;
+extern VTBL_ENTRY _ZTI3t29[];
+extern VTBL_ENTRY _ZTV3t29[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t29[];
+static Base_Class bases_Xt29[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(16,8), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 0},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t29, ABISELECT(8,4), //bcp->offset
+ 5, //bcp->virtual_function_table_offset
+ 4, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt29[];
+extern void _ZN4Xt293abcEv();
+extern void _ZN3t293barEv();
+static VTBL_ENTRY vtc_Xt29[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt29[0]),
+ (VTBL_ENTRY)&_ZN4Xt293abcEv,
+ 0,
+ ABISELECT(-8,-4),
+ ABISELECT(-8,-4),
+ (VTBL_ENTRY)&(_ZTI4Xt29[0]),
+ (VTBL_ENTRY)&_ZN3t293barEv,
+};
+extern VTBL_ENTRY _ZTV4Xt29[];
+extern void _ZN3t293barEv();
+static VTBL_ENTRY _tg__ZTV3t29__4Xt29[] = {
+ ABISELECT(-8,-4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t29[0]),
+ (VTBL_ENTRY)&_ZN3t293barEv,
+};
+static VTT_ENTRY vtt_Xt29[] = {
+ {&(_ZTV4Xt29[4]), 4,10},
+ {&(_ZTV4Xt29[9]), 9,10},
+ {&(_tg__ZTV3t29__4Xt29[3]), 3,4},
+};
+extern VTBL_ENTRY _ZTI4Xt29[];
+extern VTBL_ENTRY _ZTV4Xt29[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt29[];
+Class_Descriptor cd_Xt29 = { "Xt29", // class name
+ bases_Xt29, 3,
+ &(vtc_Xt29[0]), // expected_vtbl_contents
+ &(vtt_Xt29[0]), // expected_vtt_contents
+ ABISELECT(24,12), // object size
+ NSPAIRA(_ZTI4Xt29),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt29),10, //virtual function table var
+ 4, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt29),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct Xt30 : virtual t30 {
+ virtual void abc(); // _ZN4Xt303abcEv
+ ~Xt30(); // tgen
+ Xt30(); // tgen
+};
+//SIG(1 Xt30) C1{ VBC2{ VBC3{ Fi} VBC4{ m Fi:0} v2} v1}
+
+
+void Xt30 ::abc(){vfunc_called(this, "_ZN4Xt303abcEv");}
+Xt30 ::~Xt30(){ note_dtor("Xt30", this);} // tgen
+Xt30 ::Xt30(){ note_ctor("Xt30", this);} // tgen
+
+static void Test_Xt30()
+{
+ extern Class_Descriptor cd_Xt30;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[3];
+ init_test(&cd_Xt30, buf);
+ Xt30 *dp, &lv = *(dp=new (buf) Xt30());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(16,8), "sizeof(Xt30)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(Xt30)");
+ check_base_class_offset(lv, (xx*)(t30*), ABISELECT(8,4), "Xt30");
+ check_base_class_offset(lv, (ne_1*)(t30*), 0, "Xt30");
+ check_base_class_offset(lv, (t30*), 0, "Xt30");
+ test_class_info(&lv, &cd_Xt30);
+ dp->~Xt30();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vXt30(Test_Xt30, "Xt30", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN4Xt30C1Ev();
+extern void _ZN4Xt30D1Ev();
+Name_Map name_map_Xt30[] = {
+ NSPAIR(_ZN4Xt30C1Ev),
+ NSPAIR(_ZN4Xt30D1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_xx;
+extern VTBL_ENTRY _ZTI2xx[];
+extern Class_Descriptor cd_ne_1;
+extern VTBL_ENTRY _ZTI4ne_1[];
+extern Class_Descriptor cd_t30;
+extern VTBL_ENTRY _ZTI3t30[];
+extern VTBL_ENTRY _ZTV3t30[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT3t30[];
+static Base_Class bases_Xt30[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_xx, ABISELECT(8,4), //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_ne_1, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ -1, //init_seq
+ 2, //immediately_derived
+ 0, 1},
+ {&cd_t30, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 5, //num_negative_vtable_entries(t, bcp)
+ 2, //bcp->index_in_construction_vtbl_array
+ 3, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 1},
+ {0}};
+extern VTBL_ENTRY _ZTI4Xt30[];
+extern void _ZN3t303barEv();
+extern void _ZN4Xt303abcEv();
+static VTBL_ENTRY vtc_Xt30[] = {
+ 0,
+ 0,
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI4Xt30[0]),
+ (VTBL_ENTRY)&_ZN3t303barEv,
+ (VTBL_ENTRY)&_ZN4Xt303abcEv,
+};
+extern VTBL_ENTRY _ZTV4Xt30[];
+extern void _ZN3t303barEv();
+static VTBL_ENTRY _tg__ZTV3t30__4Xt30[] = {
+ 0,
+ ABISELECT(8,4),
+ 0,
+ (VTBL_ENTRY)&(_ZTI3t30[0]),
+ (VTBL_ENTRY)&_ZN3t303barEv,
+};
+static VTT_ENTRY vtt_Xt30[] = {
+ {&(_ZTV4Xt30[6]), 6,8},
+ {&(_ZTV4Xt30[6]), 6,8},
+ {&(_tg__ZTV3t30__4Xt30[4]), 4,5},
+};
+extern VTBL_ENTRY _ZTI4Xt30[];
+extern VTBL_ENTRY _ZTV4Xt30[];
+extern VTBL_ENTRY * __attribute__((weak))_ZTT4Xt30[];
+Class_Descriptor cd_Xt30 = { "Xt30", // class name
+ bases_Xt30, 3,
+ &(vtc_Xt30[0]), // expected_vtbl_contents
+ &(vtt_Xt30[0]), // expected_vtt_contents
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4Xt30),ABISELECT(40,24), //typeinfo_var
+ NSPAIRA(_ZTV4Xt30),8, //virtual function table var
+ 6, // offset into main vftv pointed to by object[0]
+ NSPAIRA(_ZTT4Xt30),3, //virtual table table var
+ 1, // n_initialized_bases
+ 1, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/T_nearly_empty.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/T_purevirt.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/T_purevirt.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/T_purevirt.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/T_purevirt.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,253 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
+// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
+// RUN: c_compiler -c %s -I "common" -o %t3.o
+// RUN: linker -o %t2%exeext %t1.o %t2.o %t3.o
+// RUN: runtool %t2%exeext | checker "TEST PASSED"
+#include "testsuite.h"
+#ifdef __cplusplus
+
+struct abcd {
+ int p;
+ virtual void foo1()=0; // _ZN4abcd4foo1Ev
+ virtual void foo3()=0; // _ZN4abcd4foo3Ev
+ ~abcd(); // _ZN4abcdD1Ev
+ abcd(); // ABISELECT(_ZN4abcdC2Ev,_ZN4abcdC1Ev)
+};
+//SIG(-1 abcd) C1{ v1 v2 Fi}
+
+
+ abcd ::~abcd(){ note_dtor("abcd", this);}
+ abcd ::abcd(){ note_ctor("abcd", this);}
+
+static void Test_abcd()
+{
+ // abstract class test skipped
+}
+static Arrange_To_Call_Me vabcd(Test_abcd, "abcd", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void ABISELECT(_ZN4abcdC2Ev,_ZN4abcdC1Ev)();
+extern void _ZN4abcdD1Ev();
+Name_Map name_map_abcd[] = {
+ NSPAIR(ABISELECT(_ZN4abcdC2Ev,_ZN4abcdC1Ev)),
+ NSPAIR(_ZN4abcdD1Ev),
+ {0,0}
+};
+extern VTBL_ENTRY _ZTI4abcd[];
+extern void __cxa_pure_virtual();
+extern void __cxa_pure_virtual();
+static VTBL_ENTRY vtc_abcd[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI4abcd[0]),
+ (VTBL_ENTRY)&__cxa_pure_virtual,
+ (VTBL_ENTRY)&__cxa_pure_virtual,
+};
+extern VTBL_ENTRY _ZTI4abcd[];
+VTBL_ENTRY *P__ZTI4abcd = _ZTI4abcd;
+extern VTBL_ENTRY _ZTV4abcd[];
+Class_Descriptor cd_abcd = { "abcd", // class name
+ 0,0,//no base classes
+ &(vtc_abcd[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(16,8), // object size
+ NSPAIRA(_ZTI4abcd),ABISELECT(16,8), //typeinfo_var
+ NSPAIRA(_ZTV4abcd),4, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 0, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct efgh : abcd {
+ int q;
+ efgh(); // ABISELECT(_ZN4efghC2Ev,_ZN4efghC1Ev)
+ virtual void foo2()=0; // _ZN4efgh4foo2Ev
+ virtual void foo3()=0; // _ZN4efgh4foo3Ev
+ ~efgh(); // _ZN4efghD1Ev
+};
+//SIG(-1 efgh) C1{ BC2{ v3 v2 Fi} v1 v2 Fi}
+
+
+ efgh ::efgh(){ note_ctor("efgh", this);}
+ efgh ::~efgh(){ note_dtor("efgh", this);}
+
+static void Test_efgh()
+{
+ // abstract class test skipped
+}
+static Arrange_To_Call_Me vefgh(Test_efgh, "efgh", ABISELECT(16,12));
+
+#else // __cplusplus
+
+extern void ABISELECT(_ZN4efghC2Ev,_ZN4efghC1Ev)();
+extern void _ZN4efghD1Ev();
+Name_Map name_map_efgh[] = {
+ NSPAIR(ABISELECT(_ZN4efghC2Ev,_ZN4efghC1Ev)),
+ NSPAIR(_ZN4efghD1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_abcd;
+extern VTBL_ENTRY _ZTI4abcd[];
+extern VTBL_ENTRY _ZTV4abcd[];
+static Base_Class bases_efgh[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_abcd, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI4efgh[];
+extern void __cxa_pure_virtual();
+extern void __cxa_pure_virtual();
+extern void __cxa_pure_virtual();
+static VTBL_ENTRY vtc_efgh[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI4efgh[0]),
+ (VTBL_ENTRY)&__cxa_pure_virtual,
+ (VTBL_ENTRY)&__cxa_pure_virtual,
+ (VTBL_ENTRY)&__cxa_pure_virtual,
+};
+extern VTBL_ENTRY _ZTI4efgh[];
+VTBL_ENTRY *P__ZTI4efgh = _ZTI4efgh;
+extern VTBL_ENTRY _ZTV4efgh[];
+Class_Descriptor cd_efgh = { "efgh", // class name
+ bases_efgh, 1,
+ &(vtc_efgh[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(16,12), // object size
+ NSPAIRA(_ZTI4efgh),ABISELECT(24,12), //typeinfo_var
+ NSPAIRA(_ZTV4efgh),5, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 1, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct pqrs : efgh {
+ int r;
+ pqrs(); // _ZN4pqrsC1Ev
+ virtual void foo1(); // _ZN4pqrs4foo1Ev
+ virtual void foo2(); // _ZN4pqrs4foo2Ev
+ virtual void foo3(); // _ZN4pqrs4foo3Ev
+ virtual void foo4(); // _ZN4pqrs4foo4Ev
+ ~pqrs(); // _ZN4pqrsD1Ev
+};
+//SIG(1 pqrs) C1{ BC2{ BC3{ v1 v3 Fi} v2 v3 Fi} v1 v2 v3 v4 Fi}
+
+
+ pqrs ::pqrs(){ note_ctor("pqrs", this);}
+void pqrs ::foo1(){vfunc_called(this, "_ZN4pqrs4foo1Ev");}
+void pqrs ::foo2(){vfunc_called(this, "_ZN4pqrs4foo2Ev");}
+void pqrs ::foo3(){vfunc_called(this, "_ZN4pqrs4foo3Ev");}
+void pqrs ::foo4(){vfunc_called(this, "_ZN4pqrs4foo4Ev");}
+ pqrs ::~pqrs(){ note_dtor("pqrs", this);}
+
+static void Test_pqrs()
+{
+ extern Class_Descriptor cd_pqrs;
+ void *lvp;
+ {
+ ABISELECT(double,int) buf[ABISELECT(4,5)];
+ init_test(&cd_pqrs, buf);
+ pqrs *dp, &lv = *(dp=new (buf) pqrs());
+ lvp = (void*)&lv;
+ check2(sizeof(lv), ABISELECT(24,16), "sizeof(pqrs)");
+ check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(pqrs)");
+ check_base_class_offset(lv, (abcd*)(efgh*), 0, "pqrs");
+ check_base_class_offset(lv, (efgh*), 0, "pqrs");
+ check_field_offset(lv, r, ABISELECT(16,12), "pqrs.r");
+ test_class_info(&lv, &cd_pqrs);
+ dp->~pqrs();
+ }
+ Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vpqrs(Test_pqrs, "pqrs", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN4pqrsC1Ev();
+extern void _ZN4pqrsD1Ev();
+Name_Map name_map_pqrs[] = {
+ NSPAIR(_ZN4pqrsC1Ev),
+ NSPAIR(_ZN4pqrsD1Ev),
+ {0,0}
+};
+extern Class_Descriptor cd_abcd;
+extern VTBL_ENTRY _ZTI4abcd[];
+extern VTBL_ENTRY _ZTV4abcd[];
+extern Class_Descriptor cd_efgh;
+extern VTBL_ENTRY _ZTI4efgh[];
+extern VTBL_ENTRY _ZTV4efgh[];
+static Base_Class bases_pqrs[] = {
+ // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+ {&cd_abcd, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 1, //init_seq
+ 1, //immediately_derived
+ 0, 0},
+ {&cd_efgh, 0, //bcp->offset
+ -1, //bcp->virtual_function_table_offset
+ 2, //num_negative_vtable_entries(t, bcp)
+ 0, //bcp->index_in_construction_vtbl_array
+ 0, //bcp->base_subarray_index_in_construction_vtbl_array
+ 2, //init_seq
+ -1, //immediately_derived
+ 1, 0},
+ {0}};
+extern VTBL_ENTRY _ZTI4pqrs[];
+extern void _ZN4pqrs4foo1Ev();
+extern void _ZN4pqrs4foo3Ev();
+extern void _ZN4pqrs4foo2Ev();
+extern void _ZN4pqrs4foo4Ev();
+static VTBL_ENTRY vtc_pqrs[] = {
+ 0,
+ (VTBL_ENTRY)&(_ZTI4pqrs[0]),
+ (VTBL_ENTRY)&_ZN4pqrs4foo1Ev,
+ (VTBL_ENTRY)&_ZN4pqrs4foo3Ev,
+ (VTBL_ENTRY)&_ZN4pqrs4foo2Ev,
+ (VTBL_ENTRY)&_ZN4pqrs4foo4Ev,
+};
+extern VTBL_ENTRY _ZTI4pqrs[];
+extern VTBL_ENTRY _ZTV4pqrs[];
+Class_Descriptor cd_pqrs = { "pqrs", // class name
+ bases_pqrs, 2,
+ &(vtc_pqrs[0]), // expected_vtbl_contents
+ 0, //no vtt
+ ABISELECT(24,16), // object size
+ NSPAIRA(_ZTI4pqrs),ABISELECT(24,12), //typeinfo_var
+ NSPAIRA(_ZTV4pqrs),6, //virtual function table var
+ 2, // offset into main vftv pointed to by object[0]
+ {0,0},0, // virtual table table var
+ 2, // n_initialized_bases
+ 0, // has_virtual_bases
+ 0, // has_class_type_fields
+ 0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/T_purevirt.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/lambda_capture.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/lambda_capture.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/lambda_capture.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/lambda_capture.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,481 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s cxx_11 -o %t1.o
+// RUN: c_compiler -c %s -o %t2.o
+// RUN: linker -o %t%exeext %t1.o %t2.o
+// RUN: runtool %t%exeext | grep "PASSED"
+#define MAXG 4
+
+typedef signed char chtype;
+#ifdef __cplusplus
+extern "C" int printf(const char *, ...);
+int va[MAXG] = {1, 3, 7, 10}, vb[MAXG] = {-2, -4, -7, 100}, ga, gb, nerr;
+extern "C" void barcc(int, ...);
+void foocc() { chtype a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barcc(0,&f);
+ }
+}
+extern "C" void barcs(int, ...);
+void foocs() { chtype a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barcs(0,&f);
+ }
+}
+extern "C" void barci(int, ...);
+void fooci() { chtype a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barci(0,&f);
+ }
+}
+extern "C" void barcl(int, ...);
+void foocl() { chtype a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barcl(0,&f);
+ }
+}
+extern "C" void barcf(int, ...);
+void foocf() { chtype a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barcf(0,&f);
+ }
+}
+extern "C" void barcd(int, ...);
+void foocd() { chtype a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barcd(0,&f);
+ }
+}
+extern "C" void barsc(int, ...);
+void foosc() { short a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barsc(0,&f);
+ }
+}
+extern "C" void barss(int, ...);
+void fooss() { short a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barss(0,&f);
+ }
+}
+extern "C" void barsi(int, ...);
+void foosi() { short a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barsi(0,&f);
+ }
+}
+extern "C" void barsl(int, ...);
+void foosl() { short a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barsl(0,&f);
+ }
+}
+extern "C" void barsf(int, ...);
+void foosf() { short a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barsf(0,&f);
+ }
+}
+extern "C" void barsd(int, ...);
+void foosd() { short a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barsd(0,&f);
+ }
+}
+extern "C" void baric(int, ...);
+void fooic() { int a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; baric(0,&f);
+ }
+}
+extern "C" void baris(int, ...);
+void foois() { int a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; baris(0,&f);
+ }
+}
+extern "C" void barii(int, ...);
+void fooii() { int a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barii(0,&f);
+ }
+}
+extern "C" void baril(int, ...);
+void fooil() { int a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; baril(0,&f);
+ }
+}
+extern "C" void barif(int, ...);
+void fooif() { int a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barif(0,&f);
+ }
+}
+extern "C" void barid(int, ...);
+void fooid() { int a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barid(0,&f);
+ }
+}
+extern "C" void barlc(int, ...);
+void foolc() { long a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barlc(0,&f);
+ }
+}
+extern "C" void barls(int, ...);
+void fools() { long a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barls(0,&f);
+ }
+}
+extern "C" void barli(int, ...);
+void fooli() { long a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barli(0,&f);
+ }
+}
+extern "C" void barll(int, ...);
+void fooll() { long a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barll(0,&f);
+ }
+}
+extern "C" void barlf(int, ...);
+void foolf() { long a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barlf(0,&f);
+ }
+}
+extern "C" void barld(int, ...);
+void foold() { long a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barld(0,&f);
+ }
+}
+extern "C" void barfc(int, ...);
+void foofc() { float a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barfc(0,&f);
+ }
+}
+extern "C" void barfs(int, ...);
+void foofs() { float a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barfs(0,&f);
+ }
+}
+extern "C" void barfi(int, ...);
+void foofi() { float a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barfi(0,&f);
+ }
+}
+extern "C" void barfl(int, ...);
+void foofl() { float a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barfl(0,&f);
+ }
+}
+extern "C" void barff(int, ...);
+void fooff() { float a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barff(0,&f);
+ }
+}
+extern "C" void barfd(int, ...);
+void foofd() { float a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; barfd(0,&f);
+ }
+}
+extern "C" void bardc(int, ...);
+void foodc() { double a ; chtype b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bardc(0,&f);
+ }
+}
+extern "C" void bards(int, ...);
+void foods() { double a ; short b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bards(0,&f);
+ }
+}
+extern "C" void bardi(int, ...);
+void foodi() { double a ; int b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bardi(0,&f);
+ }
+}
+extern "C" void bardl(int, ...);
+void foodl() { double a ; long b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bardl(0,&f);
+ }
+}
+extern "C" void bardf(int, ...);
+void foodf() { double a ; float b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bardf(0,&f);
+ }
+}
+extern "C" void bardd(int, ...);
+void foodd() { double a ; double b ;
+ for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){
+ a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bardd(0,&f);
+ }
+}
+int main() {
+
+ foocc();
+ foocs();
+ fooci();
+ foocl();
+ foocf();
+ foocd();
+ foosc();
+ fooss();
+ foosi();
+ foosl();
+ foosf();
+ foosd();
+ fooic();
+ foois();
+ fooii();
+ fooil();
+ fooif();
+ fooid();
+ foolc();
+ fools();
+ fooli();
+ fooll();
+ foolf();
+ foold();
+ foofc();
+ foofs();
+ foofi();
+ foofl();
+ fooff();
+ foofd();
+ foodc();
+ foods();
+ foodi();
+ foodl();
+ foodf();
+ foodd();
+ printf("%s\n", nerr ? "FAILED":"PASSED");
+}
+#else // __cplusplus
+extern int printf(const char *, ...);
+extern int nerr, va[MAXG], vb[MAXG], ga, gb;
+void checkvals(int a, int b, int l) {
+ if (a != va[ga] || b != vb[gb])
+ printf("ERROR@%d %d!=va[%d]==%d %d!=vb[%d]==%d %d\n", l, a, ga, va[ga], b, gb, vb[gb], nerr++);
+}
+
+void showvals(void *p, int ln)
+{
+ int i;
+ unsigned char *pu = (unsigned char*) p;
+ printf("SHOW@%d: ", ln);
+ for (i=0; i<20; i++) printf("%s%02x", (i&3)?"":" ", pu[i]);
+ printf("\n");
+}
+
+
+// ----- chtype chtype ----
+struct Fcc { chtype a; chtype b; };
+void barcc(int x, struct Fcc *p) { checkvals(p->a, p->b, __LINE__); } //showvals(p, __LINE__);
+
+// ----- chtype short ----
+struct Fcs { chtype a; short b; };
+void barcs(int x, struct Fcs *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- chtype int ----
+struct Fci { chtype a; int b; };
+void barci(int x, struct Fci *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- chtype long ----
+struct Fcl { chtype a; long b; };
+void barcl(int x, struct Fcl *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- chtype float ----
+struct Fcf { chtype a; float b; };
+void barcf(int x, struct Fcf *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- chtype double ----
+struct Fcd { chtype a; double b; };
+void barcd(int x, struct Fcd *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short chtype ----
+struct Fsc { short a; chtype b; };
+void barsc(int x, struct Fsc *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short short ----
+struct Fss { short a; short b; };
+void barss(int x, struct Fss *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short int ----
+struct Fsi { short a; int b; };
+void barsi(int x, struct Fsi *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short long ----
+struct Fsl { short a; long b; };
+void barsl(int x, struct Fsl *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short float ----
+struct Fsf { short a; float b; };
+void barsf(int x, struct Fsf *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- short double ----
+struct Fsd { short a; double b; };
+void barsd(int x, struct Fsd *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int chtype ----
+struct Fic { int a; chtype b; };
+void baric(int x, struct Fic *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int short ----
+struct Fis { int a; short b; };
+void baris(int x, struct Fis *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int int ----
+struct Fii { int a; int b; };
+void barii(int x, struct Fii *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int long ----
+struct Fil { int a; long b; };
+void baril(int x, struct Fil *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int float ----
+struct Fif { int a; float b; };
+void barif(int x, struct Fif *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- int double ----
+struct Fid { int a; double b; };
+void barid(int x, struct Fid *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long chtype ----
+struct Flc { long a; chtype b; };
+void barlc(int x, struct Flc *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long short ----
+struct Fls { long a; short b; };
+void barls(int x, struct Fls *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long int ----
+struct Fli { long a; int b; };
+void barli(int x, struct Fli *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long long ----
+struct Fll { long a; long b; };
+void barll(int x, struct Fll *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long float ----
+struct Flf { long a; float b; };
+void barlf(int x, struct Flf *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- long double ----
+struct Fld { long a; double b; };
+void barld(int x, struct Fld *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float chtype ----
+struct Ffc { float a; chtype b; };
+void barfc(int x, struct Ffc *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float short ----
+struct Ffs { float a; short b; };
+void barfs(int x, struct Ffs *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float int ----
+struct Ffi { float a; int b; };
+void barfi(int x, struct Ffi *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float long ----
+struct Ffl { float a; long b; };
+void barfl(int x, struct Ffl *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float float ----
+struct Fff { float a; float b; };
+void barff(int x, struct Fff *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- float double ----
+struct Ffd { float a; double b; };
+void barfd(int x, struct Ffd *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double chtype ----
+struct Fdc { double a; chtype b; };
+void bardc(int x, struct Fdc *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double short ----
+struct Fds { double a; short b; };
+void bards(int x, struct Fds *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double int ----
+struct Fdi { double a; int b; };
+void bardi(int x, struct Fdi *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double long ----
+struct Fdl { double a; long b; };
+void bardl(int x, struct Fdl *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double float ----
+struct Fdf { double a; float b; };
+void bardf(int x, struct Fdf *p) { checkvals(p->a, p->b, __LINE__); }
+
+// ----- double double ----
+struct Fdd { double a; double b; };
+void bardd(int x, struct Fdd *p) { checkvals(p->a, p->b, __LINE__); }
+#endif
+
+// generated from the following script
+#if 0
+echo "#define MAXG 4"
+echo "#ifdef __cplusplus"
+echo "extern \"C\" int printf(const char *, ...);"
+#echo "template <class T> void TMPL(T fo);"
+echo "int va[MAXG] = {1, 3, 7, 10}, vb[MAXG] = {-2, -4, -7, 100}, ga, gb, nerr;"
+# type1 type2 tag1 tag2
+doit()
+{
+ X=`echo $1 | sed -e 's/\(.\).*/\1/' `
+ Y=`echo $2 | sed -e 's/\(.\).*/\1/' `
+ echo " foo$X$Y();" >> _foocalls
+ echo "extern \"C\" void bar$X$Y(int, ...);"
+ echo "void foo$X$Y() { $1 a ; $2 b ;"
+ echo " for (ga=0; ga<MAXG; ga++) for (gb=0; gb<MAXG; gb++){"
+ echo " a = va[ga]; b = vb[gb]; auto f = [a, b](int x) { return x + a + b; }; bar$X$Y(0,&f);"
+ echo " }"
+ echo "}"
+ echo "" >> _cpart
+ echo "// ----- $1 $2 ----" >> _cpart
+ echo "struct F$X$Y { $1 a; $2 b; };" >> _cpart
+ echo "void bar$X${Y}(int x, struct F$X$Y *p) { checkvals(p->a, p->b, __LINE__); }" >> _cpart
+}
+
+echo > _foocalls
+echo > _cpart
+
+#echo "void foo() {"
+for t1 in chtype short int long float double; do
+for t2 in chtype short int long float double; do
+ doit $t1 $t2
+done
+done
+#echo "}"
+
+echo "int main() {"
+cat _foocalls
+echo " printf(\"%s\\n\", nerr ? \"FAILED\":\"PASSED\");"
+echo "}"
+echo "#else // __cplusplus"
+echo "extern int printf(const char *, ...);"
+echo "extern int nerr, va[MAXG], vb[MAXG], ga, gb;"
+echo "void checkvals(int a, int b, int l) {"
+echo " if (a != va[ga] || b != gb[vb])"
+echo " printf(\"ERROR@%d %d/%d %d/%d %d\\n\", l, a, va[ga], b, gb[vb], nerr++);"
+echo "}"
+cat _cpart
+echo "#endif"
+#endif
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/lambda_capture.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/s2_8a.xpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/s2_8a.xpp?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/s2_8a.xpp (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/s2_8a.xpp Mon Jul 28 16:20:34 2014
@@ -0,0 +1,50 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -S %s -o %t.s
+// RUN: cat %t.s | FileCheck prefixes %s
+// init guard of plain global static var
+// init guard of function local statis var
+// init guard of template instance
+// check that guard var gets reset by exception
+
+
+
+// CHECK-DAG: .size _ZGVZ4addxIfET_S0_S0_E1p, 8
+// CHECK-DAG: .size _ZGVZ3fooiiE1r, 8
+// CHECK-DAG: call{{.*}} __cxa_guard_acquire
+// CHECK-DAG: call{{.*}} __cxa_guard_release
+//
+// the static variables themselves
+// CHECK-DAG: .size _ZZ4addxIfET_S0_S0_E1p,{{ *}}4
+// CHECK-DAG: .size _ZZ3fooiiE1r,{{ *}}4
+// CHECK-DAG: _ZGVN4pairIiE5countE
+//
+inline int foo(int p, int q)
+{
+ static int r = q;
+ return p + r;
+}
+
+int bar(int x)
+{
+ return foo(x, x);
+}
+
+template <class T> T addx(T x, T y) {
+ static T p = y;
+ return x + p;
+}
+
+float bar(float x)
+{
+ return addx(x, x);
+}
+template <class T > struct pair {
+ T l, r;
+ static int count;
+};
+int q=123;
+template <class T> int pair<T>::count = q++;
+int w1 = pair<int>::count;
+int x1 = pair<int>::count;
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/s2_8a.xpp
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/s2_8b.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/s2_8b.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/s2_8b.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/s2_8b.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,95 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s cxx_rtti -o %t1.o
+// RUN: c_compiler -c %s -o %t2.o
+// RUN: linker -o %t%exeext %t1.o %t2.o
+// RUN: runtool %t%exeext | grep "PASSED"
+
+typedef long long gvtype;
+#define GVSET 1
+
+#ifdef __cplusplus
+extern "C" {
+ int printf(const char *, ...);
+ gvtype get_foo_gv();
+ void set_foo_gv(gvtype);
+ gvtype get_addx_gv();
+ void set_addx_gv(gvtype);
+}
+
+inline int foo(int x, int y)
+{
+ static int r = y;
+ return x +r;
+}
+
+int bar(int x)
+{
+ return foo(x, x);
+}
+
+template <class T> T addx(T x, T y) {
+ static T p = y;
+ return x + p;
+}
+
+int bart(int x)
+{
+ return addx(x, x);
+}
+
+int nerr=0, ntests=0, verbose=0;
+
+#define check(a, b) {\
+ long long v=a; \
+ ntests++; \
+ if (v!=b) {\
+ nerr++;\
+ printf("ERROR @%d %lld != %lld\n", __LINE__, v, (long long)b); \
+ } else if (verbose) { \
+ printf("OK @%d %lld\n", __LINE__, v); \
+ }\
+ }
+
+int main()
+{
+ verbose = 1;
+ // initial values are 0
+ check(get_foo_gv(), 0);
+ check(get_addx_gv(), 0);
+
+ // first call should just return double
+ check(bar(3), 6);
+ check(bart(3), 6);
+
+ // now guard vars are 1
+ check(get_foo_gv(), GVSET);
+ check(get_addx_gv(), GVSET);
+
+ // this call should just add 3
+ check(bar(4), 7);
+ check(bart(4), 7);
+
+ // now reset them
+ set_foo_gv(0);
+ set_addx_gv(0);
+
+ // should double agaain
+ check(bar(5), 10);
+ check(bart(5), 10);
+
+ // just add 5 again
+ check(bar(6), 11);
+ check(bart(6), 11);
+ printf("%s. %d tests\n%c", nerr ? "FAILED":"PASSED", ntests, 0x1a);
+
+}
+
+#else
+
+extern gvtype _ZGVZ3fooiiE1r, _ZGVZ4addxIiET_S0_S0_E1p;
+ gvtype get_foo_gv() { return _ZGVZ3fooiiE1r ; }
+ void set_foo_gv(gvtype v) { _ZGVZ3fooiiE1r = 0; }
+ gvtype get_addx_gv() { return _ZGVZ4addxIiET_S0_S0_E1p;}
+ void set_addx_gv(gvtype v) {_ZGVZ4addxIiET_S0_S0_E1p = v;}
+#endif
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/s2_8b.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/s2_9_5.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/s2_9_5.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/s2_9_5.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/s2_9_5.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,232 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c cxx_rtti cxx_exceptions %s -o %t1.o
+// RUN: c_compiler -c %s -o %t2.o
+// RUN: linker -o %t%exeext %t2.o %t1.o
+// RUN: runtool %t%exeext | grep PASSED
+
+//test for section 2.9.4. Test that we generate typeinfo as per the spec
+
+#include "../common/select2.h"
+#ifdef __cplusplus
+#include <typeinfo>
+
+struct abcd { int x; };
+struct efgh : abcd { int y; };
+void bar(){}
+enum enty { e0, e1, e2, e3};
+enum enty enumv;
+abcd *p, q, qa[2];
+efgh efgh_var;
+int abcd::*pdm;
+
+struct str2 {
+ int foo();
+};
+int (str2::*pmf)();
+
+struct str3 : virtual str2 {
+ int f2;
+};
+
+str3 str3_v;
+void foo(int p)
+{
+ if (!p++) throw 3;
+ if (!p++) throw p;
+ if (!p++) throw bar;
+ if (!p++) throw q;
+ if (!p++) throw enumv;
+ if (!p++) throw efgh_var;
+ if (!p++) throw pdm;
+ if (!p++) throw pmf;
+ if (!p++) throw str3_v;
+};
+
+const std::type_info *getti(int x)
+{
+ if (!p++) return &typeid(bar);
+ if (!p++) return &typeid(qa);
+}
+#else
+
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef void * voidp;
+
+typedef struct { // a field spec. specifies an initialized field
+ char type; // one of 'c', 's', 'i', 'l', or 'p' for integers and pointer
+ long long value; // expected value, if one of ints
+ uchar *ptr; // expected pointer value
+ int plus; // if pointer value has an offset as well
+} FSPEC;
+
+extern uchar _ZTSA2_4abcd;
+extern uchar _ZTVN10__cxxabiv117__array_type_infoE;
+extern uchar _ZTI4str2;
+extern uchar _ZTS4str3;
+extern uchar _ZTVN10__cxxabiv121__vmi_class_type_infoE;
+extern uchar _ZTS4str2;
+extern uchar _ZTVN10__cxxabiv117__class_type_infoE;
+extern uchar _ZTSFivE;
+extern uchar _ZTVN10__cxxabiv120__function_type_infoE;
+extern uchar _ZTI4str2;
+extern uchar _ZTIFivE;
+extern uchar _ZTSM4str2FivE;
+extern uchar _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
+extern uchar _ZTI4abcd;
+extern uchar _ZTIi;
+extern uchar _ZTSM4abcdi;
+extern uchar _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
+extern uchar _ZTI4abcd;
+extern uchar _ZTS4efgh;
+extern uchar _ZTVN10__cxxabiv120__si_class_type_infoE;
+extern uchar _ZTS4enty;
+extern uchar _ZTVN10__cxxabiv116__enum_type_infoE;
+extern uchar _ZTS4abcd;
+extern uchar _ZTVN10__cxxabiv117__class_type_infoE;
+extern uchar _ZTSFvvE;
+extern uchar _ZTVN10__cxxabiv120__function_type_infoE;
+extern uchar _ZTIFvvE;
+extern uchar _ZTSPFvvE;
+extern uchar _ZTVN10__cxxabiv119__pointer_type_infoE;
+extern uchar _ZTV4str3;
+
+static int nerr;
+extern int printf(const char *, ...);
+
+FSPEC FS_ZTIPFvvE[] = {
+ {'p', 0, &_ZTVN10__cxxabiv119__pointer_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSPFvvE},
+ {'i', 0},
+ {'p', 0, &_ZTIFvvE},
+};
+
+FSPEC FS_ZTIFvvE[] = {
+ {'p', 0, &_ZTVN10__cxxabiv120__function_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSFvvE},
+};
+
+FSPEC FS_ZTI4abcd[] = {
+ {'p', 0, &_ZTVN10__cxxabiv117__class_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTS4abcd},
+};
+
+FSPEC FS_ZTI4enty[] = {
+ {'p', 0, &_ZTVN10__cxxabiv116__enum_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTS4enty},
+};
+
+FSPEC FS_ZTI4efgh[] = {
+ {'p', 0, &_ZTVN10__cxxabiv120__si_class_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTS4efgh},
+ {'p', 0, &_ZTI4abcd},
+};
+
+FSPEC FS_ZTIM4abcdi[] = {
+ {'p', 0, &_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSM4abcdi},
+ {'i', 0},
+ {'p', 0, &_ZTIi},
+ {'p', 0, &_ZTI4abcd},
+};
+
+FSPEC FS_ZTIM4str2FivE[] = {
+ {'p', 0, &_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSM4str2FivE},
+ {'i', 0},
+ {'p', 0, &_ZTIFivE},
+ {'p', 0, &_ZTI4str2},
+};
+
+FSPEC FS_ZTIFivE[] = {
+ {'p', 0, &_ZTVN10__cxxabiv120__function_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSFivE},
+};
+
+FSPEC FS_ZTI4str2[] = {
+ {'p', 0, &_ZTVN10__cxxabiv117__class_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTS4str2},
+};
+
+FSPEC FS_ZTI4str3[] = {
+ {'p', 0, &_ZTVN10__cxxabiv121__vmi_class_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTS4str3},
+ {'i', 0},
+ {'i', 1},
+ {'p', 0, &_ZTI4str2},
+ {'i', LPSELECT( -6141,-3069)},
+};
+
+FSPEC FS_ZTIA2_4abcd[] = {
+ {'p', 0, &_ZTVN10__cxxabiv117__array_type_infoE, LPSELECT(16,8)},
+ {'p', 0, &_ZTSA2_4abcd},
+};
+
+static int align_tbl[128];
+static void err_f(uchar *addr, int ofst, char *name, int idx, FSPEC *f)
+{
+ printf("ERROR at idx %d of %s ", idx, name);
+ switch (f->type) {
+ case 'c': printf("%x != %x\n", *(uchar*)(addr+ofst), (uchar)f->value); break;
+ case 's': printf("%x != %x\n", *(ushort*)(addr+ofst), (ushort)f->value); break;
+ case 'i': printf("%x != %x\n", *(uint*)(addr+ofst), (uint)f->value); break;
+ case 'l': printf("%lx != %lx\n", *(ulong*)(addr+ofst), (ulong)f->value); break;
+ case 'p': printf("%p != %p\n", *(voidp*)(addr+ofst), (voidp)(f->ptr + f->plus)); break;
+ }
+ nerr ++;
+}
+// check that values at addr are as specified by fspec
+static void
+test_fs(FSPEC *spec, int spec_size, uchar *addr, char *name)
+{
+ int ofst = 0, i;
+ for (i=0; i<spec_size; i++) {
+ FSPEC *f = spec + i;
+ int al = align_tbl[f->type];
+ if (!al) {
+ printf("ERROR: Bad spec %s %d '%c' \n", name, i, f->type);
+ nerr++;
+ continue;
+ }
+ while (ofst % al) ofst++; // align the offset
+ switch (f->type) {
+#define check(type, addr, ofst, name, idx, f) \
+ if ((*(type*)(addr+ofst)) != ((type)(f->value))) err_f(addr, ofst, name, i, f);
+ case 'c': check(uchar, addr, ofst, name, i, f); break;
+ case 's': check(ushort, addr, ofst, name, i, f); break;
+ case 'i': check(uint, addr, ofst, name, i, f); break;
+ case 'l': check(ulong, addr, ofst, name, i, f); break;
+ case 'p': if ((*(voidp*)(addr+ofst)) != (voidp)(f->ptr+f->plus))
+ err_f(addr, ofst, name, i, f);
+
+ }
+ ofst += al; // al and size are always same
+ }
+}
+
+#define TESTIT(n) extern uchar n; test_fs(FS##n, sizeof(FS##n)/sizeof(FSPEC), &n, #n)
+
+int main() {
+ align_tbl['c'] = 1;
+ align_tbl['s'] = 2;
+ align_tbl['i'] = 4;
+ align_tbl['l'] = LPSELECT(8,4);
+ align_tbl['p'] = LPSELECT(8,4);
+ TESTIT(_ZTIPFvvE);
+ TESTIT(_ZTIFvvE);
+ TESTIT(_ZTI4abcd);
+ TESTIT(_ZTI4enty);
+ TESTIT(_ZTI4efgh);
+ TESTIT(_ZTIM4abcdi);
+ TESTIT(_ZTIM4str2FivE);
+ TESTIT(_ZTIFivE);
+ TESTIT(_ZTI4str2);
+ TESTIT(_ZTI4str3);
+ TESTIT(_ZTIA2_4abcd);
+ printf("%s\n", nerr ? "FAILED": "PASSED");
+ return nerr ? 1 : 0;
+}
+#endif
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/s2_9_5.x
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/s3_1.xpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/s3_1.xpp?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/s3_1.xpp (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/s3_1.xpp Mon Jul 28 16:20:34 2014
@@ -0,0 +1,74 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -S %s -o %t.s
+// RUN: cat %t.s | FileCheck prefixes %s
+
+// CHECK-DAG: _ZN4pqrsD1Ev
+// CHECK-DAG: _ZN4abcdC1ERKS_
+// CHECK-NOT: _ZN4efghC1ERKS_
+
+// CHECK-DAG: _ZN5pqrsRD1Ev
+// CHECK-NOT: _ZN5abcdRC1ERKS_
+// CHECK-NOT: _ZN5efghRC1ERKS_
+
+// CHECK-DAG: _ZN5abcdSC1ERKS_
+// CHECK-NOT: _ZN5efghSC1ERKS_
+// CHECK-NOT: _ZN5pqrsSC1ERKS_
+
+struct pqrs { int a; int b; ~pqrs();}; // has non trivial dtor
+struct abcd { int a; int b; abcd(const abcd&); }; // has non trivial copy ctor
+struct efgh { int a; int b; };
+void foo(abcd x);
+void foo(efgh x);
+void foo(pqrs x);
+extern abcd v_abcd;
+extern efgh v_efgh;
+extern pqrs v_pqrs;
+
+void bar()
+{
+ // class with no copy ctor or non trivial dtor: 3.1.1: no copy ctor call
+ foo(v_abcd);
+
+ // class with non-trivial copy-ctor. call it
+ foo(v_efgh);
+
+ // class with non-trivial dtor
+ foo(v_pqrs);
+}
+
+struct pqrsR { int a; int b; ~pqrsR();}; // has non trivial dtor
+struct abcdR { int a; int b; abcdR(const abcdR&); }; // has non trivial copy ctor
+struct efghR { int a; int b; };
+abcdR foo_abcd();
+efghR foo_efgh();
+pqrsR foo_pqrs();
+extern abcdR r_abcd;
+extern efghR r_efgh;
+extern pqrsR r_pqrs;
+
+// check the caller action at return
+void barx()
+{
+ // class with no copy ctor or non trivial dtor: 3.1.1: no copy ctor call
+ r_abcd = foo_abcd();
+
+ // class with non-trivial copy-ctor. call it
+ r_efgh = foo_efgh();
+
+ // class with non-trivial dtor
+ r_pqrs = foo_pqrs();
+}
+
+
+// check the callee action for return
+struct pqrsS { int a; int b; ~pqrsS();}; // has non trivial dtor
+struct abcdS { int a; int b; abcdS(const abcdS&); }; // has non trivial copy ctor
+struct efghS { int a; int b; };
+extern abcdS s_abcd;
+extern efghS s_efgh;
+extern pqrsS s_pqrs;
+abcdS bar_abcd(){ return s_abcd;}
+efghS bar_efgh(){ return s_efgh;}
+pqrsS bar_pqrs(){ return s_pqrs;}
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/s3_1.xpp
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/sg_2.xpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/sg_2.xpp?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/sg_2.xpp (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/sg_2.xpp Mon Jul 28 16:20:34 2014
@@ -0,0 +1,91 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s cxx_rtti -o %t1.o
+// RUN: linker -o %t%exeext %t1.o
+// RUN: runtool %t%exeext | grep "PASSED"
+
+
+
+
+// check that __cxa_guard_acuire, __cxa_gaurd_release and __cxa_guard_abort are doing
+// their jobs
+//
+//
+
+extern "C" {
+ int printf(const char *, ...);
+ int __cxa_guard_acquire(long long *);
+ void __cxa_guard_release(long long *);
+ void __cxa_guard_abort(long long *);
+}
+
+#if 0
+
+extern "C" int __cxa_guard_acquire ( __int64_t *guard_object );
+
+ Returns 1 if the initialization is not yet complete; 0 otherwise. This function is called before initialization takes place. If this function returns 1, either __cxa_guard_release or __cxa_guard_abort must be called with the same argument. The first byte of the guard_object is not modified by this function.
+
+ A thread-safe implementation will probably guard access to the first byte of the guard_object with a mutex. If this function returns 1, the mutex will have been acquired by the calling thread.
+
+extern "C" void __cxa_guard_release ( __int64_t *guard_object );
+
+ Sets the first byte of the guard object to a non-zero value. This function is called after initialization is complete.
+
+ A thread-safe implementation will release the mutex acquired by __cxa_guard_acquire after setting the first byte of the guard object.
+
+extern "C" void __cxa_guard_abort ( __int64_t *guard_object );
+
+ This function is called if the initialization terminates by throwing an exception.
+
+ A thread-safe implementation will release the mutex acquired by __cxa_guard_acquire.
+
+<b>NOTE</b>:
+
+#endif
+
+static int nerr;
+#define ERR(a) {printf("@%d %s\n", __LINE__, a); nerr++;}
+
+int main()
+{
+ long long gv = 0, gv2 = 0;
+ unsigned char *gp = (unsigned char *) &gv;
+ // simple case aquire should succeed and return 1.
+
+ if (!__cxa_guard_acquire(&gv)) ERR("FAILED TO ACQUIRE");
+
+ if (gp[0]) ERR("Lowest byte of the Guard var set prematurely");
+ // other buytes could be set at this point
+
+ // now release
+ __cxa_guard_release(&gv);
+ if (!gv) ERR("Guard var not set");
+ if (!gp[0]) ERR("first byte 0");
+ if (gp[1]||gp[2]||gp[3]||gp[4]||gp[5]||gp[6]||gp[7]) ERR("Other bytes set");
+
+ long long gs = gv;
+
+ // A second call should fail
+ if (__cxa_guard_acquire(&gv)) ERR("Acquired again")
+
+ // should not change gv
+ if (gs != gv) ERR("gv changed by a failing call");
+
+ // now test abort
+ gp = (unsigned char *)&gv2;
+ if (!__cxa_guard_acquire(&gv2)) ERR("FAILED TO ACQUIRE gv2");
+ if (gp[0]) ERR("Lowest byte of the Guard var set prematurely");
+
+ __cxa_guard_abort(&gv2);
+ if (gv2) ERR("Guard var set by abort ");
+ if (!__cxa_guard_acquire(&gv2)) ERR("FAILED TO ACQUIRE gv2");
+ if (gp[0]) ERR("Lowest byte of the Guard var set prematurely");
+
+ // now release
+ __cxa_guard_release(&gv2);
+ if (!gv2) ERR("Guard var not set");
+ if (!gp[0]) ERR("first byte 0");
+ if (gp[1]||gp[2]||gp[3]||gp[4]||gp[5]||gp[6]||gp[7]) ERR("Other bytes set");
+ printf("%s\n", nerr ? "FAILED" : "PASSED");
+ return nerr;
+}
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/sg_2.xpp
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/vc1.xpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/vc1.xpp?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/vc1.xpp (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/vc1.xpp Mon Jul 28 16:20:34 2014
@@ -0,0 +1,72 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s cxx_rtti -o %t1.o
+// RUN: linker -o %t%exeext %t1.o
+// RUN: runtool %t%exeext | grep "PASSED"
+
+#include "../common/select2.h"
+
+// test case from ABI testsuite
+/*
+Test case for sharing virtual bases.
+In Derived_too,
+the primary base class is NewShareme,
+The bases Base and Shareme share vptr's
+with Derived and are allocated at the
+same offset as Derived.
+Should get:
+60% a.out
+(long)(NewShareme *)dd - (long)dd = 0
+(long)(Derived *)dd - (long)dd = 8
+(long)(Base *)dd - (long)dd = 8
+(long)(Shareme *)dd - (long)dd = 8
+*/
+
+struct Shareme {
+ virtual void foo();
+};
+struct Base : virtual Shareme {
+ virtual void bar();
+};
+struct Derived : virtual Base {
+ virtual void baz();
+};
+
+struct NewShareme {
+ virtual void foo();
+};
+
+struct Derived_too : virtual NewShareme, virtual Derived {
+ virtual void bar();
+};
+
+void Shareme::foo() { }
+void Base::bar() { }
+void Derived::baz() { }
+void NewShareme::foo() { }
+void Derived_too::bar() { }
+
+
+extern "C" int printf(const char *,...);
+//#define EVAL(EXPR) printf( #EXPR " = %d\n", (int) (EXPR) );
+static int nerr;
+static void evalf(int expected, const char *str, int val)
+{
+ expected /= LPSELECT(1,2); //representing the size difference of pointers
+ if (expected != val) {
+ printf("ERROR: expected %d. ", expected);
+ nerr++;
+ }
+ printf(str, val);
+}
+#define EVAL(v,EXPR) evalf(v, #EXPR " = %d\n", (int) (EXPR) );
+int main()
+{
+ Derived_too *dd = new Derived_too;
+ EVAL(0, (long)(NewShareme *)dd - (long)dd);
+ EVAL(8, (long)(Derived *)dd - (long)dd);
+ EVAL(8, (long)(Base *)dd - (long)dd);
+ EVAL(8, (long)(Shareme *)dd - (long)dd);
+ printf("%s\n", nerr ? "FAILED" : "PASSED");
+}
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/vc1.xpp
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/misc/vc2.xpp
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/misc/vc2.xpp?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/misc/vc2.xpp (added)
+++ test-suite/trunk/ABI-Testsuite/test/misc/vc2.xpp Mon Jul 28 16:20:34 2014
@@ -0,0 +1,72 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s cxx_rtti -o %t1.o
+// RUN: linker -o %t%exeext %t1.o
+// RUN: runtool %t%exeext | grep "PASSED"
+
+// test case from ABI testsuite
+#include "../common/select2.h"
+/*
+Test case for sharing virtual bases.
+In Most_Derived,
+the primary base class is Nonvirt1,
+Nonvirt2 and Nonvirt3 share vptrs with
+virtual base Shared_Virt. Shared_Virt
+should be at the same offset as Nonvirt2.
+Should get:
+67% a.out
+(long)(Nonvirt1 *)dd - (long)dd = 0
+(long)(Nonvirt2 *)dd - (long)dd = 8
+(long)(Nonvirt3 *)dd - (long)dd = 16
+(long)(Shared_Virt *)dd - (long)dd = 8
+*/
+
+struct Shared_Virt {
+ virtual void foo();
+};
+struct Nonvirt2 : virtual Shared_Virt {
+ virtual void bar();
+};
+struct Nonvirt3 : virtual Shared_Virt {
+ virtual void baz();
+};
+struct Nonvirt1 {
+ virtual void foo();
+};
+
+struct Most_Derived : Nonvirt1, Nonvirt2, Nonvirt3 {
+ virtual void bar();
+};
+
+void Shared_Virt::foo() { }
+void Nonvirt2::bar() { }
+void Nonvirt3::baz() { }
+void Nonvirt1::foo() { }
+void Most_Derived::bar() { }
+
+extern "C" int printf(const char *,...);
+//#define EVAL(EXPR) printf( #EXPR " = %d\n", (EXPR) );
+
+static int nerr;
+static void evalf(int expected, const char *str, int val)
+{
+ expected /= LPSELECT(1,2); //representing the size difference of pointers
+ if (expected != val) {
+ printf("ERROR: expected %d. ", expected);
+ nerr++;
+ }
+ printf(str, val);
+}
+#define EVAL(v,EXPR) evalf(v, #EXPR " = %d\n", (int) (EXPR) );
+
+int main()
+{
+ Most_Derived *dd = new Most_Derived;
+ EVAL(0, (long)(Nonvirt1 *)dd - (long)dd);
+ EVAL(8, (long)(Nonvirt2 *)dd - (long)dd);
+ EVAL(16, (long)(Nonvirt3 *)dd - (long)dd);
+ EVAL(8, (long)(Shared_Virt *)dd - (long)dd);
+ printf("%s\n", nerr ? "FAILED" : "PASSED");
+
+}
+
Propchange: test-suite/trunk/ABI-Testsuite/test/misc/vc2.xpp
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/ABI-Testsuite/test/s2_3/ptrmem.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/s2_3/ptrmem.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/s2_3/ptrmem.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/s2_3/ptrmem.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,650 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler -c %s -I "common" cxx_rtti -o %t1.o
+// RUN: c_compiler -c %s -o %t2.o -I "common"
+// RUN: c_compiler -c -o %t3.o -I "common" "common/testsuite.c"
+// RUN: linker -o %t%exeext %t1.o %t2.o %t3.o
+// RUN: runtool %t%exeext | grep "TEST PASSED"
+#include "testsuite.h"
+#ifdef __cplusplus
+extern "C" int printf(const char *, ...);
+
+
+#define PTRSIZE sizeof(int*)
+#define PMFSIZE (2*PTRSIZE)
+
+
+struct abcd {
+
+ int f1();
+ int f3();
+ int f5();
+ int f7();
+ virtual int g1();
+ virtual int g3();
+ virtual int g5();
+ virtual int g7();
+ int a;
+};
+int abcd::f1(){return __LINE__;}
+int abcd::f3(){return __LINE__;}
+int abcd::f5(){return __LINE__;}
+int abcd::f7(){return __LINE__;}
+int abcd::g1(){return __LINE__;}
+int abcd::g3(){return __LINE__;}
+int abcd::g5(){return __LINE__;}
+int abcd::g7(){return __LINE__;}
+
+
+struct efgh {
+ int f2();
+ int f3();
+ int f6();
+ int f7();
+ virtual int g2();
+ virtual int g3();
+ virtual int g6();
+ virtual int g7();
+ int *e, f;
+};
+int efgh::f2() { return __LINE__;}
+int efgh::f3() { return __LINE__;}
+int efgh::f6() { return __LINE__;}
+int efgh::f7() { return __LINE__;}
+int efgh::g2() { return __LINE__;}
+int efgh::g3() { return __LINE__;}
+int efgh::g6() { return __LINE__;}
+int efgh::g7() { return __LINE__;}
+
+struct pqrs : abcd, efgh {
+ int *x, p;
+ int f4();
+ int f5();
+ int f6();
+ int f7();
+ virtual int g4();
+ virtual int g5();
+ virtual int g6();
+ virtual int g7();
+};
+int pqrs::f4() { return __LINE__; }
+int pqrs::f5() { return __LINE__; }
+int pqrs::f6() { return __LINE__; }
+int pqrs::f7() { return __LINE__; }
+int pqrs::g4() { return __LINE__; }
+int pqrs::g5() { return __LINE__; }
+int pqrs::g6() { return __LINE__; }
+int pqrs::g7() { return __LINE__; }
+
+struct lmno : virtual abcd, virtual efgh {
+ int f4();
+ int f5();
+ int f6();
+ int f7();
+ virtual int g4();
+ virtual int g5();
+ virtual int g6();
+ virtual int g7();
+ double d;
+ int p;
+ char x;
+ int r;
+};
+int lmno::f4() { return __LINE__; }
+int lmno::f5() { return __LINE__; }
+int lmno::f6() { return __LINE__; }
+int lmno::f7() { return __LINE__; }
+int lmno::g4() { return __LINE__; }
+int lmno::g5() { return __LINE__; }
+int lmno::g6() { return __LINE__; }
+int lmno::g7() { return __LINE__; }
+
+struct novtbl {
+ int a;
+ char b;
+ int *p;
+ int q;
+};
+
+int abcd::*abcd_null = 0;
+int abcd::*abcd_a = &abcd::a;
+int *efgh::*efgh_e = &efgh::e;
+int efgh::*efgh_f = &efgh::f;
+int *pqrs::*pqrs_x = &pqrs::x;
+int pqrs::*pqrs_p = &pqrs::p;
+
+double lmno::*lmno_d = &lmno::d;
+int lmno::*lmno_p = &lmno::p;
+char lmno::*lmno_x = &lmno::x;
+int lmno::*lmno_r = &lmno::r;
+
+int novtbl::*novtbl_a = &novtbl::a;
+char novtbl::*novtbl_b = &novtbl::b;
+int novtbl::*novtbl_q = &novtbl::q;
+int *novtbl::*novtbl_p = &novtbl::p;
+int *novtbl::*novtbl_null = 0;
+
+static void reset_pdm()
+{
+ abcd_null = 0;
+ abcd_a = &abcd::a;
+ efgh_e = &efgh::e;
+ efgh_f = &efgh::f;
+ pqrs_x = &pqrs::x;
+ pqrs_p = &pqrs::p;
+ lmno_d = &lmno::d;
+ lmno_p = &lmno::p;
+ lmno_x = &lmno::x;
+ lmno_r = &lmno::r;
+ novtbl_a = &novtbl::a;
+ novtbl_b = &novtbl::b;
+ novtbl_q = &novtbl::q;
+ novtbl_p = &novtbl::p;
+ novtbl_null = 0;
+}
+
+static void
+check_sz(size_t a, size_t b, const char *varname, const char *filename, int linenum)
+{
+ if (a != b) {
+ printf("sizeof(%s) is %d. Should be %d. @%s:%d\n", varname, (int)a, (int)b, filename, linenum);
+ n_errors++;
+ } else if (verbose) {
+ printf("sizeof(%s) is %d. @%s:%d\n", varname, (int)a, filename, linenum);
+ }
+}
+
+static void
+check_pdm_val(ptrdiff_t a, ptrdiff_t b, const char *varname, const char *filename, int linenum)
+{
+ if (a != b) {
+ printf("%s is %d. Should be %d. @%s:%d\n", varname, (int)a, (int)b, filename, linenum);
+ n_errors++;
+ } else if (verbose) {
+ printf("%s is %d. @%s:%d\n", varname, (int)a, filename, linenum);
+ }
+ n_tests++;
+}
+
+
+#define TEST_PDM(var,val) \
+ check_sz(sizeof(var),PTRSIZE, #var, __FILE__, __LINE__);\
+ check_pdm_val(*(ptrdiff_t*)&var, val, #var, __FILE__, __LINE__);
+
+struct pmfty { // a struct representing ptr-to-member function1
+ union {
+ int (*ptr)();
+ ptrdiff_t ofst;
+ } ;
+ ptrdiff_t adj;
+};
+
+extern "C" ptrdiff_t find_func_addr(const char *);
+extern "C" char* find_func_name(ptrdiff_t);
+static const char *lfn;
+static void
+check_pmf_val(pmfty *a, ptrdiff_t v1, ptrdiff_t v2, const char *varname, const char *filename, int linenum)
+{
+ if (a->ofst != v1 || a->adj != v2) {
+ printf("%s is (%s/%d/0x%x,%d). Should be (%s/%d/0x%x,%d). @%s:%d\n", varname,
+ lfn[0]?find_func_name(a->ofst):lfn,
+ (int)(a->ofst),(int)(a->ofst), (int)(a->adj),
+ lfn,(int)v1, (int)v1, (int)v2,
+ filename, linenum);
+ n_errors++;
+ } else if (verbose) {
+ printf("%s is (%d,%d). @%s:%d\n", varname, (int)v1, (int)v2, filename, linenum);
+ }
+ n_tests++;
+}
+
+
+void test_pdm_x()
+{
+ TEST_PDM(abcd_a, LPSELECT(8,4));
+ TEST_PDM(abcd_null , -1);
+ TEST_PDM(efgh_e , LPSELECT(8,4));
+ TEST_PDM(efgh_f , LPSELECT(16,8));
+ TEST_PDM(pqrs_x , LPSELECT(40,20));
+ TEST_PDM(pqrs_p , LPSELECT(48,24));
+
+ TEST_PDM(lmno_d , LPSELECT(8,4));
+ TEST_PDM(lmno_p , LPSELECT(16,12));
+ TEST_PDM(lmno_x , LPSELECT(20,16));
+ TEST_PDM(lmno_r , LPSELECT(24,20));
+
+ TEST_PDM(novtbl_a , 0);
+ TEST_PDM(novtbl_b , 4);
+ TEST_PDM(novtbl_q , LPSELECT(16,12));
+ TEST_PDM(novtbl_p , 8);
+ TEST_PDM(novtbl_null , -1);
+}
+
+#if 0
+#define N0 abcd
+#define N1 efgh
+#define N2 pqrs
+#define N3 lmno
+#define M0 f1
+#define M1 f2
+#define M2 f3
+#define M3 f4
+#define M4 g1
+#define M5 g2
+#define M6 g3
+#define M7 g4
+<for i in 0..3>
+<for j in 0..3>
+<for k in 0..7>
+int (N<id i>::*N<id i> _ N<id j> _ M<id k>)() = &N<id i>::M<id k>;
+</for>
+</for>
+</for>
+#endif
+
+
+int (abcd::*abcd_abcd_f1)() = &abcd::f1;
+int (abcd::*abcd_abcd_f3)() = &abcd::f3;
+int (abcd::*abcd_abcd_g1)() = &abcd::g1;
+int (abcd::*abcd_abcd_g3)() = &abcd::g3;
+int (abcd::*abcd_efgh_f1)() = &abcd::f1;
+int (abcd::*abcd_efgh_f3)() = &abcd::f3;
+int (abcd::*abcd_efgh_g1)() = &abcd::g1;
+int (abcd::*abcd_efgh_g3)() = &abcd::g3;
+int (abcd::*abcd_pqrs_f1)() = &abcd::f1;
+int (abcd::*abcd_pqrs_f3)() = &abcd::f3;
+int (abcd::*abcd_pqrs_g1)() = &abcd::g1;
+int (abcd::*abcd_pqrs_g3)() = &abcd::g3;
+int (abcd::*abcd_lmno_f1)() = &abcd::f1;
+int (abcd::*abcd_lmno_f3)() = &abcd::f3;
+int (abcd::*abcd_lmno_g1)() = &abcd::g1;
+int (abcd::*abcd_lmno_g3)() = &abcd::g3;
+int (efgh::*efgh_abcd_f2)() = &efgh::f2;
+int (efgh::*efgh_abcd_f3)() = &efgh::f3;
+int (efgh::*efgh_abcd_g2)() = &efgh::g2;
+int (efgh::*efgh_abcd_g3)() = &efgh::g3;
+int (efgh::*efgh_efgh_f2)() = &efgh::f2;
+int (efgh::*efgh_efgh_f3)() = &efgh::f3;
+int (efgh::*efgh_efgh_g2)() = &efgh::g2;
+int (efgh::*efgh_efgh_g3)() = &efgh::g3;
+int (efgh::*efgh_pqrs_f2)() = &efgh::f2;
+int (efgh::*efgh_pqrs_f3)() = &efgh::f3;
+int (efgh::*efgh_pqrs_g2)() = &efgh::g2;
+int (efgh::*efgh_pqrs_g3)() = &efgh::g3;
+int (efgh::*efgh_lmno_f2)() = &efgh::f2;
+int (efgh::*efgh_lmno_f3)() = &efgh::f3;
+int (efgh::*efgh_lmno_g2)() = &efgh::g2;
+int (efgh::*efgh_lmno_g3)() = &efgh::g3;
+int (pqrs::*pqrs_abcd_f1)() = &pqrs::f1;
+int (pqrs::*pqrs_abcd_f2)() = &pqrs::f2;
+int (pqrs::*pqrs_abcd_f4)() = &pqrs::f4;
+int (pqrs::*pqrs_abcd_g1)() = &pqrs::g1;
+int (pqrs::*pqrs_abcd_g2)() = &pqrs::g2;
+int (pqrs::*pqrs_abcd_g4)() = &pqrs::g4;
+int (pqrs::*pqrs_efgh_f1)() = &pqrs::f1;
+int (pqrs::*pqrs_efgh_f2)() = &pqrs::f2;
+int (pqrs::*pqrs_efgh_f4)() = &pqrs::f4;
+int (pqrs::*pqrs_efgh_g1)() = &pqrs::g1;
+int (pqrs::*pqrs_efgh_g2)() = &pqrs::g2;
+int (pqrs::*pqrs_efgh_g4)() = &pqrs::g4;
+int (pqrs::*pqrs_pqrs_f1)() = &pqrs::f1;
+int (pqrs::*pqrs_pqrs_f2)() = &pqrs::f2;
+int (pqrs::*pqrs_pqrs_f4)() = &pqrs::f4;
+int (pqrs::*pqrs_pqrs_g1)() = &pqrs::g1;
+int (pqrs::*pqrs_pqrs_g2)() = &pqrs::g2;
+int (pqrs::*pqrs_pqrs_g4)() = &pqrs::g4;
+int (pqrs::*pqrs_lmno_f1)() = &pqrs::f1;
+int (pqrs::*pqrs_lmno_f2)() = &pqrs::f2;
+int (pqrs::*pqrs_lmno_f4)() = &pqrs::f4;
+int (pqrs::*pqrs_lmno_g1)() = &pqrs::g1;
+int (pqrs::*pqrs_lmno_g2)() = &pqrs::g2;
+int (pqrs::*pqrs_lmno_g4)() = &pqrs::g4;
+int (lmno::*lmno_abcd_f4)() = &lmno::f4;
+int (lmno::*lmno_abcd_g4)() = &lmno::g4;
+int (lmno::*lmno_efgh_f4)() = &lmno::f4;
+int (lmno::*lmno_efgh_g4)() = &lmno::g4;
+int (lmno::*lmno_pqrs_f4)() = &lmno::f4;
+int (lmno::*lmno_pqrs_g4)() = &lmno::g4;
+int (lmno::*lmno_lmno_f4)() = &lmno::f4;
+int (lmno::*lmno_lmno_g4)() = &lmno::g4;
+int (lmno::*lmno_lmno_null)() = 0;
+
+static void reset_pmf()
+{
+ abcd_abcd_f1 = &abcd::f1;
+ abcd_abcd_f3 = &abcd::f3;
+ abcd_abcd_g1 = &abcd::g1;
+ abcd_abcd_g3 = &abcd::g3;
+ abcd_efgh_f1 = &abcd::f1;
+ abcd_efgh_f3 = &abcd::f3;
+ abcd_efgh_g1 = &abcd::g1;
+ abcd_efgh_g3 = &abcd::g3;
+ abcd_pqrs_f1 = &abcd::f1;
+ abcd_pqrs_f3 = &abcd::f3;
+ abcd_pqrs_g1 = &abcd::g1;
+ abcd_pqrs_g3 = &abcd::g3;
+ abcd_lmno_f1 = &abcd::f1;
+ abcd_lmno_f3 = &abcd::f3;
+ abcd_lmno_g1 = &abcd::g1;
+ abcd_lmno_g3 = &abcd::g3;
+ efgh_abcd_f2 = &efgh::f2;
+ efgh_abcd_f3 = &efgh::f3;
+ efgh_abcd_g2 = &efgh::g2;
+ efgh_abcd_g3 = &efgh::g3;
+ efgh_efgh_f2 = &efgh::f2;
+ efgh_efgh_f3 = &efgh::f3;
+ efgh_efgh_g2 = &efgh::g2;
+ efgh_efgh_g3 = &efgh::g3;
+ efgh_pqrs_f2 = &efgh::f2;
+ efgh_pqrs_f3 = &efgh::f3;
+ efgh_pqrs_g2 = &efgh::g2;
+ efgh_pqrs_g3 = &efgh::g3;
+ efgh_lmno_f2 = &efgh::f2;
+ efgh_lmno_f3 = &efgh::f3;
+ efgh_lmno_g2 = &efgh::g2;
+ efgh_lmno_g3 = &efgh::g3;
+ pqrs_abcd_f1 = &pqrs::f1;
+ pqrs_abcd_f2 = &pqrs::f2;
+ pqrs_abcd_f4 = &pqrs::f4;
+ pqrs_abcd_g1 = &pqrs::g1;
+ pqrs_abcd_g2 = &pqrs::g2;
+ pqrs_abcd_g4 = &pqrs::g4;
+ pqrs_efgh_f1 = &pqrs::f1;
+ pqrs_efgh_f2 = &pqrs::f2;
+ pqrs_efgh_f4 = &pqrs::f4;
+ pqrs_efgh_g1 = &pqrs::g1;
+ pqrs_efgh_g2 = &pqrs::g2;
+ pqrs_efgh_g4 = &pqrs::g4;
+ pqrs_pqrs_f1 = &pqrs::f1;
+ pqrs_pqrs_f2 = &pqrs::f2;
+ pqrs_pqrs_f4 = &pqrs::f4;
+ pqrs_pqrs_g1 = &pqrs::g1;
+ pqrs_pqrs_g2 = &pqrs::g2;
+ pqrs_pqrs_g4 = &pqrs::g4;
+ pqrs_lmno_f1 = &pqrs::f1;
+ pqrs_lmno_f2 = &pqrs::f2;
+ pqrs_lmno_f4 = &pqrs::f4;
+ pqrs_lmno_g1 = &pqrs::g1;
+ pqrs_lmno_g2 = &pqrs::g2;
+ pqrs_lmno_g4 = &pqrs::g4;
+ lmno_abcd_f4 = &lmno::f4;
+ lmno_abcd_g4 = &lmno::g4;
+ lmno_efgh_f4 = &lmno::f4;
+ lmno_efgh_g4 = &lmno::g4;
+ lmno_pqrs_f4 = &lmno::f4;
+ lmno_pqrs_g4 = &lmno::g4;
+ lmno_lmno_f4 = &lmno::f4;
+ lmno_lmno_g4 = &lmno::g4;
+ lmno_lmno_null = 0;
+}
+#define TEST_PMF(var,v1, v2) \
+ lfn="";check_sz(sizeof(var),PMFSIZE, #var, __FILE__, __LINE__);\
+ check_pmf_val((pmfty*)&var, v1, v2, #var, __FILE__, __LINE__);
+
+// PMF (ptr to member function) layout: Plain G++ abi
+// ptr: func_ptr for non-virtual, or 1+vtbl_ofst for virtual. bit 1 indicates virtual
+// adj: adjustment to base class, when the declared class of function is at an offset
+// from the declared class of the PMF.
+
+#define TEST_VPMF(a,b,c) TEST_PMF(a,b,c)
+#define TEST_NVPMF(a,b,c) TEST_PMF(a,b,c)
+
+void test_pmf_x()
+{
+ TEST_NVPMF(abcd_abcd_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(abcd_abcd_f3, find_func_addr(lfn="_ZN4abcd2f3Ev"), 0);
+ TEST_VPMF (abcd_abcd_g1, 1, 0);
+ TEST_VPMF (abcd_abcd_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(abcd_efgh_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(abcd_efgh_f3, find_func_addr(lfn="_ZN4abcd2f3Ev"), 0);
+ TEST_VPMF (abcd_efgh_g1, 1, 0);
+ TEST_VPMF (abcd_efgh_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(abcd_pqrs_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(abcd_pqrs_f3, find_func_addr(lfn="_ZN4abcd2f3Ev"), 0);
+ TEST_VPMF (abcd_pqrs_g1, 1, 0);
+ TEST_VPMF (abcd_pqrs_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(abcd_lmno_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(abcd_lmno_f3, find_func_addr(lfn="_ZN4abcd2f3Ev"), 0);
+ TEST_VPMF (abcd_lmno_g1, 1, 0);
+ TEST_VPMF (abcd_lmno_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(efgh_abcd_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), 0);
+ TEST_NVPMF(efgh_abcd_f3, find_func_addr(lfn="_ZN4efgh2f3Ev"), 0);
+ TEST_VPMF (efgh_abcd_g2, 1, 0);
+ TEST_VPMF (efgh_abcd_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(efgh_efgh_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), 0);
+ TEST_NVPMF(efgh_efgh_f3, find_func_addr(lfn="_ZN4efgh2f3Ev"), 0);
+ TEST_VPMF (efgh_efgh_g2, 1, 0);
+ TEST_VPMF (efgh_efgh_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(efgh_pqrs_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), 0);
+ TEST_NVPMF(efgh_pqrs_f3, find_func_addr(lfn="_ZN4efgh2f3Ev"), 0);
+ TEST_VPMF (efgh_pqrs_g2, 1, 0);
+ TEST_VPMF (efgh_pqrs_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(efgh_lmno_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), 0);
+ TEST_NVPMF(efgh_lmno_f3, find_func_addr(lfn="_ZN4efgh2f3Ev"), 0);
+ TEST_VPMF (efgh_lmno_g2, 1, 0);
+ TEST_VPMF (efgh_lmno_g3, LPSELECT(9,5), 0);
+ TEST_NVPMF(pqrs_abcd_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(pqrs_abcd_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), LPSELECT(16,8));
+ TEST_NVPMF(pqrs_abcd_f4, find_func_addr(lfn="_ZN4pqrs2f4Ev"), 0);
+ TEST_VPMF (pqrs_abcd_g1, 1, 0);
+ TEST_VPMF (pqrs_abcd_g2, 1, LPSELECT(16,8));
+ TEST_VPMF (pqrs_abcd_g4, LPSELECT(33,17), 0);
+ TEST_NVPMF(pqrs_efgh_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(pqrs_efgh_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), LPSELECT(16,8));
+ TEST_NVPMF(pqrs_efgh_f4, find_func_addr(lfn="_ZN4pqrs2f4Ev"), 0);
+ TEST_VPMF (pqrs_efgh_g1, 1, 0);
+ TEST_VPMF (pqrs_efgh_g2, 1, LPSELECT(16,8));
+ TEST_VPMF (pqrs_efgh_g4, LPSELECT(33,17), 0);
+ TEST_NVPMF(pqrs_pqrs_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(pqrs_pqrs_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), LPSELECT(16,8));
+ TEST_NVPMF(pqrs_pqrs_f4, find_func_addr(lfn="_ZN4pqrs2f4Ev"), 0);
+ TEST_VPMF (pqrs_pqrs_g1, 1, 0);
+ TEST_VPMF (pqrs_pqrs_g2, 1, LPSELECT(16,8));
+ TEST_VPMF (pqrs_pqrs_g4, LPSELECT(33,17), 0);
+ TEST_NVPMF(pqrs_lmno_f1, find_func_addr(lfn="_ZN4abcd2f1Ev"), 0);
+ TEST_NVPMF(pqrs_lmno_f2, find_func_addr(lfn="_ZN4efgh2f2Ev"), LPSELECT(16,8));
+ TEST_NVPMF(pqrs_lmno_f4, find_func_addr(lfn="_ZN4pqrs2f4Ev"), 0);
+ TEST_VPMF (pqrs_lmno_g1, 1, 0);
+ TEST_VPMF (pqrs_lmno_g2, 1, LPSELECT(16,8));
+ TEST_VPMF (pqrs_lmno_g4, LPSELECT(33,17), 0);
+ TEST_NVPMF(lmno_abcd_f4, find_func_addr(lfn="_ZN4lmno2f4Ev"), 0);
+ TEST_VPMF (lmno_abcd_g4, 1, 0);
+ TEST_NVPMF(lmno_efgh_f4, find_func_addr(lfn="_ZN4lmno2f4Ev"), 0);
+ TEST_VPMF (lmno_efgh_g4, 1, 0);
+ TEST_NVPMF(lmno_pqrs_f4, find_func_addr(lfn="_ZN4lmno2f4Ev"), 0);
+ TEST_VPMF (lmno_pqrs_g4, 1, 0);
+ TEST_NVPMF(lmno_lmno_f4, find_func_addr(lfn="_ZN4lmno2f4Ev"), 0);
+ TEST_VPMF (lmno_lmno_g4, 1, 0);
+ TEST_VPMF (lmno_lmno_null, 0, 0);
+ TEST_NVPMF(lmno_lmno_null, 0, 0);
+}
+void test_pdm()
+{
+ // test static assignments
+ test_pdm_x();
+ // now test dynamic assignments
+ reset_pdm();
+ test_pdm_x();
+}
+void test_pmf()
+{
+ // test static assignments
+ test_pmf_x();
+ // now test dynamic assignments
+ reset_pmf();
+ test_pmf_x();
+}
+
+static Arrange_To_Call_Me Tpmf(test_pmf, "pmf");
+static Arrange_To_Call_Me Tpdm(test_pdm, "pdm");
+#else
+
+typedef struct {
+ const char *name;
+ void (*pf)();
+} NAME_MAP;
+
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4abcd2f3Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4abcd2f3Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4abcd2f3Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4abcd2f3Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4efgh2f3Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4efgh2f3Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4efgh2f3Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4efgh2f3Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4pqrs2f4Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4pqrs2f4Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4pqrs2f4Ev();
+extern void _ZN4abcd2f1Ev();
+extern void _ZN4efgh2f2Ev();
+extern void _ZN4pqrs2f4Ev();
+extern void _ZN4lmno2f4Ev();
+extern void _ZN4lmno2f4Ev();
+extern void _ZN4lmno2f4Ev();
+extern void _ZN4lmno2f4Ev();
+
+#define PAIR(a) {#a, a}
+static NAME_MAP map[] = {
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4abcd2f3Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4abcd2f3Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4abcd2f3Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4abcd2f3Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4efgh2f3Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4efgh2f3Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4efgh2f3Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4efgh2f3Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4pqrs2f4Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4pqrs2f4Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4pqrs2f4Ev),
+ PAIR(_ZN4abcd2f1Ev),
+ PAIR(_ZN4efgh2f2Ev),
+ PAIR(_ZN4pqrs2f4Ev),
+ PAIR(_ZN4lmno2f4Ev),
+ PAIR(_ZN4lmno2f4Ev),
+ PAIR(_ZN4lmno2f4Ev),
+ PAIR(_ZN4lmno2f4Ev),
+ {0,0}
+};
+
+#include <string.h>
+ptrdiff_t
+find_func_addr(const char *name)
+{
+ NAME_MAP *m;
+ for (m = map; m->name; m++)
+ if (!strcmp(m->name, name))
+ return (ptrdiff_t) m->pf;
+ return (ptrdiff_t) 0x33333333;
+}
+
+const char *
+find_func_name(void (*f)())
+{
+ NAME_MAP *m;
+ if (!f) return "";
+ for (m = map; m->name; m++)
+ if (m->pf == f)
+ return m->name;
+ return "???";
+}
+
+#endif
+
+
+
+
+
+
+//these combinations break C++ rules
+//int (abcd::*abcd_abcd_f2)() = &abcd::f2;
+//int (abcd::*abcd_abcd_f4)() = &abcd::f4;
+//int (abcd::*abcd_abcd_g2)() = &abcd::g2;
+//int (abcd::*abcd_abcd_g4)() = &abcd::g4;
+//int (abcd::*abcd_efgh_f2)() = &abcd::f2;
+//int (abcd::*abcd_efgh_f4)() = &abcd::f4;
+//int (abcd::*abcd_efgh_g2)() = &abcd::g2;
+//int (abcd::*abcd_efgh_g4)() = &abcd::g4;
+//int (abcd::*abcd_pqrs_f2)() = &abcd::f2;
+//int (abcd::*abcd_pqrs_f4)() = &abcd::f4;
+//int (abcd::*abcd_pqrs_g2)() = &abcd::g2;
+//int (abcd::*abcd_pqrs_g4)() = &abcd::g4;
+//int (abcd::*abcd_lmno_f2)() = &abcd::f2;
+//int (abcd::*abcd_lmno_f4)() = &abcd::f4;
+//int (abcd::*abcd_lmno_g2)() = &abcd::g2;
+//int (abcd::*abcd_lmno_g4)() = &abcd::g4;
+//int (efgh::*efgh_abcd_f1)() = &efgh::f1;
+//int (efgh::*efgh_abcd_f4)() = &efgh::f4;
+//int (efgh::*efgh_abcd_g1)() = &efgh::g1;
+//int (efgh::*efgh_abcd_g4)() = &efgh::g4;
+//int (efgh::*efgh_efgh_f1)() = &efgh::f1;
+//int (efgh::*efgh_efgh_f4)() = &efgh::f4;
+//int (efgh::*efgh_efgh_g1)() = &efgh::g1;
+//int (efgh::*efgh_efgh_g4)() = &efgh::g4;
+//int (efgh::*efgh_pqrs_f1)() = &efgh::f1;
+//int (efgh::*efgh_pqrs_f4)() = &efgh::f4;
+//int (efgh::*efgh_pqrs_g1)() = &efgh::g1;
+//int (efgh::*efgh_pqrs_g4)() = &efgh::g4;
+//int (efgh::*efgh_lmno_f1)() = &efgh::f1;
+//int (efgh::*efgh_lmno_f4)() = &efgh::f4;
+//int (efgh::*efgh_lmno_g1)() = &efgh::g1;
+//int (efgh::*efgh_lmno_g4)() = &efgh::g4;
+//int (pqrs::*pqrs_abcd_f3)() = &pqrs::f3;
+//int (pqrs::*pqrs_abcd_g3)() = &pqrs::g3;
+//int (pqrs::*pqrs_efgh_f3)() = &pqrs::f3;
+//int (pqrs::*pqrs_efgh_g3)() = &pqrs::g3;
+//int (pqrs::*pqrs_pqrs_f3)() = &pqrs::f3;
+//int (pqrs::*pqrs_pqrs_g3)() = &pqrs::g3;
+//int (pqrs::*pqrs_lmno_f3)() = &pqrs::f3;
+//int (pqrs::*pqrs_lmno_g3)() = &pqrs::g3;
+//int (lmno::*lmno_abcd_f1)() = &lmno::f1;
+//int (lmno::*lmno_abcd_f2)() = &lmno::f2;
+//int (lmno::*lmno_abcd_f3)() = &lmno::f3;
+//int (lmno::*lmno_abcd_g1)() = &lmno::g1;
+//int (lmno::*lmno_abcd_g2)() = &lmno::g2;
+//int (lmno::*lmno_abcd_g3)() = &lmno::g3;
+//int (lmno::*lmno_efgh_f1)() = &lmno::f1;
+//int (lmno::*lmno_efgh_f2)() = &lmno::f2;
+//int (lmno::*lmno_efgh_f3)() = &lmno::f3;
+//int (lmno::*lmno_efgh_g1)() = &lmno::g1;
+//int (lmno::*lmno_efgh_g2)() = &lmno::g2;
+//int (lmno::*lmno_efgh_g3)() = &lmno::g3;
+//int (lmno::*lmno_pqrs_f1)() = &lmno::f1;
+//int (lmno::*lmno_pqrs_f2)() = &lmno::f2;
+//int (lmno::*lmno_pqrs_f3)() = &lmno::f3;
+//int (lmno::*lmno_pqrs_g1)() = &lmno::g1;
+//int (lmno::*lmno_pqrs_g2)() = &lmno::g2;
+//int (lmno::*lmno_pqrs_g3)() = &lmno::g3;
+//int (lmno::*lmno_lmno_f1)() = &lmno::f1;
+//int (lmno::*lmno_lmno_f2)() = &lmno::f2;
+//int (lmno::*lmno_lmno_f3)() = &lmno::f3;
+//int (lmno::*lmno_lmno_g1)() = &lmno::g1;
+//int (lmno::*lmno_lmno_g2)() = &lmno::g2;
+//int (lmno::*lmno_lmno_g3)() = &lmno::g3;
Propchange: test-suite/trunk/ABI-Testsuite/test/s2_3/ptrmem.x
------------------------------------------------------------------------------
svn:executable = *
More information about the llvm-commits
mailing list