[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


Added: test-suite/trunk/ABI-Testsuite/test/s2_6/T_ksc6.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/s2_6/T_ksc6.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/s2_6/T_ksc6.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/s2_6/T_ksc6.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,307763 @@
+// 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  aa0  {
+  int a;
+};
+//SIG(-1 aa0) C1{ Fi}
+
+
+
+static void Test_aa0()
+{
+  {
+    init_simple_test("aa0");
+    aa0 lv;
+    check2(sizeof(lv), 4, "sizeof(aa0)");
+    check2(__alignof__(lv), 4, "__alignof__(aa0)");
+    check_field_offset(lv, a, 0, "aa0.a");
+  }
+}
+static Arrange_To_Call_Me vaa0(Test_aa0, "aa0", 4);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI3aa0[];
+VTBL_ENTRY *P__ZTI3aa0 = _ZTI3aa0; 
+Class_Descriptor cd_aa0 = {  "aa0", // class name
+  0,0,//no base classes
+  0, // no vftv
+  0, //no vtt
+  4, // object size
+  NSPAIRA(_ZTI3aa0),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  aa1  {
+  int a;
+  virtual void  foo(); // _ZN3aa13fooEv
+  ~aa1(); // tgen
+  aa1(); // tgen
+};
+//SIG(-1 aa1) C1{ v1 Fi}
+
+
+void  aa1 ::foo(){vfunc_called(this, "_ZN3aa13fooEv");}
+aa1 ::~aa1(){ note_dtor("aa1", this);} // tgen
+aa1 ::aa1(){ note_ctor("aa1", this);} // tgen
+
+static void Test_aa1()
+{
+  extern Class_Descriptor cd_aa1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_aa1, buf);
+    aa1 *dp, &lv = *(dp=new (buf) aa1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aa1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(aa1)");
+    check_field_offset(lv, a, ABISELECT(8,4), "aa1.a");
+    test_class_info(&lv, &cd_aa1);
+    dp->~aa1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vaa1(Test_aa1, "aa1", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3aa1C1Ev();
+extern void _ZN3aa1D1Ev();
+Name_Map name_map_aa1[] = {
+  NSPAIR(_ZN3aa1C1Ev),
+  NSPAIR(_ZN3aa1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI3aa1[];
+extern void _ZN3aa13fooEv();
+static  VTBL_ENTRY vtc_aa1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3aa1[0]),
+  (VTBL_ENTRY)&_ZN3aa13fooEv,
+};
+extern VTBL_ENTRY _ZTI3aa1[];
+extern  VTBL_ENTRY _ZTV3aa1[];
+Class_Descriptor cd_aa1 = {  "aa1", // class name
+  0,0,//no base classes
+  &(vtc_aa1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI3aa1),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV3aa1),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  aa2  {
+  int a;
+  virtual void  foo(); // _ZN3aa23fooEv
+  virtual void  bar(); // _ZN3aa23barEv
+  ~aa2(); // tgen
+  aa2(); // tgen
+};
+//SIG(-1 aa2) C1{ v1 v2 Fi}
+
+
+void  aa2 ::foo(){vfunc_called(this, "_ZN3aa23fooEv");}
+void  aa2 ::bar(){vfunc_called(this, "_ZN3aa23barEv");}
+aa2 ::~aa2(){ note_dtor("aa2", this);} // tgen
+aa2 ::aa2(){ note_ctor("aa2", this);} // tgen
+
+static void Test_aa2()
+{
+  extern Class_Descriptor cd_aa2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_aa2, buf);
+    aa2 *dp, &lv = *(dp=new (buf) aa2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aa2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(aa2)");
+    check_field_offset(lv, a, ABISELECT(8,4), "aa2.a");
+    test_class_info(&lv, &cd_aa2);
+    dp->~aa2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vaa2(Test_aa2, "aa2", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3aa2C1Ev();
+extern void _ZN3aa2D1Ev();
+Name_Map name_map_aa2[] = {
+  NSPAIR(_ZN3aa2C1Ev),
+  NSPAIR(_ZN3aa2D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI3aa2[];
+extern void _ZN3aa23fooEv();
+extern void _ZN3aa23barEv();
+static  VTBL_ENTRY vtc_aa2[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3aa2[0]),
+  (VTBL_ENTRY)&_ZN3aa23fooEv,
+  (VTBL_ENTRY)&_ZN3aa23barEv,
+};
+extern VTBL_ENTRY _ZTI3aa2[];
+extern  VTBL_ENTRY _ZTV3aa2[];
+Class_Descriptor cd_aa2 = {  "aa2", // class name
+  0,0,//no base classes
+  &(vtc_aa2[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI3aa2),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV3aa2),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  bb60  : aa0 {
+  int b;
+  virtual void  bar(); // _ZN4bb603barEv
+  virtual void  foo(); // _ZN4bb603fooEv
+  ~bb60(); // tgen
+  bb60(); // tgen
+};
+//SIG(-1 bb60) C1{ BC2{ Fi} v1 v2 Fi}
+
+
+void  bb60 ::bar(){vfunc_called(this, "_ZN4bb603barEv");}
+void  bb60 ::foo(){vfunc_called(this, "_ZN4bb603fooEv");}
+bb60 ::~bb60(){ note_dtor("bb60", this);} // tgen
+bb60 ::bb60(){ note_ctor("bb60", this);} // tgen
+
+static void Test_bb60()
+{
+  extern Class_Descriptor cd_bb60;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(3,4)];
+    init_test(&cd_bb60, buf);
+    bb60 *dp, &lv = *(dp=new (buf) bb60());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,12), "sizeof(bb60)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(bb60)");
+    check_base_class_offset(lv, (aa0*), ABISELECT(8,4), "bb60");
+    check_field_offset(lv, b, ABISELECT(12,8), "bb60.b");
+    test_class_info(&lv, &cd_bb60);
+    dp->~bb60();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vbb60(Test_bb60, "bb60", ABISELECT(16,12));
+
+#else // __cplusplus
+
+extern void _ZN4bb60C1Ev();
+extern void _ZN4bb60D1Ev();
+Name_Map name_map_bb60[] = {
+  NSPAIR(_ZN4bb60C1Ev),
+  NSPAIR(_ZN4bb60D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+static Base_Class bases_bb60[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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 _ZTI4bb60[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_bb60[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI4bb60[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+Class_Descriptor cd_bb60 = {  "bb60", // class name
+  bases_bb60, 1,
+  &(vtc_bb60[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,12), // object size
+  NSPAIRA(_ZTI4bb60),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV4bb60),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  cc060  : bb60 {
+  int c;
+  ~cc060(); // tgen
+  cc060(); // tgen
+};
+//SIG(-1 cc060) C1{ BC2{ BC3{ Fi} v1 v2 Fi} Fi}
+
+
+cc060 ::~cc060(){ note_dtor("cc060", this);} // tgen
+cc060 ::cc060(){ note_ctor("cc060", this);} // tgen
+
+static void Test_cc060()
+{
+  extern Class_Descriptor cd_cc060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_cc060, buf);
+    cc060 *dp, &lv = *(dp=new (buf) cc060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(cc060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(cc060)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(8,4), "cc060");
+    check_base_class_offset(lv, (bb60*), 0, "cc060");
+    check_field_offset(lv, c, ABISELECT(16,12), "cc060.c");
+    test_class_info(&lv, &cd_cc060);
+    dp->~cc060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vcc060(Test_cc060, "cc060", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN5cc060C1Ev();
+extern void _ZN5cc060D1Ev();
+Name_Map name_map_cc060[] = {
+  NSPAIR(_ZN5cc060C1Ev),
+  NSPAIR(_ZN5cc060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+static Base_Class bases_cc060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    0, //bcp->offset
+    0, //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 _ZTI5cc060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_cc060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+Class_Descriptor cd_cc060 = {  "cc060", // class name
+  bases_cc060, 2,
+  &(vtc_cc060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI5cc060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV5cc060),4, //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  dd0060  : cc060 {
+  int d;
+  ~dd0060(); // tgen
+  dd0060(); // tgen
+};
+//SIG(-1 dd0060) C1{ BC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} Fi}
+
+
+dd0060 ::~dd0060(){ note_dtor("dd0060", this);} // tgen
+dd0060 ::dd0060(){ note_ctor("dd0060", this);} // tgen
+
+static void Test_dd0060()
+{
+  extern Class_Descriptor cd_dd0060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,6)];
+    init_test(&cd_dd0060, buf);
+    dd0060 *dp, &lv = *(dp=new (buf) dd0060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,20), "sizeof(dd0060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd0060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(8,4), "dd0060");
+    check_base_class_offset(lv, (bb60*)(cc060*), 0, "dd0060");
+    check_base_class_offset(lv, (cc060*), 0, "dd0060");
+    check_field_offset(lv, d, ABISELECT(20,16), "dd0060.d");
+    test_class_info(&lv, &cd_dd0060);
+    dp->~dd0060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd0060(Test_dd0060, "dd0060", ABISELECT(24,20));
+
+#else // __cplusplus
+
+extern void _ZN6dd0060C1Ev();
+extern void _ZN6dd0060D1Ev();
+Name_Map name_map_dd0060[] = {
+  NSPAIR(_ZN6dd0060C1Ev),
+  NSPAIR(_ZN6dd0060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd0060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    0, //bcp->offset
+    0, //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_cc060,    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 _ZTI6dd0060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd0060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+Class_Descriptor cd_dd0060 = {  "dd0060", // class name
+  bases_dd0060, 3,
+  &(vtc_dd0060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,20), // object size
+  NSPAIRA(_ZTI6dd0060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd0060),4, //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
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee00060  : dd0060 {
+  int e;
+  ~ee00060(); // tgen
+  ee00060(); // tgen
+};
+//SIG(1 ee00060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee00060 ::~ee00060(){ note_dtor("ee00060", this);} // tgen
+ee00060 ::ee00060(){ note_ctor("ee00060", this);} // tgen
+
+static void Test_ee00060()
+{
+  extern Class_Descriptor cd_ee00060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee00060, buf);
+    ee00060 *dp, &lv = *(dp=new (buf) ee00060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee00060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee00060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(8,4), "ee00060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), 0, "ee00060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), 0, "ee00060");
+    check_base_class_offset(lv, (dd0060*), 0, "ee00060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee00060.e");
+    test_class_info(&lv, &cd_ee00060);
+    dp->~ee00060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee00060(Test_ee00060, "ee00060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee00060C1Ev();
+extern void _ZN7ee00060D1Ev();
+Name_Map name_map_ee00060[] = {
+  NSPAIR(_ZN7ee00060C1Ev),
+  NSPAIR(_ZN7ee00060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee00060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    0, //bcp->offset
+    0, //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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee00060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee00060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee00060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee00060[];
+extern  VTBL_ENTRY _ZTV7ee00060[];
+Class_Descriptor cd_ee00060 = {  "ee00060", // class name
+  bases_ee00060, 4,
+  &(vtc_ee00060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee00060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee00060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee10060  : virtual dd0060 {
+  int e;
+  ~ee10060(); // tgen
+  ee10060(); // tgen
+};
+//SIG(1 ee10060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee10060 ::~ee10060(){ note_dtor("ee10060", this);} // tgen
+ee10060 ::ee10060(){ note_ctor("ee10060", this);} // tgen
+
+static void Test_ee10060()
+{
+  extern Class_Descriptor cd_ee10060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee10060, buf);
+    ee10060 *dp, &lv = *(dp=new (buf) ee10060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee10060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee10060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(24,12), "ee10060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), ABISELECT(16,8), "ee10060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), ABISELECT(16,8), "ee10060");
+    check_base_class_offset(lv, (dd0060*), ABISELECT(16,8), "ee10060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee10060.e");
+    test_class_info(&lv, &cd_ee10060);
+    dp->~ee10060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee10060(Test_ee10060, "ee10060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee10060C1Ev();
+extern void _ZN7ee10060D1Ev();
+Name_Map name_map_ee10060[] = {
+  NSPAIR(_ZN7ee10060C1Ev),
+  NSPAIR(_ZN7ee10060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee10060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee10060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee10060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee10060[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee10060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee10060[];
+static  VTT_ENTRY vtt_ee10060[] = {
+  {&(_ZTV7ee10060[3]),  3,9},
+  {&(_ZTV7ee10060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee10060[];
+extern  VTBL_ENTRY _ZTV7ee10060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee10060[];
+Class_Descriptor cd_ee10060 = {  "ee10060", // class name
+  bases_ee10060, 4,
+  &(vtc_ee10060[0]), // expected_vtbl_contents
+  &(vtt_ee10060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee10060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee10060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee10060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee20060  : dd0060 {
+  int e;
+  virtual void  foo(); // _ZN7ee200603fooEv
+  ~ee20060(); // tgen
+  ee20060(); // tgen
+};
+//SIG(1 ee20060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee20060 ::foo(){vfunc_called(this, "_ZN7ee200603fooEv");}
+ee20060 ::~ee20060(){ note_dtor("ee20060", this);} // tgen
+ee20060 ::ee20060(){ note_ctor("ee20060", this);} // tgen
+
+static void Test_ee20060()
+{
+  extern Class_Descriptor cd_ee20060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee20060, buf);
+    ee20060 *dp, &lv = *(dp=new (buf) ee20060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee20060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee20060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(8,4), "ee20060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), 0, "ee20060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), 0, "ee20060");
+    check_base_class_offset(lv, (dd0060*), 0, "ee20060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee20060.e");
+    test_class_info(&lv, &cd_ee20060);
+    dp->~ee20060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee20060(Test_ee20060, "ee20060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee20060C1Ev();
+extern void _ZN7ee20060D1Ev();
+Name_Map name_map_ee20060[] = {
+  NSPAIR(_ZN7ee20060C1Ev),
+  NSPAIR(_ZN7ee20060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee20060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee20060[];
+extern void _ZN4bb603barEv();
+extern void _ZN7ee200603fooEv();
+static  VTBL_ENTRY vtc_ee20060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee20060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN7ee200603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee20060[];
+extern  VTBL_ENTRY _ZTV7ee20060[];
+Class_Descriptor cd_ee20060 = {  "ee20060", // class name
+  bases_ee20060, 4,
+  &(vtc_ee20060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee20060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee20060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee30060  : virtual dd0060 {
+  int e;
+  virtual void  foo(); // _ZN7ee300603fooEv
+  ~ee30060(); // tgen
+  ee30060(); // tgen
+};
+//SIG(1 ee30060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee30060 ::foo(){vfunc_called(this, "_ZN7ee300603fooEv");}
+ee30060 ::~ee30060(){ note_dtor("ee30060", this);} // tgen
+ee30060 ::ee30060(){ note_ctor("ee30060", this);} // tgen
+
+static void Test_ee30060()
+{
+  extern Class_Descriptor cd_ee30060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee30060, buf);
+    ee30060 *dp, &lv = *(dp=new (buf) ee30060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee30060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee30060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(24,12), "ee30060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), ABISELECT(16,8), "ee30060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), ABISELECT(16,8), "ee30060");
+    check_base_class_offset(lv, (dd0060*), ABISELECT(16,8), "ee30060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee30060.e");
+    test_class_info(&lv, &cd_ee30060);
+    dp->~ee30060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee30060(Test_ee30060, "ee30060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee30060C1Ev();
+extern void _ZN7ee30060D1Ev();
+Name_Map name_map_ee30060[] = {
+  NSPAIR(_ZN7ee30060C1Ev),
+  NSPAIR(_ZN7ee30060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee30060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee30060[];
+extern void _ZN7ee300603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee300603fooEv,_ZTv0_n16_N7ee300603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee300603fooEv,_ZThn8_N7ee300603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee30060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee30060[0]),
+  (VTBL_ENTRY)&_ZN7ee300603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee30060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee300603fooEv,_ZTv0_n16_N7ee300603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee30060[];
+static  VTT_ENTRY vtt_ee30060[] = {
+  {&(_ZTV7ee30060[3]),  3,10},
+  {&(_ZTV7ee30060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee30060[];
+extern  VTBL_ENTRY _ZTV7ee30060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee30060[];
+static VTBL_ENTRY alt_thunk_names1[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee300603fooEv,_ZTv0_n16_N7ee300603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee300603fooEv,_ZThn8_N7ee300603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee30060 = {  "ee30060", // class name
+  bases_ee30060, 4,
+  &(vtc_ee30060[0]), // expected_vtbl_contents
+  &(vtt_ee30060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee30060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee30060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee30060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names1,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee40060  : dd0060 {
+  int e;
+  virtual void  bar(); // _ZN7ee400603barEv
+  ~ee40060(); // tgen
+  ee40060(); // tgen
+};
+//SIG(1 ee40060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee40060 ::bar(){vfunc_called(this, "_ZN7ee400603barEv");}
+ee40060 ::~ee40060(){ note_dtor("ee40060", this);} // tgen
+ee40060 ::ee40060(){ note_ctor("ee40060", this);} // tgen
+
+static void Test_ee40060()
+{
+  extern Class_Descriptor cd_ee40060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee40060, buf);
+    ee40060 *dp, &lv = *(dp=new (buf) ee40060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee40060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee40060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(8,4), "ee40060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), 0, "ee40060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), 0, "ee40060");
+    check_base_class_offset(lv, (dd0060*), 0, "ee40060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee40060.e");
+    test_class_info(&lv, &cd_ee40060);
+    dp->~ee40060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee40060(Test_ee40060, "ee40060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee40060C1Ev();
+extern void _ZN7ee40060D1Ev();
+Name_Map name_map_ee40060[] = {
+  NSPAIR(_ZN7ee40060C1Ev),
+  NSPAIR(_ZN7ee40060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee40060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee40060[];
+extern void _ZN7ee400603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee40060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee40060[0]),
+  (VTBL_ENTRY)&_ZN7ee400603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee40060[];
+extern  VTBL_ENTRY _ZTV7ee40060[];
+Class_Descriptor cd_ee40060 = {  "ee40060", // class name
+  bases_ee40060, 4,
+  &(vtc_ee40060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee40060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee40060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee50060  : virtual dd0060 {
+  int e;
+  virtual void  bar(); // _ZN7ee500603barEv
+  ~ee50060(); // tgen
+  ee50060(); // tgen
+};
+//SIG(1 ee50060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee50060 ::bar(){vfunc_called(this, "_ZN7ee500603barEv");}
+ee50060 ::~ee50060(){ note_dtor("ee50060", this);} // tgen
+ee50060 ::ee50060(){ note_ctor("ee50060", this);} // tgen
+
+static void Test_ee50060()
+{
+  extern Class_Descriptor cd_ee50060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee50060, buf);
+    ee50060 *dp, &lv = *(dp=new (buf) ee50060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee50060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee50060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(24,12), "ee50060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), ABISELECT(16,8), "ee50060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), ABISELECT(16,8), "ee50060");
+    check_base_class_offset(lv, (dd0060*), ABISELECT(16,8), "ee50060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee50060.e");
+    test_class_info(&lv, &cd_ee50060);
+    dp->~ee50060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee50060(Test_ee50060, "ee50060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee50060C1Ev();
+extern void _ZN7ee50060D1Ev();
+Name_Map name_map_ee50060[] = {
+  NSPAIR(_ZN7ee50060C1Ev),
+  NSPAIR(_ZN7ee50060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee50060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee50060[];
+extern void _ZN7ee500603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee500603barEv,_ZTv0_n12_N7ee500603barEv)();
+extern void ABISELECT(_ZThn16_N7ee500603barEv,_ZThn8_N7ee500603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee50060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee50060[0]),
+  (VTBL_ENTRY)&_ZN7ee500603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee50060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee500603barEv,_ZTv0_n12_N7ee500603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee50060[];
+static  VTT_ENTRY vtt_ee50060[] = {
+  {&(_ZTV7ee50060[3]),  3,10},
+  {&(_ZTV7ee50060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee50060[];
+extern  VTBL_ENTRY _ZTV7ee50060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee50060[];
+static VTBL_ENTRY alt_thunk_names2[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee500603barEv,_ZTv0_n12_N7ee500603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee500603barEv,_ZThn8_N7ee500603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee50060 = {  "ee50060", // class name
+  bases_ee50060, 4,
+  &(vtc_ee50060[0]), // expected_vtbl_contents
+  &(vtt_ee50060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee50060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee50060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee50060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names2,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee60060  : dd0060 {
+  int e;
+  virtual void  foo(); // _ZN7ee600603fooEv
+  virtual void  bar(); // _ZN7ee600603barEv
+  ~ee60060(); // tgen
+  ee60060(); // tgen
+};
+//SIG(1 ee60060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee60060 ::foo(){vfunc_called(this, "_ZN7ee600603fooEv");}
+void  ee60060 ::bar(){vfunc_called(this, "_ZN7ee600603barEv");}
+ee60060 ::~ee60060(){ note_dtor("ee60060", this);} // tgen
+ee60060 ::ee60060(){ note_ctor("ee60060", this);} // tgen
+
+static void Test_ee60060()
+{
+  extern Class_Descriptor cd_ee60060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee60060, buf);
+    ee60060 *dp, &lv = *(dp=new (buf) ee60060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee60060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee60060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(8,4), "ee60060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), 0, "ee60060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), 0, "ee60060");
+    check_base_class_offset(lv, (dd0060*), 0, "ee60060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee60060.e");
+    test_class_info(&lv, &cd_ee60060);
+    dp->~ee60060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee60060(Test_ee60060, "ee60060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee60060C1Ev();
+extern void _ZN7ee60060D1Ev();
+Name_Map name_map_ee60060[] = {
+  NSPAIR(_ZN7ee60060C1Ev),
+  NSPAIR(_ZN7ee60060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee60060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee60060[];
+extern void _ZN7ee600603barEv();
+extern void _ZN7ee600603fooEv();
+static  VTBL_ENTRY vtc_ee60060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee60060[0]),
+  (VTBL_ENTRY)&_ZN7ee600603barEv,
+  (VTBL_ENTRY)&_ZN7ee600603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee60060[];
+extern  VTBL_ENTRY _ZTV7ee60060[];
+Class_Descriptor cd_ee60060 = {  "ee60060", // class name
+  bases_ee60060, 4,
+  &(vtc_ee60060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee60060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee60060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee70060  : virtual dd0060 {
+  int e;
+  virtual void  foo(); // _ZN7ee700603fooEv
+  virtual void  bar(); // _ZN7ee700603barEv
+  ~ee70060(); // tgen
+  ee70060(); // tgen
+};
+//SIG(1 ee70060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee70060 ::foo(){vfunc_called(this, "_ZN7ee700603fooEv");}
+void  ee70060 ::bar(){vfunc_called(this, "_ZN7ee700603barEv");}
+ee70060 ::~ee70060(){ note_dtor("ee70060", this);} // tgen
+ee70060 ::ee70060(){ note_ctor("ee70060", this);} // tgen
+
+static void Test_ee70060()
+{
+  extern Class_Descriptor cd_ee70060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee70060, buf);
+    ee70060 *dp, &lv = *(dp=new (buf) ee70060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee70060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee70060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd0060*), ABISELECT(24,12), "ee70060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd0060*), ABISELECT(16,8), "ee70060");
+    check_base_class_offset(lv, (cc060*)(dd0060*), ABISELECT(16,8), "ee70060");
+    check_base_class_offset(lv, (dd0060*), ABISELECT(16,8), "ee70060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee70060.e");
+    test_class_info(&lv, &cd_ee70060);
+    dp->~ee70060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee70060(Test_ee70060, "ee70060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee70060C1Ev();
+extern void _ZN7ee70060D1Ev();
+Name_Map name_map_ee70060[] = {
+  NSPAIR(_ZN7ee70060C1Ev),
+  NSPAIR(_ZN7ee70060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd0060;
+extern VTBL_ENTRY _ZTI6dd0060[];
+extern  VTBL_ENTRY _ZTV6dd0060[];
+static Base_Class bases_ee70060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee70060[];
+extern void _ZN7ee700603fooEv();
+extern void _ZN7ee700603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee700603barEv,_ZTv0_n12_N7ee700603barEv)();
+extern void ABISELECT(_ZThn16_N7ee700603barEv,_ZThn8_N7ee700603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee700603fooEv,_ZTv0_n16_N7ee700603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee700603fooEv,_ZThn8_N7ee700603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee70060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee70060[0]),
+  (VTBL_ENTRY)&_ZN7ee700603fooEv,
+  (VTBL_ENTRY)&_ZN7ee700603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee70060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee700603barEv,_ZTv0_n12_N7ee700603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee700603fooEv,_ZTv0_n16_N7ee700603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee70060[];
+static  VTT_ENTRY vtt_ee70060[] = {
+  {&(_ZTV7ee70060[3]),  3,11},
+  {&(_ZTV7ee70060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee70060[];
+extern  VTBL_ENTRY _ZTV7ee70060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee70060[];
+static VTBL_ENTRY alt_thunk_names3[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee700603fooEv,_ZTv0_n16_N7ee700603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee700603fooEv,_ZThn8_N7ee700603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee700603barEv,_ZTv0_n12_N7ee700603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee700603barEv,_ZThn8_N7ee700603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee70060 = {  "ee70060", // class name
+  bases_ee70060, 4,
+  &(vtc_ee70060[0]), // expected_vtbl_contents
+  &(vtt_ee70060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee70060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee70060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee70060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names3,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd1060  : virtual cc060 {
+  int d;
+  ~dd1060(); // tgen
+  dd1060(); // tgen
+};
+//SIG(-1 dd1060) C1{ VBC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} Fi}
+
+
+dd1060 ::~dd1060(){ note_dtor("dd1060", this);} // tgen
+dd1060 ::dd1060(){ note_ctor("dd1060", this);} // tgen
+
+static void Test_dd1060()
+{
+  extern Class_Descriptor cd_dd1060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,7)];
+    init_test(&cd_dd1060, buf);
+    dd1060 *dp, &lv = *(dp=new (buf) dd1060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,24), "sizeof(dd1060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd1060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,12), "dd1060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,8), "dd1060");
+    check_base_class_offset(lv, (cc060*), ABISELECT(16,8), "dd1060");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd1060.d");
+    test_class_info(&lv, &cd_dd1060);
+    dp->~dd1060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd1060(Test_dd1060, "dd1060", ABISELECT(40,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd1060C1Ev();
+extern void _ZN6dd1060D1Ev();
+Name_Map name_map_dd1060[] = {
+  NSPAIR(_ZN6dd1060C1Ev),
+  NSPAIR(_ZN6dd1060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd1060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd1060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd1060[];
+static  VTT_ENTRY vtt_dd1060[] = {
+  {&(_ZTV6dd1060[3]),  3,9},
+  {&(_ZTV6dd1060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+Class_Descriptor cd_dd1060 = {  "dd1060", // class name
+  bases_dd1060, 3,
+  &(vtc_dd1060[0]), // expected_vtbl_contents
+  &(vtt_dd1060[0]), // expected_vtt_contents
+  ABISELECT(40,24), // object size
+  NSPAIRA(_ZTI6dd1060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd1060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd1060),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee01060  : dd1060 {
+  int e;
+  ~ee01060(); // tgen
+  ee01060(); // tgen
+};
+//SIG(1 ee01060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee01060 ::~ee01060(){ note_dtor("ee01060", this);} // tgen
+ee01060 ::ee01060(){ note_ctor("ee01060", this);} // tgen
+
+static void Test_ee01060()
+{
+  extern Class_Descriptor cd_ee01060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee01060, buf);
+    ee01060 *dp, &lv = *(dp=new (buf) ee01060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee01060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee01060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee01060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee01060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(16,12), "ee01060");
+    check_base_class_offset(lv, (dd1060*), 0, "ee01060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee01060.e");
+    test_class_info(&lv, &cd_ee01060);
+    dp->~ee01060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee01060(Test_ee01060, "ee01060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee01060C1Ev();
+extern void _ZN7ee01060D1Ev();
+Name_Map name_map_ee01060[] = {
+  NSPAIR(_ZN7ee01060C1Ev),
+  NSPAIR(_ZN7ee01060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee01060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee01060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee01060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee01060[0]),
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee01060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee01060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee01060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee01060[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee01060[] = {
+  {&(_ZTV7ee01060[3]),  3,9},
+  {&(_tg__ZTV6dd1060__7ee01060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee01060[4]),  4,6},
+  {&(_ZTV7ee01060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee01060[];
+extern  VTBL_ENTRY _ZTV7ee01060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee01060[];
+Class_Descriptor cd_ee01060 = {  "ee01060", // class name
+  bases_ee01060, 4,
+  &(vtc_ee01060[0]), // expected_vtbl_contents
+  &(vtt_ee01060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee01060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee01060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee01060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee11060  : virtual dd1060 {
+  int e;
+  ~ee11060(); // tgen
+  ee11060(); // tgen
+};
+//SIG(1 ee11060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee11060 ::~ee11060(){ note_dtor("ee11060", this);} // tgen
+ee11060 ::ee11060(){ note_ctor("ee11060", this);} // tgen
+
+static void Test_ee11060()
+{
+  extern Class_Descriptor cd_ee11060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee11060, buf);
+    ee11060 *dp, &lv = *(dp=new (buf) ee11060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee11060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee11060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee11060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee11060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(32,16), "ee11060");
+    check_base_class_offset(lv, (dd1060*), ABISELECT(16,8), "ee11060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee11060.e");
+    test_class_info(&lv, &cd_ee11060);
+    dp->~ee11060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee11060(Test_ee11060, "ee11060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee11060C1Ev();
+extern void _ZN7ee11060D1Ev();
+Name_Map name_map_ee11060[] = {
+  NSPAIR(_ZN7ee11060C1Ev),
+  NSPAIR(_ZN7ee11060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee11060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee11060[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee11060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee11060[0]),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee11060[0]),
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee11060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee11060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee11060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee11060[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee11060[] = {
+  {&(_ZTV7ee11060[4]),  4,13},
+  {&(_ZTV7ee11060[7]),  7,13},
+  {&(_ZTV7ee11060[11]),  11,13},
+  {&(_tg__ZTV6dd1060__7ee11060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee11060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee11060[];
+extern  VTBL_ENTRY _ZTV7ee11060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee11060[];
+Class_Descriptor cd_ee11060 = {  "ee11060", // class name
+  bases_ee11060, 4,
+  &(vtc_ee11060[0]), // expected_vtbl_contents
+  &(vtt_ee11060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee11060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee11060),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee11060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee21060  : dd1060 {
+  int e;
+  virtual void  foo(); // _ZN7ee210603fooEv
+  ~ee21060(); // tgen
+  ee21060(); // tgen
+};
+//SIG(1 ee21060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee21060 ::foo(){vfunc_called(this, "_ZN7ee210603fooEv");}
+ee21060 ::~ee21060(){ note_dtor("ee21060", this);} // tgen
+ee21060 ::ee21060(){ note_ctor("ee21060", this);} // tgen
+
+static void Test_ee21060()
+{
+  extern Class_Descriptor cd_ee21060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee21060, buf);
+    ee21060 *dp, &lv = *(dp=new (buf) ee21060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee21060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee21060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee21060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee21060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(16,12), "ee21060");
+    check_base_class_offset(lv, (dd1060*), 0, "ee21060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee21060.e");
+    test_class_info(&lv, &cd_ee21060);
+    dp->~ee21060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee21060(Test_ee21060, "ee21060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee21060C1Ev();
+extern void _ZN7ee21060D1Ev();
+Name_Map name_map_ee21060[] = {
+  NSPAIR(_ZN7ee21060C1Ev),
+  NSPAIR(_ZN7ee21060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee21060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee21060[];
+extern void _ZN7ee210603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee210603fooEv,_ZTv0_n16_N7ee210603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee210603fooEv,_ZThn12_N7ee210603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee21060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee21060[0]),
+  (VTBL_ENTRY)&_ZN7ee210603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee21060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee210603fooEv,_ZTv0_n16_N7ee210603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee21060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee21060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee21060[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee21060[] = {
+  {&(_ZTV7ee21060[3]),  3,10},
+  {&(_tg__ZTV6dd1060__7ee21060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee21060[4]),  4,6},
+  {&(_ZTV7ee21060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee21060[];
+extern  VTBL_ENTRY _ZTV7ee21060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee21060[];
+static VTBL_ENTRY alt_thunk_names4[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee210603fooEv,_ZTv0_n16_N7ee210603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee210603fooEv,_ZThn12_N7ee210603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee21060 = {  "ee21060", // class name
+  bases_ee21060, 4,
+  &(vtc_ee21060[0]), // expected_vtbl_contents
+  &(vtt_ee21060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee21060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee21060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee21060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names4,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee31060  : virtual dd1060 {
+  int e;
+  virtual void  foo(); // _ZN7ee310603fooEv
+  ~ee31060(); // tgen
+  ee31060(); // tgen
+};
+//SIG(1 ee31060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee31060 ::foo(){vfunc_called(this, "_ZN7ee310603fooEv");}
+ee31060 ::~ee31060(){ note_dtor("ee31060", this);} // tgen
+ee31060 ::ee31060(){ note_ctor("ee31060", this);} // tgen
+
+static void Test_ee31060()
+{
+  extern Class_Descriptor cd_ee31060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee31060, buf);
+    ee31060 *dp, &lv = *(dp=new (buf) ee31060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee31060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee31060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee31060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee31060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(32,16), "ee31060");
+    check_base_class_offset(lv, (dd1060*), ABISELECT(16,8), "ee31060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee31060.e");
+    test_class_info(&lv, &cd_ee31060);
+    dp->~ee31060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee31060(Test_ee31060, "ee31060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee31060C1Ev();
+extern void _ZN7ee31060D1Ev();
+Name_Map name_map_ee31060[] = {
+  NSPAIR(_ZN7ee31060C1Ev),
+  NSPAIR(_ZN7ee31060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee31060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee31060[];
+extern void _ZN7ee310603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee310603fooEv,_ZTv0_n16_N7ee310603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee310603fooEv,_ZThn16_N7ee310603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee31060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee31060[0]),
+  (VTBL_ENTRY)&_ZN7ee310603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee31060[0]),
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee31060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee310603fooEv,_ZTv0_n16_N7ee310603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee31060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee31060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee31060[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee31060[] = {
+  {&(_ZTV7ee31060[4]),  4,14},
+  {&(_ZTV7ee31060[8]),  8,14},
+  {&(_ZTV7ee31060[12]),  12,14},
+  {&(_tg__ZTV6dd1060__7ee31060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee31060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee31060[];
+extern  VTBL_ENTRY _ZTV7ee31060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee31060[];
+static VTBL_ENTRY alt_thunk_names5[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee310603fooEv,_ZTv0_n16_N7ee310603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee310603fooEv,_ZThn16_N7ee310603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee31060 = {  "ee31060", // class name
+  bases_ee31060, 4,
+  &(vtc_ee31060[0]), // expected_vtbl_contents
+  &(vtt_ee31060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee31060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee31060),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee31060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names5,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee41060  : dd1060 {
+  int e;
+  virtual void  bar(); // _ZN7ee410603barEv
+  ~ee41060(); // tgen
+  ee41060(); // tgen
+};
+//SIG(1 ee41060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee41060 ::bar(){vfunc_called(this, "_ZN7ee410603barEv");}
+ee41060 ::~ee41060(){ note_dtor("ee41060", this);} // tgen
+ee41060 ::ee41060(){ note_ctor("ee41060", this);} // tgen
+
+static void Test_ee41060()
+{
+  extern Class_Descriptor cd_ee41060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee41060, buf);
+    ee41060 *dp, &lv = *(dp=new (buf) ee41060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee41060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee41060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee41060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee41060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(16,12), "ee41060");
+    check_base_class_offset(lv, (dd1060*), 0, "ee41060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee41060.e");
+    test_class_info(&lv, &cd_ee41060);
+    dp->~ee41060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee41060(Test_ee41060, "ee41060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee41060C1Ev();
+extern void _ZN7ee41060D1Ev();
+Name_Map name_map_ee41060[] = {
+  NSPAIR(_ZN7ee41060C1Ev),
+  NSPAIR(_ZN7ee41060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee41060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee41060[];
+extern void _ZN7ee410603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee410603barEv,_ZTv0_n12_N7ee410603barEv)();
+extern void ABISELECT(_ZThn16_N7ee410603barEv,_ZThn12_N7ee410603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee41060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee41060[0]),
+  (VTBL_ENTRY)&_ZN7ee410603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee41060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee410603barEv,_ZTv0_n12_N7ee410603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee41060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee41060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee41060[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee41060[] = {
+  {&(_ZTV7ee41060[3]),  3,10},
+  {&(_tg__ZTV6dd1060__7ee41060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee41060[4]),  4,6},
+  {&(_ZTV7ee41060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee41060[];
+extern  VTBL_ENTRY _ZTV7ee41060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee41060[];
+static VTBL_ENTRY alt_thunk_names6[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee410603barEv,_ZTv0_n12_N7ee410603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee410603barEv,_ZThn12_N7ee410603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee41060 = {  "ee41060", // class name
+  bases_ee41060, 4,
+  &(vtc_ee41060[0]), // expected_vtbl_contents
+  &(vtt_ee41060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee41060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee41060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee41060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names6,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee51060  : virtual dd1060 {
+  int e;
+  virtual void  bar(); // _ZN7ee510603barEv
+  ~ee51060(); // tgen
+  ee51060(); // tgen
+};
+//SIG(1 ee51060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee51060 ::bar(){vfunc_called(this, "_ZN7ee510603barEv");}
+ee51060 ::~ee51060(){ note_dtor("ee51060", this);} // tgen
+ee51060 ::ee51060(){ note_ctor("ee51060", this);} // tgen
+
+static void Test_ee51060()
+{
+  extern Class_Descriptor cd_ee51060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee51060, buf);
+    ee51060 *dp, &lv = *(dp=new (buf) ee51060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee51060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee51060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee51060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee51060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(32,16), "ee51060");
+    check_base_class_offset(lv, (dd1060*), ABISELECT(16,8), "ee51060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee51060.e");
+    test_class_info(&lv, &cd_ee51060);
+    dp->~ee51060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee51060(Test_ee51060, "ee51060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee51060C1Ev();
+extern void _ZN7ee51060D1Ev();
+Name_Map name_map_ee51060[] = {
+  NSPAIR(_ZN7ee51060C1Ev),
+  NSPAIR(_ZN7ee51060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee51060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee51060[];
+extern void _ZN7ee510603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee510603barEv,_ZTv0_n12_N7ee510603barEv)();
+extern void ABISELECT(_ZThn32_N7ee510603barEv,_ZThn16_N7ee510603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee51060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee51060[0]),
+  (VTBL_ENTRY)&_ZN7ee510603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee51060[0]),
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee51060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee510603barEv,_ZTv0_n12_N7ee510603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee51060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee51060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee51060[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee51060[] = {
+  {&(_ZTV7ee51060[4]),  4,14},
+  {&(_ZTV7ee51060[8]),  8,14},
+  {&(_ZTV7ee51060[12]),  12,14},
+  {&(_tg__ZTV6dd1060__7ee51060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee51060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee51060[];
+extern  VTBL_ENTRY _ZTV7ee51060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee51060[];
+static VTBL_ENTRY alt_thunk_names7[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee510603barEv,_ZTv0_n12_N7ee510603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee510603barEv,_ZThn16_N7ee510603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee51060 = {  "ee51060", // class name
+  bases_ee51060, 4,
+  &(vtc_ee51060[0]), // expected_vtbl_contents
+  &(vtt_ee51060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee51060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee51060),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee51060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names7,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee61060  : dd1060 {
+  int e;
+  virtual void  foo(); // _ZN7ee610603fooEv
+  virtual void  bar(); // _ZN7ee610603barEv
+  ~ee61060(); // tgen
+  ee61060(); // tgen
+};
+//SIG(1 ee61060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee61060 ::foo(){vfunc_called(this, "_ZN7ee610603fooEv");}
+void  ee61060 ::bar(){vfunc_called(this, "_ZN7ee610603barEv");}
+ee61060 ::~ee61060(){ note_dtor("ee61060", this);} // tgen
+ee61060 ::ee61060(){ note_ctor("ee61060", this);} // tgen
+
+static void Test_ee61060()
+{
+  extern Class_Descriptor cd_ee61060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee61060, buf);
+    ee61060 *dp, &lv = *(dp=new (buf) ee61060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee61060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee61060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee61060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee61060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(16,12), "ee61060");
+    check_base_class_offset(lv, (dd1060*), 0, "ee61060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee61060.e");
+    test_class_info(&lv, &cd_ee61060);
+    dp->~ee61060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee61060(Test_ee61060, "ee61060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee61060C1Ev();
+extern void _ZN7ee61060D1Ev();
+Name_Map name_map_ee61060[] = {
+  NSPAIR(_ZN7ee61060C1Ev),
+  NSPAIR(_ZN7ee61060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee61060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee61060[];
+extern void _ZN7ee610603fooEv();
+extern void _ZN7ee610603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee610603barEv,_ZTv0_n12_N7ee610603barEv)();
+extern void ABISELECT(_ZThn16_N7ee610603barEv,_ZThn12_N7ee610603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee610603fooEv,_ZTv0_n16_N7ee610603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee610603fooEv,_ZThn12_N7ee610603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee61060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee61060[0]),
+  (VTBL_ENTRY)&_ZN7ee610603fooEv,
+  (VTBL_ENTRY)&_ZN7ee610603barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee61060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee610603barEv,_ZTv0_n12_N7ee610603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee610603fooEv,_ZTv0_n16_N7ee610603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee61060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee61060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee61060[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee61060[] = {
+  {&(_ZTV7ee61060[3]),  3,11},
+  {&(_tg__ZTV6dd1060__7ee61060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee61060[4]),  4,6},
+  {&(_ZTV7ee61060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee61060[];
+extern  VTBL_ENTRY _ZTV7ee61060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee61060[];
+static VTBL_ENTRY alt_thunk_names8[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee610603fooEv,_ZTv0_n16_N7ee610603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee610603fooEv,_ZThn12_N7ee610603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee610603barEv,_ZTv0_n12_N7ee610603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee610603barEv,_ZThn12_N7ee610603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee61060 = {  "ee61060", // class name
+  bases_ee61060, 4,
+  &(vtc_ee61060[0]), // expected_vtbl_contents
+  &(vtt_ee61060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee61060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee61060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee61060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names8,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee71060  : virtual dd1060 {
+  int e;
+  virtual void  foo(); // _ZN7ee710603fooEv
+  virtual void  bar(); // _ZN7ee710603barEv
+  ~ee71060(); // tgen
+  ee71060(); // tgen
+};
+//SIG(1 ee71060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee71060 ::foo(){vfunc_called(this, "_ZN7ee710603fooEv");}
+void  ee71060 ::bar(){vfunc_called(this, "_ZN7ee710603barEv");}
+ee71060 ::~ee71060(){ note_dtor("ee71060", this);} // tgen
+ee71060 ::ee71060(){ note_ctor("ee71060", this);} // tgen
+
+static void Test_ee71060()
+{
+  extern Class_Descriptor cd_ee71060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee71060, buf);
+    ee71060 *dp, &lv = *(dp=new (buf) ee71060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee71060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee71060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee71060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee71060");
+    check_base_class_offset(lv, (cc060*)(dd1060*), ABISELECT(32,16), "ee71060");
+    check_base_class_offset(lv, (dd1060*), ABISELECT(16,8), "ee71060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee71060.e");
+    test_class_info(&lv, &cd_ee71060);
+    dp->~ee71060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee71060(Test_ee71060, "ee71060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee71060C1Ev();
+extern void _ZN7ee71060D1Ev();
+Name_Map name_map_ee71060[] = {
+  NSPAIR(_ZN7ee71060C1Ev),
+  NSPAIR(_ZN7ee71060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd1060;
+extern VTBL_ENTRY _ZTI6dd1060[];
+extern  VTBL_ENTRY _ZTV6dd1060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1060[];
+static Base_Class bases_ee71060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1060,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee71060[];
+extern void _ZN7ee710603fooEv();
+extern void _ZN7ee710603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee710603barEv,_ZTv0_n12_N7ee710603barEv)();
+extern void ABISELECT(_ZThn32_N7ee710603barEv,_ZThn16_N7ee710603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee710603fooEv,_ZTv0_n16_N7ee710603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee710603fooEv,_ZThn16_N7ee710603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee71060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee71060[0]),
+  (VTBL_ENTRY)&_ZN7ee710603fooEv,
+  (VTBL_ENTRY)&_ZN7ee710603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee71060[0]),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee71060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee710603barEv,_ZTv0_n12_N7ee710603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee710603fooEv,_ZTv0_n16_N7ee710603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee71060[];
+static  VTBL_ENTRY _tg__ZTV6dd1060__7ee71060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd1060__7ee71060[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee71060[] = {
+  {&(_ZTV7ee71060[4]),  4,15},
+  {&(_ZTV7ee71060[9]),  9,15},
+  {&(_ZTV7ee71060[13]),  13,15},
+  {&(_tg__ZTV6dd1060__7ee71060[3]),  3,3},
+  {&(_tg__ZTV4bb605cc060__6dd1060__7ee71060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee71060[];
+extern  VTBL_ENTRY _ZTV7ee71060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee71060[];
+static VTBL_ENTRY alt_thunk_names9[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee710603fooEv,_ZTv0_n16_N7ee710603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee710603fooEv,_ZThn16_N7ee710603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee710603barEv,_ZTv0_n12_N7ee710603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee710603barEv,_ZThn16_N7ee710603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee71060 = {  "ee71060", // class name
+  bases_ee71060, 4,
+  &(vtc_ee71060[0]), // expected_vtbl_contents
+  &(vtt_ee71060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee71060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee71060),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee71060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names9,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd2060  : cc060 {
+  int d;
+  virtual void  foo(); // _ZN6dd20603fooEv
+  ~dd2060(); // tgen
+  dd2060(); // tgen
+};
+//SIG(-1 dd2060) C1{ BC2{ BC3{ BC4{ Fi} v2 v1 Fi} Fi} v1 Fi}
+
+
+void  dd2060 ::foo(){vfunc_called(this, "_ZN6dd20603fooEv");}
+dd2060 ::~dd2060(){ note_dtor("dd2060", this);} // tgen
+dd2060 ::dd2060(){ note_ctor("dd2060", this);} // tgen
+
+static void Test_dd2060()
+{
+  extern Class_Descriptor cd_dd2060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,6)];
+    init_test(&cd_dd2060, buf);
+    dd2060 *dp, &lv = *(dp=new (buf) dd2060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,20), "sizeof(dd2060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd2060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(8,4), "dd2060");
+    check_base_class_offset(lv, (bb60*)(cc060*), 0, "dd2060");
+    check_base_class_offset(lv, (cc060*), 0, "dd2060");
+    check_field_offset(lv, d, ABISELECT(20,16), "dd2060.d");
+    test_class_info(&lv, &cd_dd2060);
+    dp->~dd2060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd2060(Test_dd2060, "dd2060", ABISELECT(24,20));
+
+#else // __cplusplus
+
+extern void _ZN6dd2060C1Ev();
+extern void _ZN6dd2060D1Ev();
+Name_Map name_map_dd2060[] = {
+  NSPAIR(_ZN6dd2060C1Ev),
+  NSPAIR(_ZN6dd2060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd2060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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 _ZTI6dd2060[];
+extern void _ZN4bb603barEv();
+extern void _ZN6dd20603fooEv();
+static  VTBL_ENTRY vtc_dd2060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN6dd20603fooEv,
+};
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+Class_Descriptor cd_dd2060 = {  "dd2060", // class name
+  bases_dd2060, 3,
+  &(vtc_dd2060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,20), // object size
+  NSPAIRA(_ZTI6dd2060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd2060),4, //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
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee02060  : dd2060 {
+  int e;
+  ~ee02060(); // tgen
+  ee02060(); // tgen
+};
+//SIG(1 ee02060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee02060 ::~ee02060(){ note_dtor("ee02060", this);} // tgen
+ee02060 ::ee02060(){ note_ctor("ee02060", this);} // tgen
+
+static void Test_ee02060()
+{
+  extern Class_Descriptor cd_ee02060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee02060, buf);
+    ee02060 *dp, &lv = *(dp=new (buf) ee02060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee02060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee02060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(8,4), "ee02060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), 0, "ee02060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), 0, "ee02060");
+    check_base_class_offset(lv, (dd2060*), 0, "ee02060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee02060.e");
+    test_class_info(&lv, &cd_ee02060);
+    dp->~ee02060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee02060(Test_ee02060, "ee02060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee02060C1Ev();
+extern void _ZN7ee02060D1Ev();
+Name_Map name_map_ee02060[] = {
+  NSPAIR(_ZN7ee02060C1Ev),
+  NSPAIR(_ZN7ee02060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee02060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    0, //bcp->offset
+    0, //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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee02060[];
+extern void _ZN4bb603barEv();
+extern void _ZN6dd20603fooEv();
+static  VTBL_ENTRY vtc_ee02060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee02060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN6dd20603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee02060[];
+extern  VTBL_ENTRY _ZTV7ee02060[];
+Class_Descriptor cd_ee02060 = {  "ee02060", // class name
+  bases_ee02060, 4,
+  &(vtc_ee02060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee02060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee02060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee12060  : virtual dd2060 {
+  int e;
+  ~ee12060(); // tgen
+  ee12060(); // tgen
+};
+//SIG(1 ee12060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee12060 ::~ee12060(){ note_dtor("ee12060", this);} // tgen
+ee12060 ::ee12060(){ note_ctor("ee12060", this);} // tgen
+
+static void Test_ee12060()
+{
+  extern Class_Descriptor cd_ee12060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee12060, buf);
+    ee12060 *dp, &lv = *(dp=new (buf) ee12060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee12060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee12060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(24,12), "ee12060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), ABISELECT(16,8), "ee12060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), ABISELECT(16,8), "ee12060");
+    check_base_class_offset(lv, (dd2060*), ABISELECT(16,8), "ee12060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee12060.e");
+    test_class_info(&lv, &cd_ee12060);
+    dp->~ee12060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee12060(Test_ee12060, "ee12060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee12060C1Ev();
+extern void _ZN7ee12060D1Ev();
+Name_Map name_map_ee12060[] = {
+  NSPAIR(_ZN7ee12060C1Ev),
+  NSPAIR(_ZN7ee12060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee12060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee12060[];
+extern void _ZN4bb603barEv();
+extern void _ZN6dd20603fooEv();
+static  VTBL_ENTRY vtc_ee12060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee12060[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee12060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN6dd20603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee12060[];
+static  VTT_ENTRY vtt_ee12060[] = {
+  {&(_ZTV7ee12060[3]),  3,9},
+  {&(_ZTV7ee12060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee12060[];
+extern  VTBL_ENTRY _ZTV7ee12060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee12060[];
+Class_Descriptor cd_ee12060 = {  "ee12060", // class name
+  bases_ee12060, 4,
+  &(vtc_ee12060[0]), // expected_vtbl_contents
+  &(vtt_ee12060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee12060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee12060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee12060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee22060  : dd2060 {
+  int e;
+  virtual void  foo(); // _ZN7ee220603fooEv
+  ~ee22060(); // tgen
+  ee22060(); // tgen
+};
+//SIG(1 ee22060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee22060 ::foo(){vfunc_called(this, "_ZN7ee220603fooEv");}
+ee22060 ::~ee22060(){ note_dtor("ee22060", this);} // tgen
+ee22060 ::ee22060(){ note_ctor("ee22060", this);} // tgen
+
+static void Test_ee22060()
+{
+  extern Class_Descriptor cd_ee22060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee22060, buf);
+    ee22060 *dp, &lv = *(dp=new (buf) ee22060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee22060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee22060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(8,4), "ee22060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), 0, "ee22060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), 0, "ee22060");
+    check_base_class_offset(lv, (dd2060*), 0, "ee22060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee22060.e");
+    test_class_info(&lv, &cd_ee22060);
+    dp->~ee22060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee22060(Test_ee22060, "ee22060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee22060C1Ev();
+extern void _ZN7ee22060D1Ev();
+Name_Map name_map_ee22060[] = {
+  NSPAIR(_ZN7ee22060C1Ev),
+  NSPAIR(_ZN7ee22060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee22060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee22060[];
+extern void _ZN4bb603barEv();
+extern void _ZN7ee220603fooEv();
+static  VTBL_ENTRY vtc_ee22060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee22060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN7ee220603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee22060[];
+extern  VTBL_ENTRY _ZTV7ee22060[];
+Class_Descriptor cd_ee22060 = {  "ee22060", // class name
+  bases_ee22060, 4,
+  &(vtc_ee22060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee22060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee22060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee32060  : virtual dd2060 {
+  int e;
+  virtual void  foo(); // _ZN7ee320603fooEv
+  ~ee32060(); // tgen
+  ee32060(); // tgen
+};
+//SIG(1 ee32060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee32060 ::foo(){vfunc_called(this, "_ZN7ee320603fooEv");}
+ee32060 ::~ee32060(){ note_dtor("ee32060", this);} // tgen
+ee32060 ::ee32060(){ note_ctor("ee32060", this);} // tgen
+
+static void Test_ee32060()
+{
+  extern Class_Descriptor cd_ee32060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee32060, buf);
+    ee32060 *dp, &lv = *(dp=new (buf) ee32060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee32060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee32060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(24,12), "ee32060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), ABISELECT(16,8), "ee32060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), ABISELECT(16,8), "ee32060");
+    check_base_class_offset(lv, (dd2060*), ABISELECT(16,8), "ee32060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee32060.e");
+    test_class_info(&lv, &cd_ee32060);
+    dp->~ee32060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee32060(Test_ee32060, "ee32060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee32060C1Ev();
+extern void _ZN7ee32060D1Ev();
+Name_Map name_map_ee32060[] = {
+  NSPAIR(_ZN7ee32060C1Ev),
+  NSPAIR(_ZN7ee32060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee32060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee32060[];
+extern void _ZN7ee320603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee320603fooEv,_ZTv0_n16_N7ee320603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee320603fooEv,_ZThn8_N7ee320603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee32060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee32060[0]),
+  (VTBL_ENTRY)&_ZN7ee320603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee32060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee320603fooEv,_ZTv0_n16_N7ee320603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee32060[];
+static  VTT_ENTRY vtt_ee32060[] = {
+  {&(_ZTV7ee32060[3]),  3,10},
+  {&(_ZTV7ee32060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee32060[];
+extern  VTBL_ENTRY _ZTV7ee32060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee32060[];
+static VTBL_ENTRY alt_thunk_names10[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee320603fooEv,_ZTv0_n16_N7ee320603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee320603fooEv,_ZThn8_N7ee320603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee32060 = {  "ee32060", // class name
+  bases_ee32060, 4,
+  &(vtc_ee32060[0]), // expected_vtbl_contents
+  &(vtt_ee32060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee32060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee32060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee32060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names10,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee42060  : dd2060 {
+  int e;
+  virtual void  bar(); // _ZN7ee420603barEv
+  ~ee42060(); // tgen
+  ee42060(); // tgen
+};
+//SIG(1 ee42060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee42060 ::bar(){vfunc_called(this, "_ZN7ee420603barEv");}
+ee42060 ::~ee42060(){ note_dtor("ee42060", this);} // tgen
+ee42060 ::ee42060(){ note_ctor("ee42060", this);} // tgen
+
+static void Test_ee42060()
+{
+  extern Class_Descriptor cd_ee42060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee42060, buf);
+    ee42060 *dp, &lv = *(dp=new (buf) ee42060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee42060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee42060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(8,4), "ee42060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), 0, "ee42060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), 0, "ee42060");
+    check_base_class_offset(lv, (dd2060*), 0, "ee42060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee42060.e");
+    test_class_info(&lv, &cd_ee42060);
+    dp->~ee42060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee42060(Test_ee42060, "ee42060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee42060C1Ev();
+extern void _ZN7ee42060D1Ev();
+Name_Map name_map_ee42060[] = {
+  NSPAIR(_ZN7ee42060C1Ev),
+  NSPAIR(_ZN7ee42060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee42060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee42060[];
+extern void _ZN7ee420603barEv();
+extern void _ZN6dd20603fooEv();
+static  VTBL_ENTRY vtc_ee42060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee42060[0]),
+  (VTBL_ENTRY)&_ZN7ee420603barEv,
+  (VTBL_ENTRY)&_ZN6dd20603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee42060[];
+extern  VTBL_ENTRY _ZTV7ee42060[];
+Class_Descriptor cd_ee42060 = {  "ee42060", // class name
+  bases_ee42060, 4,
+  &(vtc_ee42060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee42060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee42060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee52060  : virtual dd2060 {
+  int e;
+  virtual void  bar(); // _ZN7ee520603barEv
+  ~ee52060(); // tgen
+  ee52060(); // tgen
+};
+//SIG(1 ee52060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee52060 ::bar(){vfunc_called(this, "_ZN7ee520603barEv");}
+ee52060 ::~ee52060(){ note_dtor("ee52060", this);} // tgen
+ee52060 ::ee52060(){ note_ctor("ee52060", this);} // tgen
+
+static void Test_ee52060()
+{
+  extern Class_Descriptor cd_ee52060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee52060, buf);
+    ee52060 *dp, &lv = *(dp=new (buf) ee52060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee52060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee52060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(24,12), "ee52060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), ABISELECT(16,8), "ee52060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), ABISELECT(16,8), "ee52060");
+    check_base_class_offset(lv, (dd2060*), ABISELECT(16,8), "ee52060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee52060.e");
+    test_class_info(&lv, &cd_ee52060);
+    dp->~ee52060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee52060(Test_ee52060, "ee52060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee52060C1Ev();
+extern void _ZN7ee52060D1Ev();
+Name_Map name_map_ee52060[] = {
+  NSPAIR(_ZN7ee52060C1Ev),
+  NSPAIR(_ZN7ee52060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee52060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee52060[];
+extern void _ZN7ee520603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee520603barEv,_ZTv0_n12_N7ee520603barEv)();
+extern void ABISELECT(_ZThn16_N7ee520603barEv,_ZThn8_N7ee520603barEv)() __attribute__((weak));
+extern void _ZN6dd20603fooEv();
+static  VTBL_ENTRY vtc_ee52060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee52060[0]),
+  (VTBL_ENTRY)&_ZN7ee520603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee52060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee520603barEv,_ZTv0_n12_N7ee520603barEv),
+  (VTBL_ENTRY)&_ZN6dd20603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee52060[];
+static  VTT_ENTRY vtt_ee52060[] = {
+  {&(_ZTV7ee52060[3]),  3,10},
+  {&(_ZTV7ee52060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee52060[];
+extern  VTBL_ENTRY _ZTV7ee52060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee52060[];
+static VTBL_ENTRY alt_thunk_names11[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee520603barEv,_ZTv0_n12_N7ee520603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee520603barEv,_ZThn8_N7ee520603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee52060 = {  "ee52060", // class name
+  bases_ee52060, 4,
+  &(vtc_ee52060[0]), // expected_vtbl_contents
+  &(vtt_ee52060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee52060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee52060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee52060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names11,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee62060  : dd2060 {
+  int e;
+  virtual void  foo(); // _ZN7ee620603fooEv
+  virtual void  bar(); // _ZN7ee620603barEv
+  ~ee62060(); // tgen
+  ee62060(); // tgen
+};
+//SIG(1 ee62060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee62060 ::foo(){vfunc_called(this, "_ZN7ee620603fooEv");}
+void  ee62060 ::bar(){vfunc_called(this, "_ZN7ee620603barEv");}
+ee62060 ::~ee62060(){ note_dtor("ee62060", this);} // tgen
+ee62060 ::ee62060(){ note_ctor("ee62060", this);} // tgen
+
+static void Test_ee62060()
+{
+  extern Class_Descriptor cd_ee62060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee62060, buf);
+    ee62060 *dp, &lv = *(dp=new (buf) ee62060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee62060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee62060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(8,4), "ee62060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), 0, "ee62060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), 0, "ee62060");
+    check_base_class_offset(lv, (dd2060*), 0, "ee62060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee62060.e");
+    test_class_info(&lv, &cd_ee62060);
+    dp->~ee62060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee62060(Test_ee62060, "ee62060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee62060C1Ev();
+extern void _ZN7ee62060D1Ev();
+Name_Map name_map_ee62060[] = {
+  NSPAIR(_ZN7ee62060C1Ev),
+  NSPAIR(_ZN7ee62060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee62060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee62060[];
+extern void _ZN7ee620603barEv();
+extern void _ZN7ee620603fooEv();
+static  VTBL_ENTRY vtc_ee62060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee62060[0]),
+  (VTBL_ENTRY)&_ZN7ee620603barEv,
+  (VTBL_ENTRY)&_ZN7ee620603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee62060[];
+extern  VTBL_ENTRY _ZTV7ee62060[];
+Class_Descriptor cd_ee62060 = {  "ee62060", // class name
+  bases_ee62060, 4,
+  &(vtc_ee62060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee62060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee62060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee72060  : virtual dd2060 {
+  int e;
+  virtual void  foo(); // _ZN7ee720603fooEv
+  virtual void  bar(); // _ZN7ee720603barEv
+  ~ee72060(); // tgen
+  ee72060(); // tgen
+};
+//SIG(1 ee72060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee72060 ::foo(){vfunc_called(this, "_ZN7ee720603fooEv");}
+void  ee72060 ::bar(){vfunc_called(this, "_ZN7ee720603barEv");}
+ee72060 ::~ee72060(){ note_dtor("ee72060", this);} // tgen
+ee72060 ::ee72060(){ note_ctor("ee72060", this);} // tgen
+
+static void Test_ee72060()
+{
+  extern Class_Descriptor cd_ee72060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee72060, buf);
+    ee72060 *dp, &lv = *(dp=new (buf) ee72060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee72060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee72060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd2060*), ABISELECT(24,12), "ee72060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd2060*), ABISELECT(16,8), "ee72060");
+    check_base_class_offset(lv, (cc060*)(dd2060*), ABISELECT(16,8), "ee72060");
+    check_base_class_offset(lv, (dd2060*), ABISELECT(16,8), "ee72060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee72060.e");
+    test_class_info(&lv, &cd_ee72060);
+    dp->~ee72060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee72060(Test_ee72060, "ee72060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee72060C1Ev();
+extern void _ZN7ee72060D1Ev();
+Name_Map name_map_ee72060[] = {
+  NSPAIR(_ZN7ee72060C1Ev),
+  NSPAIR(_ZN7ee72060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd2060;
+extern VTBL_ENTRY _ZTI6dd2060[];
+extern  VTBL_ENTRY _ZTV6dd2060[];
+static Base_Class bases_ee72060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee72060[];
+extern void _ZN7ee720603fooEv();
+extern void _ZN7ee720603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee720603barEv,_ZTv0_n12_N7ee720603barEv)();
+extern void ABISELECT(_ZThn16_N7ee720603barEv,_ZThn8_N7ee720603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee720603fooEv,_ZTv0_n16_N7ee720603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee720603fooEv,_ZThn8_N7ee720603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee72060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee72060[0]),
+  (VTBL_ENTRY)&_ZN7ee720603fooEv,
+  (VTBL_ENTRY)&_ZN7ee720603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee72060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee720603barEv,_ZTv0_n12_N7ee720603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee720603fooEv,_ZTv0_n16_N7ee720603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee72060[];
+static  VTT_ENTRY vtt_ee72060[] = {
+  {&(_ZTV7ee72060[3]),  3,11},
+  {&(_ZTV7ee72060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee72060[];
+extern  VTBL_ENTRY _ZTV7ee72060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee72060[];
+static VTBL_ENTRY alt_thunk_names12[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee720603fooEv,_ZTv0_n16_N7ee720603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee720603fooEv,_ZThn8_N7ee720603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee720603barEv,_ZTv0_n12_N7ee720603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee720603barEv,_ZThn8_N7ee720603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee72060 = {  "ee72060", // class name
+  bases_ee72060, 4,
+  &(vtc_ee72060[0]), // expected_vtbl_contents
+  &(vtt_ee72060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee72060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee72060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee72060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names12,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd3060  : virtual cc060 {
+  int d;
+  virtual void  foo(); // _ZN6dd30603fooEv
+  ~dd3060(); // tgen
+  dd3060(); // tgen
+};
+//SIG(-1 dd3060) C1{ VBC2{ BC3{ BC4{ Fi} v2 v1 Fi} Fi} v1 Fi}
+
+
+void  dd3060 ::foo(){vfunc_called(this, "_ZN6dd30603fooEv");}
+dd3060 ::~dd3060(){ note_dtor("dd3060", this);} // tgen
+dd3060 ::dd3060(){ note_ctor("dd3060", this);} // tgen
+
+static void Test_dd3060()
+{
+  extern Class_Descriptor cd_dd3060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,7)];
+    init_test(&cd_dd3060, buf);
+    dd3060 *dp, &lv = *(dp=new (buf) dd3060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,24), "sizeof(dd3060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd3060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,12), "dd3060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,8), "dd3060");
+    check_base_class_offset(lv, (cc060*), ABISELECT(16,8), "dd3060");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd3060.d");
+    test_class_info(&lv, &cd_dd3060);
+    dp->~dd3060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd3060(Test_dd3060, "dd3060", ABISELECT(40,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd3060C1Ev();
+extern void _ZN6dd3060D1Ev();
+Name_Map name_map_dd3060[] = {
+  NSPAIR(_ZN6dd3060C1Ev),
+  NSPAIR(_ZN6dd3060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd3060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern void _ZN6dd30603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd3060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd3060[];
+static  VTT_ENTRY vtt_dd3060[] = {
+  {&(_ZTV6dd3060[3]),  3,10},
+  {&(_ZTV6dd3060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static VTBL_ENTRY alt_thunk_names13[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd3060 = {  "dd3060", // class name
+  bases_dd3060, 3,
+  &(vtc_dd3060[0]), // expected_vtbl_contents
+  &(vtt_dd3060[0]), // expected_vtt_contents
+  ABISELECT(40,24), // object size
+  NSPAIRA(_ZTI6dd3060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd3060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd3060),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names13,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee03060  : dd3060 {
+  int e;
+  ~ee03060(); // tgen
+  ee03060(); // tgen
+};
+//SIG(1 ee03060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee03060 ::~ee03060(){ note_dtor("ee03060", this);} // tgen
+ee03060 ::ee03060(){ note_ctor("ee03060", this);} // tgen
+
+static void Test_ee03060()
+{
+  extern Class_Descriptor cd_ee03060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee03060, buf);
+    ee03060 *dp, &lv = *(dp=new (buf) ee03060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee03060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee03060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee03060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee03060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(16,12), "ee03060");
+    check_base_class_offset(lv, (dd3060*), 0, "ee03060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee03060.e");
+    test_class_info(&lv, &cd_ee03060);
+    dp->~ee03060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee03060(Test_ee03060, "ee03060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee03060C1Ev();
+extern void _ZN7ee03060D1Ev();
+Name_Map name_map_ee03060[] = {
+  NSPAIR(_ZN7ee03060C1Ev),
+  NSPAIR(_ZN7ee03060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee03060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee03060[];
+extern void _ZN6dd30603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee03060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee03060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee03060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee03060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee03060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee03060[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee03060[] = {
+  {&(_ZTV7ee03060[3]),  3,10},
+  {&(_tg__ZTV6dd3060__7ee03060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee03060[4]),  4,6},
+  {&(_ZTV7ee03060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee03060[];
+extern  VTBL_ENTRY _ZTV7ee03060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee03060[];
+static VTBL_ENTRY alt_thunk_names14[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee03060 = {  "ee03060", // class name
+  bases_ee03060, 4,
+  &(vtc_ee03060[0]), // expected_vtbl_contents
+  &(vtt_ee03060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee03060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee03060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee03060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names14,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee13060  : virtual dd3060 {
+  int e;
+  ~ee13060(); // tgen
+  ee13060(); // tgen
+};
+//SIG(1 ee13060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee13060 ::~ee13060(){ note_dtor("ee13060", this);} // tgen
+ee13060 ::ee13060(){ note_ctor("ee13060", this);} // tgen
+
+static void Test_ee13060()
+{
+  extern Class_Descriptor cd_ee13060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee13060, buf);
+    ee13060 *dp, &lv = *(dp=new (buf) ee13060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee13060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee13060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee13060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee13060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(32,16), "ee13060");
+    check_base_class_offset(lv, (dd3060*), ABISELECT(16,8), "ee13060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee13060.e");
+    test_class_info(&lv, &cd_ee13060);
+    dp->~ee13060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee13060(Test_ee13060, "ee13060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee13060C1Ev();
+extern void _ZN7ee13060D1Ev();
+Name_Map name_map_ee13060[] = {
+  NSPAIR(_ZN7ee13060C1Ev),
+  NSPAIR(_ZN7ee13060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee13060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee13060[];
+extern void _ZN6dd30603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee13060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee13060[0]),
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee13060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee13060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee13060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee13060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee13060[] = {
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee13060[] = {
+  {&(_ZTV7ee13060[4]),  4,15},
+  {&(_ZTV7ee13060[8]),  8,15},
+  {&(_ZTV7ee13060[13]),  13,15},
+  {&(_tg__ZTV6dd3060__7ee13060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee13060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee13060[];
+extern  VTBL_ENTRY _ZTV7ee13060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee13060[];
+static VTBL_ENTRY alt_thunk_names15[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee13060 = {  "ee13060", // class name
+  bases_ee13060, 4,
+  &(vtc_ee13060[0]), // expected_vtbl_contents
+  &(vtt_ee13060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee13060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee13060),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee13060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names15,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee23060  : dd3060 {
+  int e;
+  virtual void  foo(); // _ZN7ee230603fooEv
+  ~ee23060(); // tgen
+  ee23060(); // tgen
+};
+//SIG(1 ee23060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee23060 ::foo(){vfunc_called(this, "_ZN7ee230603fooEv");}
+ee23060 ::~ee23060(){ note_dtor("ee23060", this);} // tgen
+ee23060 ::ee23060(){ note_ctor("ee23060", this);} // tgen
+
+static void Test_ee23060()
+{
+  extern Class_Descriptor cd_ee23060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee23060, buf);
+    ee23060 *dp, &lv = *(dp=new (buf) ee23060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee23060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee23060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee23060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee23060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(16,12), "ee23060");
+    check_base_class_offset(lv, (dd3060*), 0, "ee23060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee23060.e");
+    test_class_info(&lv, &cd_ee23060);
+    dp->~ee23060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee23060(Test_ee23060, "ee23060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee23060C1Ev();
+extern void _ZN7ee23060D1Ev();
+Name_Map name_map_ee23060[] = {
+  NSPAIR(_ZN7ee23060C1Ev),
+  NSPAIR(_ZN7ee23060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee23060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee23060[];
+extern void _ZN7ee230603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee230603fooEv,_ZTv0_n16_N7ee230603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee230603fooEv,_ZThn12_N7ee230603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee23060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee23060[0]),
+  (VTBL_ENTRY)&_ZN7ee230603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee23060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee230603fooEv,_ZTv0_n16_N7ee230603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee23060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee23060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee23060[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee23060[] = {
+  {&(_ZTV7ee23060[3]),  3,10},
+  {&(_tg__ZTV6dd3060__7ee23060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee23060[4]),  4,6},
+  {&(_ZTV7ee23060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee23060[];
+extern  VTBL_ENTRY _ZTV7ee23060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee23060[];
+static VTBL_ENTRY alt_thunk_names16[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee230603fooEv,_ZTv0_n16_N7ee230603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee230603fooEv,_ZThn12_N7ee230603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee23060 = {  "ee23060", // class name
+  bases_ee23060, 4,
+  &(vtc_ee23060[0]), // expected_vtbl_contents
+  &(vtt_ee23060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee23060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee23060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee23060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names16,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee33060  : virtual dd3060 {
+  int e;
+  virtual void  foo(); // _ZN7ee330603fooEv
+  ~ee33060(); // tgen
+  ee33060(); // tgen
+};
+//SIG(1 ee33060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee33060 ::foo(){vfunc_called(this, "_ZN7ee330603fooEv");}
+ee33060 ::~ee33060(){ note_dtor("ee33060", this);} // tgen
+ee33060 ::ee33060(){ note_ctor("ee33060", this);} // tgen
+
+static void Test_ee33060()
+{
+  extern Class_Descriptor cd_ee33060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee33060, buf);
+    ee33060 *dp, &lv = *(dp=new (buf) ee33060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee33060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee33060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee33060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee33060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(32,16), "ee33060");
+    check_base_class_offset(lv, (dd3060*), ABISELECT(16,8), "ee33060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee33060.e");
+    test_class_info(&lv, &cd_ee33060);
+    dp->~ee33060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee33060(Test_ee33060, "ee33060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee33060C1Ev();
+extern void _ZN7ee33060D1Ev();
+Name_Map name_map_ee33060[] = {
+  NSPAIR(_ZN7ee33060C1Ev),
+  NSPAIR(_ZN7ee33060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee33060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee33060[];
+extern void _ZN7ee330603fooEv();
+extern void ABISELECT(_ZTv0_n32_N7ee330603fooEv,_ZTv0_n16_N7ee330603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee330603fooEv,_ZThn8_N7ee330603fooEv)() __attribute__((weak));
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee330603fooEv,_ZTv0_n16_N7ee330603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee330603fooEv,_ZThn16_N7ee330603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee33060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee33060[0]),
+  (VTBL_ENTRY)&_ZN7ee330603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee33060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee330603fooEv,_ZTv0_n16_N7ee330603fooEv),
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee33060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee330603fooEv,_ZTv0_n16_N7ee330603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee33060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee33060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee33060[] = {
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee33060[] = {
+  {&(_ZTV7ee33060[4]),  4,16},
+  {&(_ZTV7ee33060[9]),  9,16},
+  {&(_ZTV7ee33060[14]),  14,16},
+  {&(_tg__ZTV6dd3060__7ee33060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee33060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee33060[];
+extern  VTBL_ENTRY _ZTV7ee33060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee33060[];
+static VTBL_ENTRY alt_thunk_names17[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee330603fooEv,_ZTv0_n16_N7ee330603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee330603fooEv,_ZThn16_N7ee330603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee330603fooEv,_ZThn8_N7ee330603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee33060 = {  "ee33060", // class name
+  bases_ee33060, 4,
+  &(vtc_ee33060[0]), // expected_vtbl_contents
+  &(vtt_ee33060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee33060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee33060),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee33060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names17,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee43060  : dd3060 {
+  int e;
+  virtual void  bar(); // _ZN7ee430603barEv
+  ~ee43060(); // tgen
+  ee43060(); // tgen
+};
+//SIG(1 ee43060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee43060 ::bar(){vfunc_called(this, "_ZN7ee430603barEv");}
+ee43060 ::~ee43060(){ note_dtor("ee43060", this);} // tgen
+ee43060 ::ee43060(){ note_ctor("ee43060", this);} // tgen
+
+static void Test_ee43060()
+{
+  extern Class_Descriptor cd_ee43060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee43060, buf);
+    ee43060 *dp, &lv = *(dp=new (buf) ee43060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee43060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee43060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee43060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee43060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(16,12), "ee43060");
+    check_base_class_offset(lv, (dd3060*), 0, "ee43060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee43060.e");
+    test_class_info(&lv, &cd_ee43060);
+    dp->~ee43060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee43060(Test_ee43060, "ee43060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee43060C1Ev();
+extern void _ZN7ee43060D1Ev();
+Name_Map name_map_ee43060[] = {
+  NSPAIR(_ZN7ee43060C1Ev),
+  NSPAIR(_ZN7ee43060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee43060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee43060[];
+extern void _ZN6dd30603fooEv();
+extern void _ZN7ee430603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee430603barEv,_ZTv0_n12_N7ee430603barEv)();
+extern void ABISELECT(_ZThn16_N7ee430603barEv,_ZThn12_N7ee430603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee43060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee43060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+  (VTBL_ENTRY)&_ZN7ee430603barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee43060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee430603barEv,_ZTv0_n12_N7ee430603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee43060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee43060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee43060[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee43060[] = {
+  {&(_ZTV7ee43060[3]),  3,11},
+  {&(_tg__ZTV6dd3060__7ee43060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee43060[4]),  4,6},
+  {&(_ZTV7ee43060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee43060[];
+extern  VTBL_ENTRY _ZTV7ee43060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee43060[];
+static VTBL_ENTRY alt_thunk_names18[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee430603barEv,_ZTv0_n12_N7ee430603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee430603barEv,_ZThn12_N7ee430603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee43060 = {  "ee43060", // class name
+  bases_ee43060, 4,
+  &(vtc_ee43060[0]), // expected_vtbl_contents
+  &(vtt_ee43060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee43060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee43060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee43060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names18,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee53060  : virtual dd3060 {
+  int e;
+  virtual void  bar(); // _ZN7ee530603barEv
+  ~ee53060(); // tgen
+  ee53060(); // tgen
+};
+//SIG(1 ee53060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee53060 ::bar(){vfunc_called(this, "_ZN7ee530603barEv");}
+ee53060 ::~ee53060(){ note_dtor("ee53060", this);} // tgen
+ee53060 ::ee53060(){ note_ctor("ee53060", this);} // tgen
+
+static void Test_ee53060()
+{
+  extern Class_Descriptor cd_ee53060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee53060, buf);
+    ee53060 *dp, &lv = *(dp=new (buf) ee53060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee53060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee53060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee53060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee53060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(32,16), "ee53060");
+    check_base_class_offset(lv, (dd3060*), ABISELECT(16,8), "ee53060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee53060.e");
+    test_class_info(&lv, &cd_ee53060);
+    dp->~ee53060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee53060(Test_ee53060, "ee53060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee53060C1Ev();
+extern void _ZN7ee53060D1Ev();
+Name_Map name_map_ee53060[] = {
+  NSPAIR(_ZN7ee53060C1Ev),
+  NSPAIR(_ZN7ee53060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee53060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee53060[];
+extern void _ZN7ee530603barEv();
+extern void _ZN6dd30603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee530603barEv,_ZTv0_n12_N7ee530603barEv)();
+extern void ABISELECT(_ZThn32_N7ee530603barEv,_ZThn16_N7ee530603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee53060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee53060[0]),
+  (VTBL_ENTRY)&_ZN7ee530603barEv,
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee53060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee53060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee530603barEv,_ZTv0_n12_N7ee530603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee53060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee53060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee53060[] = {
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee53060[] = {
+  {&(_ZTV7ee53060[4]),  4,16},
+  {&(_ZTV7ee53060[9]),  9,16},
+  {&(_ZTV7ee53060[14]),  14,16},
+  {&(_tg__ZTV6dd3060__7ee53060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee53060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee53060[];
+extern  VTBL_ENTRY _ZTV7ee53060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee53060[];
+static VTBL_ENTRY alt_thunk_names19[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee530603barEv,_ZTv0_n12_N7ee530603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee530603barEv,_ZThn16_N7ee530603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee53060 = {  "ee53060", // class name
+  bases_ee53060, 4,
+  &(vtc_ee53060[0]), // expected_vtbl_contents
+  &(vtt_ee53060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee53060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee53060),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee53060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names19,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee63060  : dd3060 {
+  int e;
+  virtual void  foo(); // _ZN7ee630603fooEv
+  virtual void  bar(); // _ZN7ee630603barEv
+  ~ee63060(); // tgen
+  ee63060(); // tgen
+};
+//SIG(1 ee63060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee63060 ::foo(){vfunc_called(this, "_ZN7ee630603fooEv");}
+void  ee63060 ::bar(){vfunc_called(this, "_ZN7ee630603barEv");}
+ee63060 ::~ee63060(){ note_dtor("ee63060", this);} // tgen
+ee63060 ::ee63060(){ note_ctor("ee63060", this);} // tgen
+
+static void Test_ee63060()
+{
+  extern Class_Descriptor cd_ee63060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee63060, buf);
+    ee63060 *dp, &lv = *(dp=new (buf) ee63060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee63060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee63060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee63060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee63060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(16,12), "ee63060");
+    check_base_class_offset(lv, (dd3060*), 0, "ee63060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee63060.e");
+    test_class_info(&lv, &cd_ee63060);
+    dp->~ee63060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee63060(Test_ee63060, "ee63060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee63060C1Ev();
+extern void _ZN7ee63060D1Ev();
+Name_Map name_map_ee63060[] = {
+  NSPAIR(_ZN7ee63060C1Ev),
+  NSPAIR(_ZN7ee63060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee63060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee63060[];
+extern void _ZN7ee630603fooEv();
+extern void _ZN7ee630603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee630603barEv,_ZTv0_n12_N7ee630603barEv)();
+extern void ABISELECT(_ZThn16_N7ee630603barEv,_ZThn12_N7ee630603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee630603fooEv,_ZTv0_n16_N7ee630603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee630603fooEv,_ZThn12_N7ee630603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee63060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee63060[0]),
+  (VTBL_ENTRY)&_ZN7ee630603fooEv,
+  (VTBL_ENTRY)&_ZN7ee630603barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee63060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee630603barEv,_ZTv0_n12_N7ee630603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee630603fooEv,_ZTv0_n16_N7ee630603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee63060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee63060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee63060[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee63060[] = {
+  {&(_ZTV7ee63060[3]),  3,11},
+  {&(_tg__ZTV6dd3060__7ee63060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee63060[4]),  4,6},
+  {&(_ZTV7ee63060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee63060[];
+extern  VTBL_ENTRY _ZTV7ee63060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee63060[];
+static VTBL_ENTRY alt_thunk_names20[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn12_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee630603fooEv,_ZTv0_n16_N7ee630603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee630603fooEv,_ZThn12_N7ee630603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee630603barEv,_ZTv0_n12_N7ee630603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee630603barEv,_ZThn12_N7ee630603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee63060 = {  "ee63060", // class name
+  bases_ee63060, 4,
+  &(vtc_ee63060[0]), // expected_vtbl_contents
+  &(vtt_ee63060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee63060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee63060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee63060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names20,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee73060  : virtual dd3060 {
+  int e;
+  virtual void  foo(); // _ZN7ee730603fooEv
+  virtual void  bar(); // _ZN7ee730603barEv
+  ~ee73060(); // tgen
+  ee73060(); // tgen
+};
+//SIG(1 ee73060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee73060 ::foo(){vfunc_called(this, "_ZN7ee730603fooEv");}
+void  ee73060 ::bar(){vfunc_called(this, "_ZN7ee730603barEv");}
+ee73060 ::~ee73060(){ note_dtor("ee73060", this);} // tgen
+ee73060 ::ee73060(){ note_ctor("ee73060", this);} // tgen
+
+static void Test_ee73060()
+{
+  extern Class_Descriptor cd_ee73060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee73060, buf);
+    ee73060 *dp, &lv = *(dp=new (buf) ee73060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee73060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee73060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee73060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee73060");
+    check_base_class_offset(lv, (cc060*)(dd3060*), ABISELECT(32,16), "ee73060");
+    check_base_class_offset(lv, (dd3060*), ABISELECT(16,8), "ee73060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee73060.e");
+    test_class_info(&lv, &cd_ee73060);
+    dp->~ee73060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee73060(Test_ee73060, "ee73060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee73060C1Ev();
+extern void _ZN7ee73060D1Ev();
+Name_Map name_map_ee73060[] = {
+  NSPAIR(_ZN7ee73060C1Ev),
+  NSPAIR(_ZN7ee73060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd3060;
+extern VTBL_ENTRY _ZTI6dd3060[];
+extern  VTBL_ENTRY _ZTV6dd3060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3060[];
+static Base_Class bases_ee73060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3060,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee73060[];
+extern void _ZN7ee730603fooEv();
+extern void _ZN7ee730603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee730603fooEv,_ZTv0_n16_N7ee730603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee730603fooEv,_ZThn8_N7ee730603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee730603barEv,_ZTv0_n12_N7ee730603barEv)();
+extern void ABISELECT(_ZThn32_N7ee730603barEv,_ZThn16_N7ee730603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee730603fooEv,_ZTv0_n16_N7ee730603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee730603fooEv,_ZThn16_N7ee730603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee73060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee73060[0]),
+  (VTBL_ENTRY)&_ZN7ee730603fooEv,
+  (VTBL_ENTRY)&_ZN7ee730603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee73060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee730603fooEv,_ZTv0_n16_N7ee730603fooEv),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee73060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee730603barEv,_ZTv0_n12_N7ee730603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee730603fooEv,_ZTv0_n16_N7ee730603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee73060[];
+extern void _ZN6dd30603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3060__7ee73060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN6dd30603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd3060__7ee73060[] = {
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3060[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv),
+};
+static  VTT_ENTRY vtt_ee73060[] = {
+  {&(_ZTV7ee73060[4]),  4,17},
+  {&(_ZTV7ee73060[10]),  10,17},
+  {&(_ZTV7ee73060[15]),  15,17},
+  {&(_tg__ZTV6dd3060__7ee73060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd3060__7ee73060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee73060[];
+extern  VTBL_ENTRY _ZTV7ee73060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee73060[];
+static VTBL_ENTRY alt_thunk_names21[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd30603fooEv,_ZTv0_n16_N6dd30603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd30603fooEv,_ZThn8_N6dd30603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee730603barEv,_ZTv0_n12_N7ee730603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee730603barEv,_ZThn16_N7ee730603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee730603fooEv,_ZTv0_n16_N7ee730603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee730603fooEv,_ZThn16_N7ee730603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee730603fooEv,_ZThn8_N7ee730603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee73060 = {  "ee73060", // class name
+  bases_ee73060, 4,
+  &(vtc_ee73060[0]), // expected_vtbl_contents
+  &(vtt_ee73060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee73060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee73060),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee73060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names21,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd4060  : cc060 {
+  int d;
+  virtual void  bar(); // _ZN6dd40603barEv
+  ~dd4060(); // tgen
+  dd4060(); // tgen
+};
+//SIG(-1 dd4060) C1{ BC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 Fi}
+
+
+void  dd4060 ::bar(){vfunc_called(this, "_ZN6dd40603barEv");}
+dd4060 ::~dd4060(){ note_dtor("dd4060", this);} // tgen
+dd4060 ::dd4060(){ note_ctor("dd4060", this);} // tgen
+
+static void Test_dd4060()
+{
+  extern Class_Descriptor cd_dd4060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,6)];
+    init_test(&cd_dd4060, buf);
+    dd4060 *dp, &lv = *(dp=new (buf) dd4060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,20), "sizeof(dd4060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd4060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(8,4), "dd4060");
+    check_base_class_offset(lv, (bb60*)(cc060*), 0, "dd4060");
+    check_base_class_offset(lv, (cc060*), 0, "dd4060");
+    check_field_offset(lv, d, ABISELECT(20,16), "dd4060.d");
+    test_class_info(&lv, &cd_dd4060);
+    dp->~dd4060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd4060(Test_dd4060, "dd4060", ABISELECT(24,20));
+
+#else // __cplusplus
+
+extern void _ZN6dd4060C1Ev();
+extern void _ZN6dd4060D1Ev();
+Name_Map name_map_dd4060[] = {
+  NSPAIR(_ZN6dd4060C1Ev),
+  NSPAIR(_ZN6dd4060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd4060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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 _ZTI6dd4060[];
+extern void _ZN6dd40603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd4060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4060[0]),
+  (VTBL_ENTRY)&_ZN6dd40603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+Class_Descriptor cd_dd4060 = {  "dd4060", // class name
+  bases_dd4060, 3,
+  &(vtc_dd4060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,20), // object size
+  NSPAIRA(_ZTI6dd4060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd4060),4, //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
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee04060  : dd4060 {
+  int e;
+  ~ee04060(); // tgen
+  ee04060(); // tgen
+};
+//SIG(1 ee04060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee04060 ::~ee04060(){ note_dtor("ee04060", this);} // tgen
+ee04060 ::ee04060(){ note_ctor("ee04060", this);} // tgen
+
+static void Test_ee04060()
+{
+  extern Class_Descriptor cd_ee04060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee04060, buf);
+    ee04060 *dp, &lv = *(dp=new (buf) ee04060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee04060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee04060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(8,4), "ee04060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), 0, "ee04060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), 0, "ee04060");
+    check_base_class_offset(lv, (dd4060*), 0, "ee04060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee04060.e");
+    test_class_info(&lv, &cd_ee04060);
+    dp->~ee04060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee04060(Test_ee04060, "ee04060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee04060C1Ev();
+extern void _ZN7ee04060D1Ev();
+Name_Map name_map_ee04060[] = {
+  NSPAIR(_ZN7ee04060C1Ev),
+  NSPAIR(_ZN7ee04060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee04060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    0, //bcp->offset
+    0, //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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee04060[];
+extern void _ZN6dd40603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee04060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee04060[0]),
+  (VTBL_ENTRY)&_ZN6dd40603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee04060[];
+extern  VTBL_ENTRY _ZTV7ee04060[];
+Class_Descriptor cd_ee04060 = {  "ee04060", // class name
+  bases_ee04060, 4,
+  &(vtc_ee04060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee04060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee04060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee14060  : virtual dd4060 {
+  int e;
+  ~ee14060(); // tgen
+  ee14060(); // tgen
+};
+//SIG(1 ee14060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee14060 ::~ee14060(){ note_dtor("ee14060", this);} // tgen
+ee14060 ::ee14060(){ note_ctor("ee14060", this);} // tgen
+
+static void Test_ee14060()
+{
+  extern Class_Descriptor cd_ee14060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee14060, buf);
+    ee14060 *dp, &lv = *(dp=new (buf) ee14060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee14060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee14060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(24,12), "ee14060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), ABISELECT(16,8), "ee14060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), ABISELECT(16,8), "ee14060");
+    check_base_class_offset(lv, (dd4060*), ABISELECT(16,8), "ee14060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee14060.e");
+    test_class_info(&lv, &cd_ee14060);
+    dp->~ee14060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee14060(Test_ee14060, "ee14060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee14060C1Ev();
+extern void _ZN7ee14060D1Ev();
+Name_Map name_map_ee14060[] = {
+  NSPAIR(_ZN7ee14060C1Ev),
+  NSPAIR(_ZN7ee14060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee14060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee14060[];
+extern void _ZN6dd40603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee14060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee14060[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee14060[0]),
+  (VTBL_ENTRY)&_ZN6dd40603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee14060[];
+static  VTT_ENTRY vtt_ee14060[] = {
+  {&(_ZTV7ee14060[3]),  3,9},
+  {&(_ZTV7ee14060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee14060[];
+extern  VTBL_ENTRY _ZTV7ee14060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee14060[];
+Class_Descriptor cd_ee14060 = {  "ee14060", // class name
+  bases_ee14060, 4,
+  &(vtc_ee14060[0]), // expected_vtbl_contents
+  &(vtt_ee14060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee14060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee14060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee14060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee24060  : dd4060 {
+  int e;
+  virtual void  foo(); // _ZN7ee240603fooEv
+  ~ee24060(); // tgen
+  ee24060(); // tgen
+};
+//SIG(1 ee24060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee24060 ::foo(){vfunc_called(this, "_ZN7ee240603fooEv");}
+ee24060 ::~ee24060(){ note_dtor("ee24060", this);} // tgen
+ee24060 ::ee24060(){ note_ctor("ee24060", this);} // tgen
+
+static void Test_ee24060()
+{
+  extern Class_Descriptor cd_ee24060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee24060, buf);
+    ee24060 *dp, &lv = *(dp=new (buf) ee24060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee24060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee24060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(8,4), "ee24060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), 0, "ee24060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), 0, "ee24060");
+    check_base_class_offset(lv, (dd4060*), 0, "ee24060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee24060.e");
+    test_class_info(&lv, &cd_ee24060);
+    dp->~ee24060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee24060(Test_ee24060, "ee24060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee24060C1Ev();
+extern void _ZN7ee24060D1Ev();
+Name_Map name_map_ee24060[] = {
+  NSPAIR(_ZN7ee24060C1Ev),
+  NSPAIR(_ZN7ee24060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee24060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee24060[];
+extern void _ZN6dd40603barEv();
+extern void _ZN7ee240603fooEv();
+static  VTBL_ENTRY vtc_ee24060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee24060[0]),
+  (VTBL_ENTRY)&_ZN6dd40603barEv,
+  (VTBL_ENTRY)&_ZN7ee240603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee24060[];
+extern  VTBL_ENTRY _ZTV7ee24060[];
+Class_Descriptor cd_ee24060 = {  "ee24060", // class name
+  bases_ee24060, 4,
+  &(vtc_ee24060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee24060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee24060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee34060  : virtual dd4060 {
+  int e;
+  virtual void  foo(); // _ZN7ee340603fooEv
+  ~ee34060(); // tgen
+  ee34060(); // tgen
+};
+//SIG(1 ee34060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee34060 ::foo(){vfunc_called(this, "_ZN7ee340603fooEv");}
+ee34060 ::~ee34060(){ note_dtor("ee34060", this);} // tgen
+ee34060 ::ee34060(){ note_ctor("ee34060", this);} // tgen
+
+static void Test_ee34060()
+{
+  extern Class_Descriptor cd_ee34060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee34060, buf);
+    ee34060 *dp, &lv = *(dp=new (buf) ee34060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee34060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee34060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(24,12), "ee34060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), ABISELECT(16,8), "ee34060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), ABISELECT(16,8), "ee34060");
+    check_base_class_offset(lv, (dd4060*), ABISELECT(16,8), "ee34060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee34060.e");
+    test_class_info(&lv, &cd_ee34060);
+    dp->~ee34060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee34060(Test_ee34060, "ee34060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee34060C1Ev();
+extern void _ZN7ee34060D1Ev();
+Name_Map name_map_ee34060[] = {
+  NSPAIR(_ZN7ee34060C1Ev),
+  NSPAIR(_ZN7ee34060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee34060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee34060[];
+extern void _ZN7ee340603fooEv();
+extern void _ZN6dd40603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee340603fooEv,_ZTv0_n16_N7ee340603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee340603fooEv,_ZThn8_N7ee340603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee34060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee34060[0]),
+  (VTBL_ENTRY)&_ZN7ee340603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee34060[0]),
+  (VTBL_ENTRY)&_ZN6dd40603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee340603fooEv,_ZTv0_n16_N7ee340603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee34060[];
+static  VTT_ENTRY vtt_ee34060[] = {
+  {&(_ZTV7ee34060[3]),  3,10},
+  {&(_ZTV7ee34060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee34060[];
+extern  VTBL_ENTRY _ZTV7ee34060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee34060[];
+static VTBL_ENTRY alt_thunk_names22[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee340603fooEv,_ZTv0_n16_N7ee340603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee340603fooEv,_ZThn8_N7ee340603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee34060 = {  "ee34060", // class name
+  bases_ee34060, 4,
+  &(vtc_ee34060[0]), // expected_vtbl_contents
+  &(vtt_ee34060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee34060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee34060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee34060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names22,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee44060  : dd4060 {
+  int e;
+  virtual void  bar(); // _ZN7ee440603barEv
+  ~ee44060(); // tgen
+  ee44060(); // tgen
+};
+//SIG(1 ee44060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee44060 ::bar(){vfunc_called(this, "_ZN7ee440603barEv");}
+ee44060 ::~ee44060(){ note_dtor("ee44060", this);} // tgen
+ee44060 ::ee44060(){ note_ctor("ee44060", this);} // tgen
+
+static void Test_ee44060()
+{
+  extern Class_Descriptor cd_ee44060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee44060, buf);
+    ee44060 *dp, &lv = *(dp=new (buf) ee44060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee44060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee44060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(8,4), "ee44060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), 0, "ee44060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), 0, "ee44060");
+    check_base_class_offset(lv, (dd4060*), 0, "ee44060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee44060.e");
+    test_class_info(&lv, &cd_ee44060);
+    dp->~ee44060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee44060(Test_ee44060, "ee44060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee44060C1Ev();
+extern void _ZN7ee44060D1Ev();
+Name_Map name_map_ee44060[] = {
+  NSPAIR(_ZN7ee44060C1Ev),
+  NSPAIR(_ZN7ee44060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee44060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee44060[];
+extern void _ZN7ee440603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee44060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee44060[0]),
+  (VTBL_ENTRY)&_ZN7ee440603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee44060[];
+extern  VTBL_ENTRY _ZTV7ee44060[];
+Class_Descriptor cd_ee44060 = {  "ee44060", // class name
+  bases_ee44060, 4,
+  &(vtc_ee44060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee44060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee44060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee54060  : virtual dd4060 {
+  int e;
+  virtual void  bar(); // _ZN7ee540603barEv
+  ~ee54060(); // tgen
+  ee54060(); // tgen
+};
+//SIG(1 ee54060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee54060 ::bar(){vfunc_called(this, "_ZN7ee540603barEv");}
+ee54060 ::~ee54060(){ note_dtor("ee54060", this);} // tgen
+ee54060 ::ee54060(){ note_ctor("ee54060", this);} // tgen
+
+static void Test_ee54060()
+{
+  extern Class_Descriptor cd_ee54060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee54060, buf);
+    ee54060 *dp, &lv = *(dp=new (buf) ee54060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee54060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee54060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(24,12), "ee54060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), ABISELECT(16,8), "ee54060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), ABISELECT(16,8), "ee54060");
+    check_base_class_offset(lv, (dd4060*), ABISELECT(16,8), "ee54060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee54060.e");
+    test_class_info(&lv, &cd_ee54060);
+    dp->~ee54060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee54060(Test_ee54060, "ee54060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee54060C1Ev();
+extern void _ZN7ee54060D1Ev();
+Name_Map name_map_ee54060[] = {
+  NSPAIR(_ZN7ee54060C1Ev),
+  NSPAIR(_ZN7ee54060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee54060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee54060[];
+extern void _ZN7ee540603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee540603barEv,_ZTv0_n12_N7ee540603barEv)();
+extern void ABISELECT(_ZThn16_N7ee540603barEv,_ZThn8_N7ee540603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee54060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee54060[0]),
+  (VTBL_ENTRY)&_ZN7ee540603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee54060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee540603barEv,_ZTv0_n12_N7ee540603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee54060[];
+static  VTT_ENTRY vtt_ee54060[] = {
+  {&(_ZTV7ee54060[3]),  3,10},
+  {&(_ZTV7ee54060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee54060[];
+extern  VTBL_ENTRY _ZTV7ee54060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee54060[];
+static VTBL_ENTRY alt_thunk_names23[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee540603barEv,_ZTv0_n12_N7ee540603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee540603barEv,_ZThn8_N7ee540603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee54060 = {  "ee54060", // class name
+  bases_ee54060, 4,
+  &(vtc_ee54060[0]), // expected_vtbl_contents
+  &(vtt_ee54060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee54060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee54060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee54060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names23,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee64060  : dd4060 {
+  int e;
+  virtual void  foo(); // _ZN7ee640603fooEv
+  virtual void  bar(); // _ZN7ee640603barEv
+  ~ee64060(); // tgen
+  ee64060(); // tgen
+};
+//SIG(1 ee64060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee64060 ::foo(){vfunc_called(this, "_ZN7ee640603fooEv");}
+void  ee64060 ::bar(){vfunc_called(this, "_ZN7ee640603barEv");}
+ee64060 ::~ee64060(){ note_dtor("ee64060", this);} // tgen
+ee64060 ::ee64060(){ note_ctor("ee64060", this);} // tgen
+
+static void Test_ee64060()
+{
+  extern Class_Descriptor cd_ee64060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee64060, buf);
+    ee64060 *dp, &lv = *(dp=new (buf) ee64060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee64060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee64060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(8,4), "ee64060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), 0, "ee64060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), 0, "ee64060");
+    check_base_class_offset(lv, (dd4060*), 0, "ee64060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee64060.e");
+    test_class_info(&lv, &cd_ee64060);
+    dp->~ee64060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee64060(Test_ee64060, "ee64060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee64060C1Ev();
+extern void _ZN7ee64060D1Ev();
+Name_Map name_map_ee64060[] = {
+  NSPAIR(_ZN7ee64060C1Ev),
+  NSPAIR(_ZN7ee64060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee64060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee64060[];
+extern void _ZN7ee640603barEv();
+extern void _ZN7ee640603fooEv();
+static  VTBL_ENTRY vtc_ee64060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee64060[0]),
+  (VTBL_ENTRY)&_ZN7ee640603barEv,
+  (VTBL_ENTRY)&_ZN7ee640603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee64060[];
+extern  VTBL_ENTRY _ZTV7ee64060[];
+Class_Descriptor cd_ee64060 = {  "ee64060", // class name
+  bases_ee64060, 4,
+  &(vtc_ee64060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee64060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee64060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee74060  : virtual dd4060 {
+  int e;
+  virtual void  foo(); // _ZN7ee740603fooEv
+  virtual void  bar(); // _ZN7ee740603barEv
+  ~ee74060(); // tgen
+  ee74060(); // tgen
+};
+//SIG(1 ee74060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee74060 ::foo(){vfunc_called(this, "_ZN7ee740603fooEv");}
+void  ee74060 ::bar(){vfunc_called(this, "_ZN7ee740603barEv");}
+ee74060 ::~ee74060(){ note_dtor("ee74060", this);} // tgen
+ee74060 ::ee74060(){ note_ctor("ee74060", this);} // tgen
+
+static void Test_ee74060()
+{
+  extern Class_Descriptor cd_ee74060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee74060, buf);
+    ee74060 *dp, &lv = *(dp=new (buf) ee74060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee74060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee74060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd4060*), ABISELECT(24,12), "ee74060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd4060*), ABISELECT(16,8), "ee74060");
+    check_base_class_offset(lv, (cc060*)(dd4060*), ABISELECT(16,8), "ee74060");
+    check_base_class_offset(lv, (dd4060*), ABISELECT(16,8), "ee74060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee74060.e");
+    test_class_info(&lv, &cd_ee74060);
+    dp->~ee74060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee74060(Test_ee74060, "ee74060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee74060C1Ev();
+extern void _ZN7ee74060D1Ev();
+Name_Map name_map_ee74060[] = {
+  NSPAIR(_ZN7ee74060C1Ev),
+  NSPAIR(_ZN7ee74060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd4060;
+extern VTBL_ENTRY _ZTI6dd4060[];
+extern  VTBL_ENTRY _ZTV6dd4060[];
+static Base_Class bases_ee74060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee74060[];
+extern void _ZN7ee740603fooEv();
+extern void _ZN7ee740603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee740603barEv,_ZTv0_n12_N7ee740603barEv)();
+extern void ABISELECT(_ZThn16_N7ee740603barEv,_ZThn8_N7ee740603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee740603fooEv,_ZTv0_n16_N7ee740603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee740603fooEv,_ZThn8_N7ee740603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee74060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee74060[0]),
+  (VTBL_ENTRY)&_ZN7ee740603fooEv,
+  (VTBL_ENTRY)&_ZN7ee740603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee74060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee740603barEv,_ZTv0_n12_N7ee740603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee740603fooEv,_ZTv0_n16_N7ee740603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee74060[];
+static  VTT_ENTRY vtt_ee74060[] = {
+  {&(_ZTV7ee74060[3]),  3,11},
+  {&(_ZTV7ee74060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee74060[];
+extern  VTBL_ENTRY _ZTV7ee74060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee74060[];
+static VTBL_ENTRY alt_thunk_names24[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee740603fooEv,_ZTv0_n16_N7ee740603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee740603fooEv,_ZThn8_N7ee740603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee740603barEv,_ZTv0_n12_N7ee740603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee740603barEv,_ZThn8_N7ee740603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee74060 = {  "ee74060", // class name
+  bases_ee74060, 4,
+  &(vtc_ee74060[0]), // expected_vtbl_contents
+  &(vtt_ee74060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee74060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee74060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee74060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names24,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd5060  : virtual cc060 {
+  int d;
+  virtual void  bar(); // _ZN6dd50603barEv
+  ~dd5060(); // tgen
+  dd5060(); // tgen
+};
+//SIG(-1 dd5060) C1{ VBC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 Fi}
+
+
+void  dd5060 ::bar(){vfunc_called(this, "_ZN6dd50603barEv");}
+dd5060 ::~dd5060(){ note_dtor("dd5060", this);} // tgen
+dd5060 ::dd5060(){ note_ctor("dd5060", this);} // tgen
+
+static void Test_dd5060()
+{
+  extern Class_Descriptor cd_dd5060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,7)];
+    init_test(&cd_dd5060, buf);
+    dd5060 *dp, &lv = *(dp=new (buf) dd5060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,24), "sizeof(dd5060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd5060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,12), "dd5060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,8), "dd5060");
+    check_base_class_offset(lv, (cc060*), ABISELECT(16,8), "dd5060");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd5060.d");
+    test_class_info(&lv, &cd_dd5060);
+    dp->~dd5060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd5060(Test_dd5060, "dd5060", ABISELECT(40,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd5060C1Ev();
+extern void _ZN6dd5060D1Ev();
+Name_Map name_map_dd5060[] = {
+  NSPAIR(_ZN6dd5060C1Ev),
+  NSPAIR(_ZN6dd5060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd5060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern void _ZN6dd50603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd5060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd5060[];
+static  VTT_ENTRY vtt_dd5060[] = {
+  {&(_ZTV6dd5060[3]),  3,10},
+  {&(_ZTV6dd5060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static VTBL_ENTRY alt_thunk_names25[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd5060 = {  "dd5060", // class name
+  bases_dd5060, 3,
+  &(vtc_dd5060[0]), // expected_vtbl_contents
+  &(vtt_dd5060[0]), // expected_vtt_contents
+  ABISELECT(40,24), // object size
+  NSPAIRA(_ZTI6dd5060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd5060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd5060),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names25,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee05060  : dd5060 {
+  int e;
+  ~ee05060(); // tgen
+  ee05060(); // tgen
+};
+//SIG(1 ee05060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee05060 ::~ee05060(){ note_dtor("ee05060", this);} // tgen
+ee05060 ::ee05060(){ note_ctor("ee05060", this);} // tgen
+
+static void Test_ee05060()
+{
+  extern Class_Descriptor cd_ee05060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee05060, buf);
+    ee05060 *dp, &lv = *(dp=new (buf) ee05060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee05060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee05060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee05060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee05060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(16,12), "ee05060");
+    check_base_class_offset(lv, (dd5060*), 0, "ee05060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee05060.e");
+    test_class_info(&lv, &cd_ee05060);
+    dp->~ee05060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee05060(Test_ee05060, "ee05060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee05060C1Ev();
+extern void _ZN7ee05060D1Ev();
+Name_Map name_map_ee05060[] = {
+  NSPAIR(_ZN7ee05060C1Ev),
+  NSPAIR(_ZN7ee05060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee05060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee05060[];
+extern void _ZN6dd50603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee05060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee05060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee05060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee05060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee05060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee05060[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee05060[] = {
+  {&(_ZTV7ee05060[3]),  3,10},
+  {&(_tg__ZTV6dd5060__7ee05060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee05060[4]),  4,6},
+  {&(_ZTV7ee05060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee05060[];
+extern  VTBL_ENTRY _ZTV7ee05060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee05060[];
+static VTBL_ENTRY alt_thunk_names26[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee05060 = {  "ee05060", // class name
+  bases_ee05060, 4,
+  &(vtc_ee05060[0]), // expected_vtbl_contents
+  &(vtt_ee05060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee05060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee05060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee05060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names26,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee15060  : virtual dd5060 {
+  int e;
+  ~ee15060(); // tgen
+  ee15060(); // tgen
+};
+//SIG(1 ee15060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee15060 ::~ee15060(){ note_dtor("ee15060", this);} // tgen
+ee15060 ::ee15060(){ note_ctor("ee15060", this);} // tgen
+
+static void Test_ee15060()
+{
+  extern Class_Descriptor cd_ee15060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee15060, buf);
+    ee15060 *dp, &lv = *(dp=new (buf) ee15060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee15060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee15060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee15060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee15060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(32,16), "ee15060");
+    check_base_class_offset(lv, (dd5060*), ABISELECT(16,8), "ee15060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee15060.e");
+    test_class_info(&lv, &cd_ee15060);
+    dp->~ee15060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee15060(Test_ee15060, "ee15060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee15060C1Ev();
+extern void _ZN7ee15060D1Ev();
+Name_Map name_map_ee15060[] = {
+  NSPAIR(_ZN7ee15060C1Ev),
+  NSPAIR(_ZN7ee15060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee15060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee15060[];
+extern void _ZN6dd50603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee15060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee15060[0]),
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee15060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee15060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee15060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee15060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee15060[] = {
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee15060[] = {
+  {&(_ZTV7ee15060[4]),  4,15},
+  {&(_ZTV7ee15060[8]),  8,15},
+  {&(_ZTV7ee15060[13]),  13,15},
+  {&(_tg__ZTV6dd5060__7ee15060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee15060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee15060[];
+extern  VTBL_ENTRY _ZTV7ee15060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee15060[];
+static VTBL_ENTRY alt_thunk_names27[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee15060 = {  "ee15060", // class name
+  bases_ee15060, 4,
+  &(vtc_ee15060[0]), // expected_vtbl_contents
+  &(vtt_ee15060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee15060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee15060),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee15060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names27,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee25060  : dd5060 {
+  int e;
+  virtual void  foo(); // _ZN7ee250603fooEv
+  ~ee25060(); // tgen
+  ee25060(); // tgen
+};
+//SIG(1 ee25060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee25060 ::foo(){vfunc_called(this, "_ZN7ee250603fooEv");}
+ee25060 ::~ee25060(){ note_dtor("ee25060", this);} // tgen
+ee25060 ::ee25060(){ note_ctor("ee25060", this);} // tgen
+
+static void Test_ee25060()
+{
+  extern Class_Descriptor cd_ee25060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee25060, buf);
+    ee25060 *dp, &lv = *(dp=new (buf) ee25060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee25060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee25060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee25060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee25060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(16,12), "ee25060");
+    check_base_class_offset(lv, (dd5060*), 0, "ee25060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee25060.e");
+    test_class_info(&lv, &cd_ee25060);
+    dp->~ee25060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee25060(Test_ee25060, "ee25060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee25060C1Ev();
+extern void _ZN7ee25060D1Ev();
+Name_Map name_map_ee25060[] = {
+  NSPAIR(_ZN7ee25060C1Ev),
+  NSPAIR(_ZN7ee25060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee25060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee25060[];
+extern void _ZN6dd50603barEv();
+extern void _ZN7ee250603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee250603fooEv,_ZTv0_n16_N7ee250603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee250603fooEv,_ZThn12_N7ee250603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee25060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee25060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+  (VTBL_ENTRY)&_ZN7ee250603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee25060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee250603fooEv,_ZTv0_n16_N7ee250603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee25060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee25060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee25060[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee25060[] = {
+  {&(_ZTV7ee25060[3]),  3,11},
+  {&(_tg__ZTV6dd5060__7ee25060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee25060[4]),  4,6},
+  {&(_ZTV7ee25060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee25060[];
+extern  VTBL_ENTRY _ZTV7ee25060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee25060[];
+static VTBL_ENTRY alt_thunk_names28[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee250603fooEv,_ZTv0_n16_N7ee250603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee250603fooEv,_ZThn12_N7ee250603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee25060 = {  "ee25060", // class name
+  bases_ee25060, 4,
+  &(vtc_ee25060[0]), // expected_vtbl_contents
+  &(vtt_ee25060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee25060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee25060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee25060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names28,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee35060  : virtual dd5060 {
+  int e;
+  virtual void  foo(); // _ZN7ee350603fooEv
+  ~ee35060(); // tgen
+  ee35060(); // tgen
+};
+//SIG(1 ee35060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee35060 ::foo(){vfunc_called(this, "_ZN7ee350603fooEv");}
+ee35060 ::~ee35060(){ note_dtor("ee35060", this);} // tgen
+ee35060 ::ee35060(){ note_ctor("ee35060", this);} // tgen
+
+static void Test_ee35060()
+{
+  extern Class_Descriptor cd_ee35060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee35060, buf);
+    ee35060 *dp, &lv = *(dp=new (buf) ee35060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee35060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee35060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee35060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee35060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(32,16), "ee35060");
+    check_base_class_offset(lv, (dd5060*), ABISELECT(16,8), "ee35060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee35060.e");
+    test_class_info(&lv, &cd_ee35060);
+    dp->~ee35060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee35060(Test_ee35060, "ee35060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee35060C1Ev();
+extern void _ZN7ee35060D1Ev();
+Name_Map name_map_ee35060[] = {
+  NSPAIR(_ZN7ee35060C1Ev),
+  NSPAIR(_ZN7ee35060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee35060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee35060[];
+extern void _ZN7ee350603fooEv();
+extern void _ZN6dd50603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee350603fooEv,_ZTv0_n16_N7ee350603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee350603fooEv,_ZThn16_N7ee350603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee35060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee35060[0]),
+  (VTBL_ENTRY)&_ZN7ee350603fooEv,
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee35060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+  ABISELECT(-32,-16),
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee35060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee350603fooEv,_ZTv0_n16_N7ee350603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee35060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee35060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee35060[] = {
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee35060[] = {
+  {&(_ZTV7ee35060[4]),  4,16},
+  {&(_ZTV7ee35060[9]),  9,16},
+  {&(_ZTV7ee35060[14]),  14,16},
+  {&(_tg__ZTV6dd5060__7ee35060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee35060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee35060[];
+extern  VTBL_ENTRY _ZTV7ee35060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee35060[];
+static VTBL_ENTRY alt_thunk_names29[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee350603fooEv,_ZTv0_n16_N7ee350603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee350603fooEv,_ZThn16_N7ee350603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee35060 = {  "ee35060", // class name
+  bases_ee35060, 4,
+  &(vtc_ee35060[0]), // expected_vtbl_contents
+  &(vtt_ee35060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee35060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee35060),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee35060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names29,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee45060  : dd5060 {
+  int e;
+  virtual void  bar(); // _ZN7ee450603barEv
+  ~ee45060(); // tgen
+  ee45060(); // tgen
+};
+//SIG(1 ee45060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee45060 ::bar(){vfunc_called(this, "_ZN7ee450603barEv");}
+ee45060 ::~ee45060(){ note_dtor("ee45060", this);} // tgen
+ee45060 ::ee45060(){ note_ctor("ee45060", this);} // tgen
+
+static void Test_ee45060()
+{
+  extern Class_Descriptor cd_ee45060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee45060, buf);
+    ee45060 *dp, &lv = *(dp=new (buf) ee45060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee45060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee45060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee45060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee45060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(16,12), "ee45060");
+    check_base_class_offset(lv, (dd5060*), 0, "ee45060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee45060.e");
+    test_class_info(&lv, &cd_ee45060);
+    dp->~ee45060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee45060(Test_ee45060, "ee45060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee45060C1Ev();
+extern void _ZN7ee45060D1Ev();
+Name_Map name_map_ee45060[] = {
+  NSPAIR(_ZN7ee45060C1Ev),
+  NSPAIR(_ZN7ee45060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee45060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee45060[];
+extern void _ZN7ee450603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee450603barEv,_ZTv0_n12_N7ee450603barEv)();
+extern void ABISELECT(_ZThn16_N7ee450603barEv,_ZThn12_N7ee450603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee45060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee45060[0]),
+  (VTBL_ENTRY)&_ZN7ee450603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee45060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee450603barEv,_ZTv0_n12_N7ee450603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee45060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee45060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee45060[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee45060[] = {
+  {&(_ZTV7ee45060[3]),  3,10},
+  {&(_tg__ZTV6dd5060__7ee45060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee45060[4]),  4,6},
+  {&(_ZTV7ee45060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee45060[];
+extern  VTBL_ENTRY _ZTV7ee45060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee45060[];
+static VTBL_ENTRY alt_thunk_names30[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee450603barEv,_ZTv0_n12_N7ee450603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee450603barEv,_ZThn12_N7ee450603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee45060 = {  "ee45060", // class name
+  bases_ee45060, 4,
+  &(vtc_ee45060[0]), // expected_vtbl_contents
+  &(vtt_ee45060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee45060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee45060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee45060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names30,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee55060  : virtual dd5060 {
+  int e;
+  virtual void  bar(); // _ZN7ee550603barEv
+  ~ee55060(); // tgen
+  ee55060(); // tgen
+};
+//SIG(1 ee55060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee55060 ::bar(){vfunc_called(this, "_ZN7ee550603barEv");}
+ee55060 ::~ee55060(){ note_dtor("ee55060", this);} // tgen
+ee55060 ::ee55060(){ note_ctor("ee55060", this);} // tgen
+
+static void Test_ee55060()
+{
+  extern Class_Descriptor cd_ee55060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee55060, buf);
+    ee55060 *dp, &lv = *(dp=new (buf) ee55060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee55060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee55060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee55060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee55060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(32,16), "ee55060");
+    check_base_class_offset(lv, (dd5060*), ABISELECT(16,8), "ee55060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee55060.e");
+    test_class_info(&lv, &cd_ee55060);
+    dp->~ee55060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee55060(Test_ee55060, "ee55060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee55060C1Ev();
+extern void _ZN7ee55060D1Ev();
+Name_Map name_map_ee55060[] = {
+  NSPAIR(_ZN7ee55060C1Ev),
+  NSPAIR(_ZN7ee55060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee55060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee55060[];
+extern void _ZN7ee550603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee550603barEv,_ZTv0_n16_N7ee550603barEv)();
+extern void ABISELECT(_ZThn16_N7ee550603barEv,_ZThn8_N7ee550603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee550603barEv,_ZTv0_n12_N7ee550603barEv)();
+extern void ABISELECT(_ZThn32_N7ee550603barEv,_ZThn16_N7ee550603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee55060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee55060[0]),
+  (VTBL_ENTRY)&_ZN7ee550603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee55060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee550603barEv,_ZTv0_n16_N7ee550603barEv),
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee55060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee550603barEv,_ZTv0_n12_N7ee550603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee55060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee55060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee55060[] = {
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee55060[] = {
+  {&(_ZTV7ee55060[4]),  4,16},
+  {&(_ZTV7ee55060[9]),  9,16},
+  {&(_ZTV7ee55060[14]),  14,16},
+  {&(_tg__ZTV6dd5060__7ee55060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee55060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee55060[];
+extern  VTBL_ENTRY _ZTV7ee55060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee55060[];
+static VTBL_ENTRY alt_thunk_names31[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee550603barEv,_ZTv0_n12_N7ee550603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee550603barEv,_ZThn16_N7ee550603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee550603barEv,_ZTv0_n16_N7ee550603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee550603barEv,_ZThn8_N7ee550603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee55060 = {  "ee55060", // class name
+  bases_ee55060, 4,
+  &(vtc_ee55060[0]), // expected_vtbl_contents
+  &(vtt_ee55060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee55060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee55060),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee55060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names31,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee65060  : dd5060 {
+  int e;
+  virtual void  foo(); // _ZN7ee650603fooEv
+  virtual void  bar(); // _ZN7ee650603barEv
+  ~ee65060(); // tgen
+  ee65060(); // tgen
+};
+//SIG(1 ee65060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee65060 ::foo(){vfunc_called(this, "_ZN7ee650603fooEv");}
+void  ee65060 ::bar(){vfunc_called(this, "_ZN7ee650603barEv");}
+ee65060 ::~ee65060(){ note_dtor("ee65060", this);} // tgen
+ee65060 ::ee65060(){ note_ctor("ee65060", this);} // tgen
+
+static void Test_ee65060()
+{
+  extern Class_Descriptor cd_ee65060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee65060, buf);
+    ee65060 *dp, &lv = *(dp=new (buf) ee65060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee65060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee65060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee65060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee65060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(16,12), "ee65060");
+    check_base_class_offset(lv, (dd5060*), 0, "ee65060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee65060.e");
+    test_class_info(&lv, &cd_ee65060);
+    dp->~ee65060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee65060(Test_ee65060, "ee65060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee65060C1Ev();
+extern void _ZN7ee65060D1Ev();
+Name_Map name_map_ee65060[] = {
+  NSPAIR(_ZN7ee65060C1Ev),
+  NSPAIR(_ZN7ee65060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee65060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee65060[];
+extern void _ZN7ee650603barEv();
+extern void _ZN7ee650603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee650603barEv,_ZTv0_n12_N7ee650603barEv)();
+extern void ABISELECT(_ZThn16_N7ee650603barEv,_ZThn12_N7ee650603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee650603fooEv,_ZTv0_n16_N7ee650603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee650603fooEv,_ZThn12_N7ee650603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee65060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee65060[0]),
+  (VTBL_ENTRY)&_ZN7ee650603barEv,
+  (VTBL_ENTRY)&_ZN7ee650603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee65060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee650603barEv,_ZTv0_n12_N7ee650603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee650603fooEv,_ZTv0_n16_N7ee650603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee65060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee65060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee65060[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee65060[] = {
+  {&(_ZTV7ee65060[3]),  3,11},
+  {&(_tg__ZTV6dd5060__7ee65060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee65060[4]),  4,6},
+  {&(_ZTV7ee65060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee65060[];
+extern  VTBL_ENTRY _ZTV7ee65060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee65060[];
+static VTBL_ENTRY alt_thunk_names32[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn12_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee650603fooEv,_ZTv0_n16_N7ee650603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee650603fooEv,_ZThn12_N7ee650603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee650603barEv,_ZTv0_n12_N7ee650603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee650603barEv,_ZThn12_N7ee650603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee65060 = {  "ee65060", // class name
+  bases_ee65060, 4,
+  &(vtc_ee65060[0]), // expected_vtbl_contents
+  &(vtt_ee65060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee65060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee65060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee65060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names32,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee75060  : virtual dd5060 {
+  int e;
+  virtual void  foo(); // _ZN7ee750603fooEv
+  virtual void  bar(); // _ZN7ee750603barEv
+  ~ee75060(); // tgen
+  ee75060(); // tgen
+};
+//SIG(1 ee75060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee75060 ::foo(){vfunc_called(this, "_ZN7ee750603fooEv");}
+void  ee75060 ::bar(){vfunc_called(this, "_ZN7ee750603barEv");}
+ee75060 ::~ee75060(){ note_dtor("ee75060", this);} // tgen
+ee75060 ::ee75060(){ note_ctor("ee75060", this);} // tgen
+
+static void Test_ee75060()
+{
+  extern Class_Descriptor cd_ee75060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee75060, buf);
+    ee75060 *dp, &lv = *(dp=new (buf) ee75060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee75060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee75060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee75060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee75060");
+    check_base_class_offset(lv, (cc060*)(dd5060*), ABISELECT(32,16), "ee75060");
+    check_base_class_offset(lv, (dd5060*), ABISELECT(16,8), "ee75060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee75060.e");
+    test_class_info(&lv, &cd_ee75060);
+    dp->~ee75060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee75060(Test_ee75060, "ee75060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee75060C1Ev();
+extern void _ZN7ee75060D1Ev();
+Name_Map name_map_ee75060[] = {
+  NSPAIR(_ZN7ee75060C1Ev),
+  NSPAIR(_ZN7ee75060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd5060;
+extern VTBL_ENTRY _ZTI6dd5060[];
+extern  VTBL_ENTRY _ZTV6dd5060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5060[];
+static Base_Class bases_ee75060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5060,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee75060[];
+extern void _ZN7ee750603fooEv();
+extern void _ZN7ee750603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee750603barEv,_ZTv0_n16_N7ee750603barEv)();
+extern void ABISELECT(_ZThn16_N7ee750603barEv,_ZThn8_N7ee750603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee750603barEv,_ZTv0_n12_N7ee750603barEv)();
+extern void ABISELECT(_ZThn32_N7ee750603barEv,_ZThn16_N7ee750603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee750603fooEv,_ZTv0_n16_N7ee750603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee750603fooEv,_ZThn16_N7ee750603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee75060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee75060[0]),
+  (VTBL_ENTRY)&_ZN7ee750603fooEv,
+  (VTBL_ENTRY)&_ZN7ee750603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee75060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee750603barEv,_ZTv0_n16_N7ee750603barEv),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee75060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee750603barEv,_ZTv0_n12_N7ee750603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee750603fooEv,_ZTv0_n16_N7ee750603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee75060[];
+extern void _ZN6dd50603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5060__7ee75060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&_ZN6dd50603barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv)();
+extern void ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd5060__7ee75060[] = {
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee75060[] = {
+  {&(_ZTV7ee75060[4]),  4,17},
+  {&(_ZTV7ee75060[10]),  10,17},
+  {&(_ZTV7ee75060[15]),  15,17},
+  {&(_tg__ZTV6dd5060__7ee75060[3]),  3,4},
+  {&(_tg__ZTV4bb605cc060__6dd5060__7ee75060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee75060[];
+extern  VTBL_ENTRY _ZTV7ee75060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee75060[];
+static VTBL_ENTRY alt_thunk_names33[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd50603barEv,_ZTv0_n12_N6dd50603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd50603barEv,_ZThn8_N6dd50603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee750603fooEv,_ZTv0_n16_N7ee750603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee750603fooEv,_ZThn16_N7ee750603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee750603barEv,_ZTv0_n12_N7ee750603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee750603barEv,_ZThn16_N7ee750603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee750603barEv,_ZTv0_n16_N7ee750603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee750603barEv,_ZThn8_N7ee750603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee75060 = {  "ee75060", // class name
+  bases_ee75060, 4,
+  &(vtc_ee75060[0]), // expected_vtbl_contents
+  &(vtt_ee75060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee75060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee75060),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee75060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names33,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd6060  : cc060 {
+  int d;
+  virtual void  bar(); // _ZN6dd60603barEv
+  virtual void  foo(); // _ZN6dd60603fooEv
+  ~dd6060(); // tgen
+  dd6060(); // tgen
+};
+//SIG(-1 dd6060) C1{ BC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 v2 Fi}
+
+
+void  dd6060 ::bar(){vfunc_called(this, "_ZN6dd60603barEv");}
+void  dd6060 ::foo(){vfunc_called(this, "_ZN6dd60603fooEv");}
+dd6060 ::~dd6060(){ note_dtor("dd6060", this);} // tgen
+dd6060 ::dd6060(){ note_ctor("dd6060", this);} // tgen
+
+static void Test_dd6060()
+{
+  extern Class_Descriptor cd_dd6060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,6)];
+    init_test(&cd_dd6060, buf);
+    dd6060 *dp, &lv = *(dp=new (buf) dd6060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,20), "sizeof(dd6060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd6060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(8,4), "dd6060");
+    check_base_class_offset(lv, (bb60*)(cc060*), 0, "dd6060");
+    check_base_class_offset(lv, (cc060*), 0, "dd6060");
+    check_field_offset(lv, d, ABISELECT(20,16), "dd6060.d");
+    test_class_info(&lv, &cd_dd6060);
+    dp->~dd6060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd6060(Test_dd6060, "dd6060", ABISELECT(24,20));
+
+#else // __cplusplus
+
+extern void _ZN6dd6060C1Ev();
+extern void _ZN6dd6060D1Ev();
+Name_Map name_map_dd6060[] = {
+  NSPAIR(_ZN6dd6060C1Ev),
+  NSPAIR(_ZN6dd6060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd6060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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 _ZTI6dd6060[];
+extern void _ZN6dd60603barEv();
+extern void _ZN6dd60603fooEv();
+static  VTBL_ENTRY vtc_dd6060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6060[0]),
+  (VTBL_ENTRY)&_ZN6dd60603barEv,
+  (VTBL_ENTRY)&_ZN6dd60603fooEv,
+};
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+Class_Descriptor cd_dd6060 = {  "dd6060", // class name
+  bases_dd6060, 3,
+  &(vtc_dd6060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,20), // object size
+  NSPAIRA(_ZTI6dd6060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd6060),4, //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
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee06060  : dd6060 {
+  int e;
+  ~ee06060(); // tgen
+  ee06060(); // tgen
+};
+//SIG(1 ee06060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee06060 ::~ee06060(){ note_dtor("ee06060", this);} // tgen
+ee06060 ::ee06060(){ note_ctor("ee06060", this);} // tgen
+
+static void Test_ee06060()
+{
+  extern Class_Descriptor cd_ee06060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee06060, buf);
+    ee06060 *dp, &lv = *(dp=new (buf) ee06060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee06060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee06060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(8,4), "ee06060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), 0, "ee06060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), 0, "ee06060");
+    check_base_class_offset(lv, (dd6060*), 0, "ee06060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee06060.e");
+    test_class_info(&lv, &cd_ee06060);
+    dp->~ee06060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee06060(Test_ee06060, "ee06060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee06060C1Ev();
+extern void _ZN7ee06060D1Ev();
+Name_Map name_map_ee06060[] = {
+  NSPAIR(_ZN7ee06060C1Ev),
+  NSPAIR(_ZN7ee06060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee06060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    0, //bcp->offset
+    0, //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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee06060[];
+extern void _ZN6dd60603barEv();
+extern void _ZN6dd60603fooEv();
+static  VTBL_ENTRY vtc_ee06060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee06060[0]),
+  (VTBL_ENTRY)&_ZN6dd60603barEv,
+  (VTBL_ENTRY)&_ZN6dd60603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee06060[];
+extern  VTBL_ENTRY _ZTV7ee06060[];
+Class_Descriptor cd_ee06060 = {  "ee06060", // class name
+  bases_ee06060, 4,
+  &(vtc_ee06060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee06060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee06060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee16060  : virtual dd6060 {
+  int e;
+  ~ee16060(); // tgen
+  ee16060(); // tgen
+};
+//SIG(1 ee16060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee16060 ::~ee16060(){ note_dtor("ee16060", this);} // tgen
+ee16060 ::ee16060(){ note_ctor("ee16060", this);} // tgen
+
+static void Test_ee16060()
+{
+  extern Class_Descriptor cd_ee16060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee16060, buf);
+    ee16060 *dp, &lv = *(dp=new (buf) ee16060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee16060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee16060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(24,12), "ee16060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), ABISELECT(16,8), "ee16060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), ABISELECT(16,8), "ee16060");
+    check_base_class_offset(lv, (dd6060*), ABISELECT(16,8), "ee16060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee16060.e");
+    test_class_info(&lv, &cd_ee16060);
+    dp->~ee16060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee16060(Test_ee16060, "ee16060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee16060C1Ev();
+extern void _ZN7ee16060D1Ev();
+Name_Map name_map_ee16060[] = {
+  NSPAIR(_ZN7ee16060C1Ev),
+  NSPAIR(_ZN7ee16060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee16060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee16060[];
+extern void _ZN6dd60603barEv();
+extern void _ZN6dd60603fooEv();
+static  VTBL_ENTRY vtc_ee16060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee16060[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee16060[0]),
+  (VTBL_ENTRY)&_ZN6dd60603barEv,
+  (VTBL_ENTRY)&_ZN6dd60603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee16060[];
+static  VTT_ENTRY vtt_ee16060[] = {
+  {&(_ZTV7ee16060[3]),  3,9},
+  {&(_ZTV7ee16060[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee16060[];
+extern  VTBL_ENTRY _ZTV7ee16060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee16060[];
+Class_Descriptor cd_ee16060 = {  "ee16060", // class name
+  bases_ee16060, 4,
+  &(vtc_ee16060[0]), // expected_vtbl_contents
+  &(vtt_ee16060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee16060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee16060),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee16060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee26060  : dd6060 {
+  int e;
+  virtual void  foo(); // _ZN7ee260603fooEv
+  ~ee26060(); // tgen
+  ee26060(); // tgen
+};
+//SIG(1 ee26060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee26060 ::foo(){vfunc_called(this, "_ZN7ee260603fooEv");}
+ee26060 ::~ee26060(){ note_dtor("ee26060", this);} // tgen
+ee26060 ::ee26060(){ note_ctor("ee26060", this);} // tgen
+
+static void Test_ee26060()
+{
+  extern Class_Descriptor cd_ee26060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee26060, buf);
+    ee26060 *dp, &lv = *(dp=new (buf) ee26060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee26060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee26060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(8,4), "ee26060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), 0, "ee26060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), 0, "ee26060");
+    check_base_class_offset(lv, (dd6060*), 0, "ee26060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee26060.e");
+    test_class_info(&lv, &cd_ee26060);
+    dp->~ee26060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee26060(Test_ee26060, "ee26060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee26060C1Ev();
+extern void _ZN7ee26060D1Ev();
+Name_Map name_map_ee26060[] = {
+  NSPAIR(_ZN7ee26060C1Ev),
+  NSPAIR(_ZN7ee26060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee26060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee26060[];
+extern void _ZN6dd60603barEv();
+extern void _ZN7ee260603fooEv();
+static  VTBL_ENTRY vtc_ee26060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee26060[0]),
+  (VTBL_ENTRY)&_ZN6dd60603barEv,
+  (VTBL_ENTRY)&_ZN7ee260603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee26060[];
+extern  VTBL_ENTRY _ZTV7ee26060[];
+Class_Descriptor cd_ee26060 = {  "ee26060", // class name
+  bases_ee26060, 4,
+  &(vtc_ee26060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee26060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee26060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee36060  : virtual dd6060 {
+  int e;
+  virtual void  foo(); // _ZN7ee360603fooEv
+  ~ee36060(); // tgen
+  ee36060(); // tgen
+};
+//SIG(1 ee36060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee36060 ::foo(){vfunc_called(this, "_ZN7ee360603fooEv");}
+ee36060 ::~ee36060(){ note_dtor("ee36060", this);} // tgen
+ee36060 ::ee36060(){ note_ctor("ee36060", this);} // tgen
+
+static void Test_ee36060()
+{
+  extern Class_Descriptor cd_ee36060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee36060, buf);
+    ee36060 *dp, &lv = *(dp=new (buf) ee36060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee36060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee36060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(24,12), "ee36060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), ABISELECT(16,8), "ee36060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), ABISELECT(16,8), "ee36060");
+    check_base_class_offset(lv, (dd6060*), ABISELECT(16,8), "ee36060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee36060.e");
+    test_class_info(&lv, &cd_ee36060);
+    dp->~ee36060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee36060(Test_ee36060, "ee36060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee36060C1Ev();
+extern void _ZN7ee36060D1Ev();
+Name_Map name_map_ee36060[] = {
+  NSPAIR(_ZN7ee36060C1Ev),
+  NSPAIR(_ZN7ee36060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee36060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee36060[];
+extern void _ZN7ee360603fooEv();
+extern void _ZN6dd60603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee360603fooEv,_ZTv0_n16_N7ee360603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee360603fooEv,_ZThn8_N7ee360603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee36060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee36060[0]),
+  (VTBL_ENTRY)&_ZN7ee360603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee36060[0]),
+  (VTBL_ENTRY)&_ZN6dd60603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee360603fooEv,_ZTv0_n16_N7ee360603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee36060[];
+static  VTT_ENTRY vtt_ee36060[] = {
+  {&(_ZTV7ee36060[3]),  3,10},
+  {&(_ZTV7ee36060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee36060[];
+extern  VTBL_ENTRY _ZTV7ee36060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee36060[];
+static VTBL_ENTRY alt_thunk_names34[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee360603fooEv,_ZTv0_n16_N7ee360603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee360603fooEv,_ZThn8_N7ee360603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee36060 = {  "ee36060", // class name
+  bases_ee36060, 4,
+  &(vtc_ee36060[0]), // expected_vtbl_contents
+  &(vtt_ee36060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee36060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee36060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee36060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names34,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee46060  : dd6060 {
+  int e;
+  virtual void  bar(); // _ZN7ee460603barEv
+  ~ee46060(); // tgen
+  ee46060(); // tgen
+};
+//SIG(1 ee46060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee46060 ::bar(){vfunc_called(this, "_ZN7ee460603barEv");}
+ee46060 ::~ee46060(){ note_dtor("ee46060", this);} // tgen
+ee46060 ::ee46060(){ note_ctor("ee46060", this);} // tgen
+
+static void Test_ee46060()
+{
+  extern Class_Descriptor cd_ee46060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee46060, buf);
+    ee46060 *dp, &lv = *(dp=new (buf) ee46060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee46060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee46060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(8,4), "ee46060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), 0, "ee46060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), 0, "ee46060");
+    check_base_class_offset(lv, (dd6060*), 0, "ee46060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee46060.e");
+    test_class_info(&lv, &cd_ee46060);
+    dp->~ee46060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee46060(Test_ee46060, "ee46060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee46060C1Ev();
+extern void _ZN7ee46060D1Ev();
+Name_Map name_map_ee46060[] = {
+  NSPAIR(_ZN7ee46060C1Ev),
+  NSPAIR(_ZN7ee46060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee46060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee46060[];
+extern void _ZN7ee460603barEv();
+extern void _ZN6dd60603fooEv();
+static  VTBL_ENTRY vtc_ee46060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee46060[0]),
+  (VTBL_ENTRY)&_ZN7ee460603barEv,
+  (VTBL_ENTRY)&_ZN6dd60603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee46060[];
+extern  VTBL_ENTRY _ZTV7ee46060[];
+Class_Descriptor cd_ee46060 = {  "ee46060", // class name
+  bases_ee46060, 4,
+  &(vtc_ee46060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee46060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee46060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee56060  : virtual dd6060 {
+  int e;
+  virtual void  bar(); // _ZN7ee560603barEv
+  ~ee56060(); // tgen
+  ee56060(); // tgen
+};
+//SIG(1 ee56060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee56060 ::bar(){vfunc_called(this, "_ZN7ee560603barEv");}
+ee56060 ::~ee56060(){ note_dtor("ee56060", this);} // tgen
+ee56060 ::ee56060(){ note_ctor("ee56060", this);} // tgen
+
+static void Test_ee56060()
+{
+  extern Class_Descriptor cd_ee56060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee56060, buf);
+    ee56060 *dp, &lv = *(dp=new (buf) ee56060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee56060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee56060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(24,12), "ee56060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), ABISELECT(16,8), "ee56060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), ABISELECT(16,8), "ee56060");
+    check_base_class_offset(lv, (dd6060*), ABISELECT(16,8), "ee56060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee56060.e");
+    test_class_info(&lv, &cd_ee56060);
+    dp->~ee56060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee56060(Test_ee56060, "ee56060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee56060C1Ev();
+extern void _ZN7ee56060D1Ev();
+Name_Map name_map_ee56060[] = {
+  NSPAIR(_ZN7ee56060C1Ev),
+  NSPAIR(_ZN7ee56060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee56060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee56060[];
+extern void _ZN7ee560603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee560603barEv,_ZTv0_n12_N7ee560603barEv)();
+extern void ABISELECT(_ZThn16_N7ee560603barEv,_ZThn8_N7ee560603barEv)() __attribute__((weak));
+extern void _ZN6dd60603fooEv();
+static  VTBL_ENTRY vtc_ee56060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee56060[0]),
+  (VTBL_ENTRY)&_ZN7ee560603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee56060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee560603barEv,_ZTv0_n12_N7ee560603barEv),
+  (VTBL_ENTRY)&_ZN6dd60603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee56060[];
+static  VTT_ENTRY vtt_ee56060[] = {
+  {&(_ZTV7ee56060[3]),  3,10},
+  {&(_ZTV7ee56060[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee56060[];
+extern  VTBL_ENTRY _ZTV7ee56060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee56060[];
+static VTBL_ENTRY alt_thunk_names35[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee560603barEv,_ZTv0_n12_N7ee560603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee560603barEv,_ZThn8_N7ee560603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee56060 = {  "ee56060", // class name
+  bases_ee56060, 4,
+  &(vtc_ee56060[0]), // expected_vtbl_contents
+  &(vtt_ee56060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee56060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee56060),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee56060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names35,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee66060  : dd6060 {
+  int e;
+  virtual void  foo(); // _ZN7ee660603fooEv
+  virtual void  bar(); // _ZN7ee660603barEv
+  ~ee66060(); // tgen
+  ee66060(); // tgen
+};
+//SIG(1 ee66060) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee66060 ::foo(){vfunc_called(this, "_ZN7ee660603fooEv");}
+void  ee66060 ::bar(){vfunc_called(this, "_ZN7ee660603barEv");}
+ee66060 ::~ee66060(){ note_dtor("ee66060", this);} // tgen
+ee66060 ::ee66060(){ note_ctor("ee66060", this);} // tgen
+
+static void Test_ee66060()
+{
+  extern Class_Descriptor cd_ee66060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee66060, buf);
+    ee66060 *dp, &lv = *(dp=new (buf) ee66060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee66060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee66060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(8,4), "ee66060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), 0, "ee66060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), 0, "ee66060");
+    check_base_class_offset(lv, (dd6060*), 0, "ee66060");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee66060.e");
+    test_class_info(&lv, &cd_ee66060);
+    dp->~ee66060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee66060(Test_ee66060, "ee66060", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee66060C1Ev();
+extern void _ZN7ee66060D1Ev();
+Name_Map name_map_ee66060[] = {
+  NSPAIR(_ZN7ee66060C1Ev),
+  NSPAIR(_ZN7ee66060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee66060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc060,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee66060[];
+extern void _ZN7ee660603barEv();
+extern void _ZN7ee660603fooEv();
+static  VTBL_ENTRY vtc_ee66060[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee66060[0]),
+  (VTBL_ENTRY)&_ZN7ee660603barEv,
+  (VTBL_ENTRY)&_ZN7ee660603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee66060[];
+extern  VTBL_ENTRY _ZTV7ee66060[];
+Class_Descriptor cd_ee66060 = {  "ee66060", // class name
+  bases_ee66060, 4,
+  &(vtc_ee66060[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee66060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee66060),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee76060  : virtual dd6060 {
+  int e;
+  virtual void  foo(); // _ZN7ee760603fooEv
+  virtual void  bar(); // _ZN7ee760603barEv
+  ~ee76060(); // tgen
+  ee76060(); // tgen
+};
+//SIG(1 ee76060) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee76060 ::foo(){vfunc_called(this, "_ZN7ee760603fooEv");}
+void  ee76060 ::bar(){vfunc_called(this, "_ZN7ee760603barEv");}
+ee76060 ::~ee76060(){ note_dtor("ee76060", this);} // tgen
+ee76060 ::ee76060(){ note_ctor("ee76060", this);} // tgen
+
+static void Test_ee76060()
+{
+  extern Class_Descriptor cd_ee76060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee76060, buf);
+    ee76060 *dp, &lv = *(dp=new (buf) ee76060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee76060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee76060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*)(dd6060*), ABISELECT(24,12), "ee76060");
+    check_base_class_offset(lv, (bb60*)(cc060*)(dd6060*), ABISELECT(16,8), "ee76060");
+    check_base_class_offset(lv, (cc060*)(dd6060*), ABISELECT(16,8), "ee76060");
+    check_base_class_offset(lv, (dd6060*), ABISELECT(16,8), "ee76060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee76060.e");
+    test_class_info(&lv, &cd_ee76060);
+    dp->~ee76060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee76060(Test_ee76060, "ee76060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee76060C1Ev();
+extern void _ZN7ee76060D1Ev();
+Name_Map name_map_ee76060[] = {
+  NSPAIR(_ZN7ee76060C1Ev),
+  NSPAIR(_ZN7ee76060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd6060;
+extern VTBL_ENTRY _ZTI6dd6060[];
+extern  VTBL_ENTRY _ZTV6dd6060[];
+static Base_Class bases_ee76060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc060,    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
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee76060[];
+extern void _ZN7ee760603fooEv();
+extern void _ZN7ee760603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee760603barEv,_ZTv0_n12_N7ee760603barEv)();
+extern void ABISELECT(_ZThn16_N7ee760603barEv,_ZThn8_N7ee760603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee760603fooEv,_ZTv0_n16_N7ee760603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee760603fooEv,_ZThn8_N7ee760603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee76060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee76060[0]),
+  (VTBL_ENTRY)&_ZN7ee760603fooEv,
+  (VTBL_ENTRY)&_ZN7ee760603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee76060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee760603barEv,_ZTv0_n12_N7ee760603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee760603fooEv,_ZTv0_n16_N7ee760603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee76060[];
+static  VTT_ENTRY vtt_ee76060[] = {
+  {&(_ZTV7ee76060[3]),  3,11},
+  {&(_ZTV7ee76060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee76060[];
+extern  VTBL_ENTRY _ZTV7ee76060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee76060[];
+static VTBL_ENTRY alt_thunk_names36[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee760603fooEv,_ZTv0_n16_N7ee760603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee760603fooEv,_ZThn8_N7ee760603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee760603barEv,_ZTv0_n12_N7ee760603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee760603barEv,_ZThn8_N7ee760603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee76060 = {  "ee76060", // class name
+  bases_ee76060, 4,
+  &(vtc_ee76060[0]), // expected_vtbl_contents
+  &(vtt_ee76060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee76060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee76060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee76060),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names36,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd7060  : virtual cc060 {
+  int d;
+  virtual void  bar(); // _ZN6dd70603barEv
+  virtual void  foo(); // _ZN6dd70603fooEv
+  ~dd7060(); // tgen
+  dd7060(); // tgen
+};
+//SIG(-1 dd7060) C1{ VBC2{ BC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 v2 Fi}
+
+
+void  dd7060 ::bar(){vfunc_called(this, "_ZN6dd70603barEv");}
+void  dd7060 ::foo(){vfunc_called(this, "_ZN6dd70603fooEv");}
+dd7060 ::~dd7060(){ note_dtor("dd7060", this);} // tgen
+dd7060 ::dd7060(){ note_ctor("dd7060", this);} // tgen
+
+static void Test_dd7060()
+{
+  extern Class_Descriptor cd_dd7060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,7)];
+    init_test(&cd_dd7060, buf);
+    dd7060 *dp, &lv = *(dp=new (buf) dd7060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,24), "sizeof(dd7060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd7060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,12), "dd7060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,8), "dd7060");
+    check_base_class_offset(lv, (cc060*), ABISELECT(16,8), "dd7060");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd7060.d");
+    test_class_info(&lv, &cd_dd7060);
+    dp->~dd7060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd7060(Test_dd7060, "dd7060", ABISELECT(40,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd7060C1Ev();
+extern void _ZN6dd7060D1Ev();
+Name_Map name_map_dd7060[] = {
+  NSPAIR(_ZN6dd7060C1Ev),
+  NSPAIR(_ZN6dd7060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+static Base_Class bases_dd7060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd7060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd7060[];
+static  VTT_ENTRY vtt_dd7060[] = {
+  {&(_ZTV6dd7060[3]),  3,11},
+  {&(_ZTV6dd7060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static VTBL_ENTRY alt_thunk_names37[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd7060 = {  "dd7060", // class name
+  bases_dd7060, 3,
+  &(vtc_dd7060[0]), // expected_vtbl_contents
+  &(vtt_dd7060[0]), // expected_vtt_contents
+  ABISELECT(40,24), // object size
+  NSPAIRA(_ZTI6dd7060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd7060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd7060),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names37,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee07060  : dd7060 {
+  int e;
+  ~ee07060(); // tgen
+  ee07060(); // tgen
+};
+//SIG(1 ee07060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee07060 ::~ee07060(){ note_dtor("ee07060", this);} // tgen
+ee07060 ::ee07060(){ note_ctor("ee07060", this);} // tgen
+
+static void Test_ee07060()
+{
+  extern Class_Descriptor cd_ee07060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee07060, buf);
+    ee07060 *dp, &lv = *(dp=new (buf) ee07060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee07060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee07060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee07060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee07060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(16,12), "ee07060");
+    check_base_class_offset(lv, (dd7060*), 0, "ee07060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee07060.e");
+    test_class_info(&lv, &cd_ee07060);
+    dp->~ee07060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee07060(Test_ee07060, "ee07060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee07060C1Ev();
+extern void _ZN7ee07060D1Ev();
+Name_Map name_map_ee07060[] = {
+  NSPAIR(_ZN7ee07060C1Ev),
+  NSPAIR(_ZN7ee07060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee07060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee07060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee07060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee07060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee07060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee07060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee07060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee07060[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee07060[] = {
+  {&(_ZTV7ee07060[3]),  3,11},
+  {&(_tg__ZTV6dd7060__7ee07060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee07060[4]),  4,6},
+  {&(_ZTV7ee07060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee07060[];
+extern  VTBL_ENTRY _ZTV7ee07060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee07060[];
+static VTBL_ENTRY alt_thunk_names38[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee07060 = {  "ee07060", // class name
+  bases_ee07060, 4,
+  &(vtc_ee07060[0]), // expected_vtbl_contents
+  &(vtt_ee07060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee07060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee07060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee07060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names38,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee17060  : virtual dd7060 {
+  int e;
+  ~ee17060(); // tgen
+  ee17060(); // tgen
+};
+//SIG(1 ee17060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee17060 ::~ee17060(){ note_dtor("ee17060", this);} // tgen
+ee17060 ::ee17060(){ note_ctor("ee17060", this);} // tgen
+
+static void Test_ee17060()
+{
+  extern Class_Descriptor cd_ee17060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee17060, buf);
+    ee17060 *dp, &lv = *(dp=new (buf) ee17060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee17060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee17060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee17060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee17060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(32,16), "ee17060");
+    check_base_class_offset(lv, (dd7060*), ABISELECT(16,8), "ee17060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee17060.e");
+    test_class_info(&lv, &cd_ee17060);
+    dp->~ee17060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee17060(Test_ee17060, "ee17060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee17060C1Ev();
+extern void _ZN7ee17060D1Ev();
+Name_Map name_map_ee17060[] = {
+  NSPAIR(_ZN7ee17060C1Ev),
+  NSPAIR(_ZN7ee17060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee17060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee17060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee17060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee17060[0]),
+  0,
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee17060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee17060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee17060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee17060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee17060[] = {
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee17060[] = {
+  {&(_ZTV7ee17060[4]),  4,17},
+  {&(_ZTV7ee17060[9]),  9,17},
+  {&(_ZTV7ee17060[15]),  15,17},
+  {&(_tg__ZTV6dd7060__7ee17060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee17060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee17060[];
+extern  VTBL_ENTRY _ZTV7ee17060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee17060[];
+static VTBL_ENTRY alt_thunk_names39[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee17060 = {  "ee17060", // class name
+  bases_ee17060, 4,
+  &(vtc_ee17060[0]), // expected_vtbl_contents
+  &(vtt_ee17060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee17060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee17060),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee17060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names39,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee27060  : dd7060 {
+  int e;
+  virtual void  foo(); // _ZN7ee270603fooEv
+  ~ee27060(); // tgen
+  ee27060(); // tgen
+};
+//SIG(1 ee27060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee27060 ::foo(){vfunc_called(this, "_ZN7ee270603fooEv");}
+ee27060 ::~ee27060(){ note_dtor("ee27060", this);} // tgen
+ee27060 ::ee27060(){ note_ctor("ee27060", this);} // tgen
+
+static void Test_ee27060()
+{
+  extern Class_Descriptor cd_ee27060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee27060, buf);
+    ee27060 *dp, &lv = *(dp=new (buf) ee27060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee27060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee27060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee27060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee27060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(16,12), "ee27060");
+    check_base_class_offset(lv, (dd7060*), 0, "ee27060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee27060.e");
+    test_class_info(&lv, &cd_ee27060);
+    dp->~ee27060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee27060(Test_ee27060, "ee27060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee27060C1Ev();
+extern void _ZN7ee27060D1Ev();
+Name_Map name_map_ee27060[] = {
+  NSPAIR(_ZN7ee27060C1Ev),
+  NSPAIR(_ZN7ee27060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee27060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee27060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN7ee270603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee270603fooEv,_ZTv0_n16_N7ee270603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee270603fooEv,_ZThn12_N7ee270603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee27060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee27060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN7ee270603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee27060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee270603fooEv,_ZTv0_n16_N7ee270603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee27060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee27060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee27060[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee27060[] = {
+  {&(_ZTV7ee27060[3]),  3,11},
+  {&(_tg__ZTV6dd7060__7ee27060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee27060[4]),  4,6},
+  {&(_ZTV7ee27060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee27060[];
+extern  VTBL_ENTRY _ZTV7ee27060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee27060[];
+static VTBL_ENTRY alt_thunk_names40[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee270603fooEv,_ZTv0_n16_N7ee270603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee270603fooEv,_ZThn12_N7ee270603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee27060 = {  "ee27060", // class name
+  bases_ee27060, 4,
+  &(vtc_ee27060[0]), // expected_vtbl_contents
+  &(vtt_ee27060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee27060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee27060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee27060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names40,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee37060  : virtual dd7060 {
+  int e;
+  virtual void  foo(); // _ZN7ee370603fooEv
+  ~ee37060(); // tgen
+  ee37060(); // tgen
+};
+//SIG(1 ee37060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee37060 ::foo(){vfunc_called(this, "_ZN7ee370603fooEv");}
+ee37060 ::~ee37060(){ note_dtor("ee37060", this);} // tgen
+ee37060 ::ee37060(){ note_ctor("ee37060", this);} // tgen
+
+static void Test_ee37060()
+{
+  extern Class_Descriptor cd_ee37060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee37060, buf);
+    ee37060 *dp, &lv = *(dp=new (buf) ee37060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee37060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee37060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee37060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee37060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(32,16), "ee37060");
+    check_base_class_offset(lv, (dd7060*), ABISELECT(16,8), "ee37060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee37060.e");
+    test_class_info(&lv, &cd_ee37060);
+    dp->~ee37060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee37060(Test_ee37060, "ee37060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee37060C1Ev();
+extern void _ZN7ee37060D1Ev();
+Name_Map name_map_ee37060[] = {
+  NSPAIR(_ZN7ee37060C1Ev),
+  NSPAIR(_ZN7ee37060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee37060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee37060[];
+extern void _ZN7ee370603fooEv();
+extern void _ZN6dd70603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee370603fooEv,_ZTv0_n20_N7ee370603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee370603fooEv,_ZThn8_N7ee370603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee370603fooEv,_ZTv0_n16_N7ee370603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee370603fooEv,_ZThn16_N7ee370603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee37060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee37060[0]),
+  (VTBL_ENTRY)&_ZN7ee370603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee37060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee370603fooEv,_ZTv0_n20_N7ee370603fooEv),
+  ABISELECT(-32,-16),
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee37060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee370603fooEv,_ZTv0_n16_N7ee370603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee37060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee37060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee37060[] = {
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee37060[] = {
+  {&(_ZTV7ee37060[4]),  4,18},
+  {&(_ZTV7ee37060[10]),  10,18},
+  {&(_ZTV7ee37060[16]),  16,18},
+  {&(_tg__ZTV6dd7060__7ee37060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee37060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee37060[];
+extern  VTBL_ENTRY _ZTV7ee37060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee37060[];
+static VTBL_ENTRY alt_thunk_names41[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee370603fooEv,_ZTv0_n16_N7ee370603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee370603fooEv,_ZThn16_N7ee370603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee370603fooEv,_ZTv0_n20_N7ee370603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee370603fooEv,_ZThn8_N7ee370603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee37060 = {  "ee37060", // class name
+  bases_ee37060, 4,
+  &(vtc_ee37060[0]), // expected_vtbl_contents
+  &(vtt_ee37060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee37060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee37060),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee37060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names41,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee47060  : dd7060 {
+  int e;
+  virtual void  bar(); // _ZN7ee470603barEv
+  ~ee47060(); // tgen
+  ee47060(); // tgen
+};
+//SIG(1 ee47060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee47060 ::bar(){vfunc_called(this, "_ZN7ee470603barEv");}
+ee47060 ::~ee47060(){ note_dtor("ee47060", this);} // tgen
+ee47060 ::ee47060(){ note_ctor("ee47060", this);} // tgen
+
+static void Test_ee47060()
+{
+  extern Class_Descriptor cd_ee47060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee47060, buf);
+    ee47060 *dp, &lv = *(dp=new (buf) ee47060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee47060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee47060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee47060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee47060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(16,12), "ee47060");
+    check_base_class_offset(lv, (dd7060*), 0, "ee47060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee47060.e");
+    test_class_info(&lv, &cd_ee47060);
+    dp->~ee47060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee47060(Test_ee47060, "ee47060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee47060C1Ev();
+extern void _ZN7ee47060D1Ev();
+Name_Map name_map_ee47060[] = {
+  NSPAIR(_ZN7ee47060C1Ev),
+  NSPAIR(_ZN7ee47060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee47060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee47060[];
+extern void _ZN7ee470603barEv();
+extern void _ZN6dd70603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee470603barEv,_ZTv0_n12_N7ee470603barEv)();
+extern void ABISELECT(_ZThn16_N7ee470603barEv,_ZThn12_N7ee470603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee47060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee47060[0]),
+  (VTBL_ENTRY)&_ZN7ee470603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee47060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee470603barEv,_ZTv0_n12_N7ee470603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee47060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee47060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee47060[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee47060[] = {
+  {&(_ZTV7ee47060[3]),  3,11},
+  {&(_tg__ZTV6dd7060__7ee47060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee47060[4]),  4,6},
+  {&(_ZTV7ee47060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee47060[];
+extern  VTBL_ENTRY _ZTV7ee47060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee47060[];
+static VTBL_ENTRY alt_thunk_names42[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee470603barEv,_ZTv0_n12_N7ee470603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee470603barEv,_ZThn12_N7ee470603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee47060 = {  "ee47060", // class name
+  bases_ee47060, 4,
+  &(vtc_ee47060[0]), // expected_vtbl_contents
+  &(vtt_ee47060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee47060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee47060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee47060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names42,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee57060  : virtual dd7060 {
+  int e;
+  virtual void  bar(); // _ZN7ee570603barEv
+  ~ee57060(); // tgen
+  ee57060(); // tgen
+};
+//SIG(1 ee57060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee57060 ::bar(){vfunc_called(this, "_ZN7ee570603barEv");}
+ee57060 ::~ee57060(){ note_dtor("ee57060", this);} // tgen
+ee57060 ::ee57060(){ note_ctor("ee57060", this);} // tgen
+
+static void Test_ee57060()
+{
+  extern Class_Descriptor cd_ee57060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee57060, buf);
+    ee57060 *dp, &lv = *(dp=new (buf) ee57060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee57060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee57060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee57060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee57060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(32,16), "ee57060");
+    check_base_class_offset(lv, (dd7060*), ABISELECT(16,8), "ee57060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee57060.e");
+    test_class_info(&lv, &cd_ee57060);
+    dp->~ee57060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee57060(Test_ee57060, "ee57060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee57060C1Ev();
+extern void _ZN7ee57060D1Ev();
+Name_Map name_map_ee57060[] = {
+  NSPAIR(_ZN7ee57060C1Ev),
+  NSPAIR(_ZN7ee57060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee57060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee57060[];
+extern void _ZN7ee570603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee570603barEv,_ZTv0_n16_N7ee570603barEv)();
+extern void ABISELECT(_ZThn16_N7ee570603barEv,_ZThn8_N7ee570603barEv)() __attribute__((weak));
+extern void _ZN6dd70603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee570603barEv,_ZTv0_n12_N7ee570603barEv)();
+extern void ABISELECT(_ZThn32_N7ee570603barEv,_ZThn16_N7ee570603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee57060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee57060[0]),
+  (VTBL_ENTRY)&_ZN7ee570603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee57060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee570603barEv,_ZTv0_n16_N7ee570603barEv),
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee57060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee570603barEv,_ZTv0_n12_N7ee570603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee57060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee57060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee57060[] = {
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee57060[] = {
+  {&(_ZTV7ee57060[4]),  4,18},
+  {&(_ZTV7ee57060[10]),  10,18},
+  {&(_ZTV7ee57060[16]),  16,18},
+  {&(_tg__ZTV6dd7060__7ee57060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee57060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee57060[];
+extern  VTBL_ENTRY _ZTV7ee57060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee57060[];
+static VTBL_ENTRY alt_thunk_names43[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee570603barEv,_ZTv0_n12_N7ee570603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee570603barEv,_ZThn16_N7ee570603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee570603barEv,_ZTv0_n16_N7ee570603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee570603barEv,_ZThn8_N7ee570603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee57060 = {  "ee57060", // class name
+  bases_ee57060, 4,
+  &(vtc_ee57060[0]), // expected_vtbl_contents
+  &(vtt_ee57060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee57060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee57060),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee57060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names43,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee67060  : dd7060 {
+  int e;
+  virtual void  foo(); // _ZN7ee670603fooEv
+  virtual void  bar(); // _ZN7ee670603barEv
+  ~ee67060(); // tgen
+  ee67060(); // tgen
+};
+//SIG(1 ee67060) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee67060 ::foo(){vfunc_called(this, "_ZN7ee670603fooEv");}
+void  ee67060 ::bar(){vfunc_called(this, "_ZN7ee670603barEv");}
+ee67060 ::~ee67060(){ note_dtor("ee67060", this);} // tgen
+ee67060 ::ee67060(){ note_ctor("ee67060", this);} // tgen
+
+static void Test_ee67060()
+{
+  extern Class_Descriptor cd_ee67060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee67060, buf);
+    ee67060 *dp, &lv = *(dp=new (buf) ee67060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee67060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee67060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(24,16), "ee67060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(16,12), "ee67060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(16,12), "ee67060");
+    check_base_class_offset(lv, (dd7060*), 0, "ee67060");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee67060.e");
+    test_class_info(&lv, &cd_ee67060);
+    dp->~ee67060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee67060(Test_ee67060, "ee67060", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee67060C1Ev();
+extern void _ZN7ee67060D1Ev();
+Name_Map name_map_ee67060[] = {
+  NSPAIR(_ZN7ee67060C1Ev),
+  NSPAIR(_ZN7ee67060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee67060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee67060[];
+extern void _ZN7ee670603barEv();
+extern void _ZN7ee670603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee670603barEv,_ZTv0_n12_N7ee670603barEv)();
+extern void ABISELECT(_ZThn16_N7ee670603barEv,_ZThn12_N7ee670603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee670603fooEv,_ZTv0_n16_N7ee670603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee670603fooEv,_ZThn12_N7ee670603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee67060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee67060[0]),
+  (VTBL_ENTRY)&_ZN7ee670603barEv,
+  (VTBL_ENTRY)&_ZN7ee670603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee67060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee670603barEv,_ZTv0_n12_N7ee670603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee670603fooEv,_ZTv0_n16_N7ee670603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee67060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee67060[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee67060[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee67060[] = {
+  {&(_ZTV7ee67060[3]),  3,11},
+  {&(_tg__ZTV6dd7060__7ee67060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee67060[4]),  4,6},
+  {&(_ZTV7ee67060[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee67060[];
+extern  VTBL_ENTRY _ZTV7ee67060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee67060[];
+static VTBL_ENTRY alt_thunk_names44[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn12_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn12_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee670603fooEv,_ZTv0_n16_N7ee670603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee670603fooEv,_ZThn12_N7ee670603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee670603barEv,_ZTv0_n12_N7ee670603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee670603barEv,_ZThn12_N7ee670603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee67060 = {  "ee67060", // class name
+  bases_ee67060, 4,
+  &(vtc_ee67060[0]), // expected_vtbl_contents
+  &(vtt_ee67060[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee67060),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee67060),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee67060),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names44,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee77060  : virtual dd7060 {
+  int e;
+  virtual void  foo(); // _ZN7ee770603fooEv
+  virtual void  bar(); // _ZN7ee770603barEv
+  ~ee77060(); // tgen
+  ee77060(); // tgen
+};
+//SIG(1 ee77060) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee77060 ::foo(){vfunc_called(this, "_ZN7ee770603fooEv");}
+void  ee77060 ::bar(){vfunc_called(this, "_ZN7ee770603barEv");}
+ee77060 ::~ee77060(){ note_dtor("ee77060", this);} // tgen
+ee77060 ::ee77060(){ note_ctor("ee77060", this);} // tgen
+
+static void Test_ee77060()
+{
+  extern Class_Descriptor cd_ee77060;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee77060, buf);
+    ee77060 *dp, &lv = *(dp=new (buf) ee77060());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee77060)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee77060)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc060*), ABISELECT(40,20), "ee77060");
+    check_base_class_offset(lv, (bb60*)(cc060*), ABISELECT(32,16), "ee77060");
+    check_base_class_offset(lv, (cc060*)(dd7060*), ABISELECT(32,16), "ee77060");
+    check_base_class_offset(lv, (dd7060*), ABISELECT(16,8), "ee77060");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee77060.e");
+    test_class_info(&lv, &cd_ee77060);
+    dp->~ee77060();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee77060(Test_ee77060, "ee77060", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee77060C1Ev();
+extern void _ZN7ee77060D1Ev();
+Name_Map name_map_ee77060[] = {
+  NSPAIR(_ZN7ee77060C1Ev),
+  NSPAIR(_ZN7ee77060D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc060;
+extern VTBL_ENTRY _ZTI5cc060[];
+extern  VTBL_ENTRY _ZTV5cc060[];
+extern Class_Descriptor cd_dd7060;
+extern VTBL_ENTRY _ZTI6dd7060[];
+extern  VTBL_ENTRY _ZTV6dd7060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7060[];
+static Base_Class bases_ee77060[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    4, //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_cc060,    ABISELECT(32,16), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7060,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee77060[];
+extern void _ZN7ee770603fooEv();
+extern void _ZN7ee770603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee770603barEv,_ZTv0_n16_N7ee770603barEv)();
+extern void ABISELECT(_ZThn16_N7ee770603barEv,_ZThn8_N7ee770603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N7ee770603fooEv,_ZTv0_n20_N7ee770603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee770603fooEv,_ZThn8_N7ee770603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee770603barEv,_ZTv0_n12_N7ee770603barEv)();
+extern void ABISELECT(_ZThn32_N7ee770603barEv,_ZThn16_N7ee770603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee770603fooEv,_ZTv0_n16_N7ee770603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee770603fooEv,_ZThn16_N7ee770603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee77060[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee77060[0]),
+  (VTBL_ENTRY)&_ZN7ee770603fooEv,
+  (VTBL_ENTRY)&_ZN7ee770603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee77060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee770603barEv,_ZTv0_n16_N7ee770603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee770603fooEv,_ZTv0_n20_N7ee770603fooEv),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee77060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee770603barEv,_ZTv0_n12_N7ee770603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee770603fooEv,_ZTv0_n16_N7ee770603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee77060[];
+extern void _ZN6dd70603barEv();
+extern void _ZN6dd70603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7060__7ee77060[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&_ZN6dd70603barEv,
+  (VTBL_ENTRY)&_ZN6dd70603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv)();
+extern void ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb605cc060__6dd7060__7ee77060[] = {
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7060[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv),
+};
+static  VTT_ENTRY vtt_ee77060[] = {
+  {&(_ZTV7ee77060[4]),  4,19},
+  {&(_ZTV7ee77060[11]),  11,19},
+  {&(_ZTV7ee77060[17]),  17,19},
+  {&(_tg__ZTV6dd7060__7ee77060[3]),  3,5},
+  {&(_tg__ZTV4bb605cc060__6dd7060__7ee77060[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee77060[];
+extern  VTBL_ENTRY _ZTV7ee77060[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee77060[];
+static VTBL_ENTRY alt_thunk_names45[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd70603fooEv,_ZTv0_n16_N6dd70603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603fooEv,_ZThn8_N6dd70603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd70603barEv,_ZTv0_n12_N6dd70603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd70603barEv,_ZThn8_N6dd70603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee770603fooEv,_ZTv0_n16_N7ee770603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee770603fooEv,_ZThn16_N7ee770603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee770603barEv,_ZTv0_n12_N7ee770603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee770603barEv,_ZThn16_N7ee770603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee770603fooEv,_ZTv0_n20_N7ee770603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee770603fooEv,_ZThn8_N7ee770603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee770603barEv,_ZTv0_n16_N7ee770603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee770603barEv,_ZThn8_N7ee770603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee77060 = {  "ee77060", // class name
+  bases_ee77060, 4,
+  &(vtc_ee77060[0]), // expected_vtbl_contents
+  &(vtt_ee77060[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee77060),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee77060),19, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee77060),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names45,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  cc160  : virtual bb60 {
+  int c;
+  ~cc160(); // tgen
+  cc160(); // tgen
+};
+//SIG(-1 cc160) C1{ VBC2{ BC3{ Fi} v1 v2 Fi} Fi}
+
+
+cc160 ::~cc160(){ note_dtor("cc160", this);} // tgen
+cc160 ::cc160(){ note_ctor("cc160", this);} // tgen
+
+static void Test_cc160()
+{
+  extern Class_Descriptor cd_cc160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_cc160, buf);
+    cc160 *dp, &lv = *(dp=new (buf) cc160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(cc160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(cc160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(24,12), "cc160");
+    check_base_class_offset(lv, (bb60*), ABISELECT(16,8), "cc160");
+    check_field_offset(lv, c, ABISELECT(8,4), "cc160.c");
+    test_class_info(&lv, &cd_cc160);
+    dp->~cc160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vcc160(Test_cc160, "cc160", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN5cc160C1Ev();
+extern void _ZN5cc160D1Ev();
+Name_Map name_map_cc160[] = {
+  NSPAIR(_ZN5cc160C1Ev),
+  NSPAIR(_ZN5cc160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+static Base_Class bases_cc160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //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 _ZTI5cc160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_cc160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV5cc160[];
+static  VTT_ENTRY vtt_cc160[] = {
+  {&(_ZTV5cc160[3]),  3,9},
+  {&(_ZTV5cc160[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+Class_Descriptor cd_cc160 = {  "cc160", // class name
+  bases_cc160, 2,
+  &(vtc_cc160[0]), // expected_vtbl_contents
+  &(vtt_cc160[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI5cc160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV5cc160),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5cc160),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  dd0160  : cc160 {
+  int d;
+  ~dd0160(); // tgen
+  dd0160(); // tgen
+};
+//SIG(-1 dd0160) C1{ BC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} Fi}
+
+
+dd0160 ::~dd0160(){ note_dtor("dd0160", this);} // tgen
+dd0160 ::dd0160(){ note_ctor("dd0160", this);} // tgen
+
+static void Test_dd0160()
+{
+  extern Class_Descriptor cd_dd0160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_dd0160, buf);
+    dd0160 *dp, &lv = *(dp=new (buf) dd0160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(dd0160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd0160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(24,16), "dd0160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(16,12), "dd0160");
+    check_base_class_offset(lv, (cc160*), 0, "dd0160");
+    check_field_offset(lv, d, ABISELECT(12,8), "dd0160.d");
+    test_class_info(&lv, &cd_dd0160);
+    dp->~dd0160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd0160(Test_dd0160, "dd0160", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd0160C1Ev();
+extern void _ZN6dd0160D1Ev();
+Name_Map name_map_dd0160[] = {
+  NSPAIR(_ZN6dd0160C1Ev),
+  NSPAIR(_ZN6dd0160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd0160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd0160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd0160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd0160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd0160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd0160[] = {
+  {&(_ZTV6dd0160[3]),  3,9},
+  {&(_tg__ZTV5cc160__6dd0160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd0160[4]),  4,6},
+  {&(_ZTV6dd0160[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+Class_Descriptor cd_dd0160 = {  "dd0160", // class name
+  bases_dd0160, 3,
+  &(vtc_dd0160[0]), // expected_vtbl_contents
+  &(vtt_dd0160[0]), // expected_vtt_contents
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI6dd0160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd0160),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd0160),4, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee00160  : dd0160 {
+  int e;
+  ~ee00160(); // tgen
+  ee00160(); // tgen
+};
+//SIG(1 ee00160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee00160 ::~ee00160(){ note_dtor("ee00160", this);} // tgen
+ee00160 ::ee00160(){ note_ctor("ee00160", this);} // tgen
+
+static void Test_ee00160()
+{
+  extern Class_Descriptor cd_ee00160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee00160, buf);
+    ee00160 *dp, &lv = *(dp=new (buf) ee00160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee00160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee00160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee00160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(24,16), "ee00160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), 0, "ee00160");
+    check_base_class_offset(lv, (dd0160*), 0, "ee00160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee00160.e");
+    test_class_info(&lv, &cd_ee00160);
+    dp->~ee00160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee00160(Test_ee00160, "ee00160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee00160C1Ev();
+extern void _ZN7ee00160D1Ev();
+Name_Map name_map_ee00160[] = {
+  NSPAIR(_ZN7ee00160C1Ev),
+  NSPAIR(_ZN7ee00160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee00160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee00160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee00160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee00160[0]),
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee00160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee00160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee00160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee00160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee00160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee00160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee00160[] = {
+  {&(_ZTV7ee00160[3]),  3,9},
+  {&(_tg__ZTV6dd0160__7ee00160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee00160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee00160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee00160[4]),  4,6},
+  {&(_ZTV7ee00160[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee00160[];
+extern  VTBL_ENTRY _ZTV7ee00160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee00160[];
+Class_Descriptor cd_ee00160 = {  "ee00160", // class name
+  bases_ee00160, 4,
+  &(vtc_ee00160[0]), // expected_vtbl_contents
+  &(vtt_ee00160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee00160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee00160),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee00160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee10160  : virtual dd0160 {
+  int e;
+  ~ee10160(); // tgen
+  ee10160(); // tgen
+};
+//SIG(1 ee10160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee10160 ::~ee10160(){ note_dtor("ee10160", this);} // tgen
+ee10160 ::ee10160(){ note_ctor("ee10160", this);} // tgen
+
+static void Test_ee10160()
+{
+  extern Class_Descriptor cd_ee10160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee10160, buf);
+    ee10160 *dp, &lv = *(dp=new (buf) ee10160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee10160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee10160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee10160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(32,20), "ee10160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), ABISELECT(16,8), "ee10160");
+    check_base_class_offset(lv, (dd0160*), ABISELECT(16,8), "ee10160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee10160.e");
+    test_class_info(&lv, &cd_ee10160);
+    dp->~ee10160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee10160(Test_ee10160, "ee10160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee10160C1Ev();
+extern void _ZN7ee10160D1Ev();
+Name_Map name_map_ee10160[] = {
+  NSPAIR(_ZN7ee10160C1Ev),
+  NSPAIR(_ZN7ee10160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee10160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee10160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee10160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee10160[0]),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee10160[0]),
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee10160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee10160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee10160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee10160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee10160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee10160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee10160[] = {
+  {&(_ZTV7ee10160[4]),  4,13},
+  {&(_ZTV7ee10160[7]),  7,13},
+  {&(_ZTV7ee10160[11]),  11,13},
+  {&(_tg__ZTV6dd0160__7ee10160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee10160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee10160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee10160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee10160[];
+extern  VTBL_ENTRY _ZTV7ee10160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee10160[];
+Class_Descriptor cd_ee10160 = {  "ee10160", // class name
+  bases_ee10160, 4,
+  &(vtc_ee10160[0]), // expected_vtbl_contents
+  &(vtt_ee10160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee10160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee10160),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee10160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee20160  : dd0160 {
+  int e;
+  virtual void  foo(); // _ZN7ee201603fooEv
+  ~ee20160(); // tgen
+  ee20160(); // tgen
+};
+//SIG(1 ee20160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee20160 ::foo(){vfunc_called(this, "_ZN7ee201603fooEv");}
+ee20160 ::~ee20160(){ note_dtor("ee20160", this);} // tgen
+ee20160 ::ee20160(){ note_ctor("ee20160", this);} // tgen
+
+static void Test_ee20160()
+{
+  extern Class_Descriptor cd_ee20160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee20160, buf);
+    ee20160 *dp, &lv = *(dp=new (buf) ee20160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee20160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee20160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee20160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(24,16), "ee20160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), 0, "ee20160");
+    check_base_class_offset(lv, (dd0160*), 0, "ee20160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee20160.e");
+    test_class_info(&lv, &cd_ee20160);
+    dp->~ee20160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee20160(Test_ee20160, "ee20160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee20160C1Ev();
+extern void _ZN7ee20160D1Ev();
+Name_Map name_map_ee20160[] = {
+  NSPAIR(_ZN7ee20160C1Ev),
+  NSPAIR(_ZN7ee20160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee20160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee20160[];
+extern void _ZN7ee201603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee201603fooEv,_ZTv0_n16_N7ee201603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee201603fooEv,_ZThn16_N7ee201603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee20160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee20160[0]),
+  (VTBL_ENTRY)&_ZN7ee201603fooEv,
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee20160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee201603fooEv,_ZTv0_n16_N7ee201603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee20160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee20160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee20160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee20160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee20160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee20160[] = {
+  {&(_ZTV7ee20160[3]),  3,10},
+  {&(_tg__ZTV6dd0160__7ee20160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee20160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee20160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee20160[4]),  4,6},
+  {&(_ZTV7ee20160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee20160[];
+extern  VTBL_ENTRY _ZTV7ee20160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee20160[];
+static VTBL_ENTRY alt_thunk_names46[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee201603fooEv,_ZTv0_n16_N7ee201603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee201603fooEv,_ZThn16_N7ee201603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee20160 = {  "ee20160", // class name
+  bases_ee20160, 4,
+  &(vtc_ee20160[0]), // expected_vtbl_contents
+  &(vtt_ee20160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee20160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee20160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee20160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names46,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee30160  : virtual dd0160 {
+  int e;
+  virtual void  foo(); // _ZN7ee301603fooEv
+  ~ee30160(); // tgen
+  ee30160(); // tgen
+};
+//SIG(1 ee30160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee30160 ::foo(){vfunc_called(this, "_ZN7ee301603fooEv");}
+ee30160 ::~ee30160(){ note_dtor("ee30160", this);} // tgen
+ee30160 ::ee30160(){ note_ctor("ee30160", this);} // tgen
+
+static void Test_ee30160()
+{
+  extern Class_Descriptor cd_ee30160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee30160, buf);
+    ee30160 *dp, &lv = *(dp=new (buf) ee30160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee30160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee30160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee30160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(32,20), "ee30160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), ABISELECT(16,8), "ee30160");
+    check_base_class_offset(lv, (dd0160*), ABISELECT(16,8), "ee30160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee30160.e");
+    test_class_info(&lv, &cd_ee30160);
+    dp->~ee30160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee30160(Test_ee30160, "ee30160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee30160C1Ev();
+extern void _ZN7ee30160D1Ev();
+Name_Map name_map_ee30160[] = {
+  NSPAIR(_ZN7ee30160C1Ev),
+  NSPAIR(_ZN7ee30160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee30160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee30160[];
+extern void _ZN7ee301603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee301603fooEv,_ZTv0_n16_N7ee301603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee301603fooEv,_ZThn20_N7ee301603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee30160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee30160[0]),
+  (VTBL_ENTRY)&_ZN7ee301603fooEv,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee30160[0]),
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee30160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee301603fooEv,_ZTv0_n16_N7ee301603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee30160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee30160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee30160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee30160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee30160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee30160[] = {
+  {&(_ZTV7ee30160[4]),  4,14},
+  {&(_ZTV7ee30160[8]),  8,14},
+  {&(_ZTV7ee30160[12]),  12,14},
+  {&(_tg__ZTV6dd0160__7ee30160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee30160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee30160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee30160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee30160[];
+extern  VTBL_ENTRY _ZTV7ee30160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee30160[];
+static VTBL_ENTRY alt_thunk_names47[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee301603fooEv,_ZTv0_n16_N7ee301603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee301603fooEv,_ZThn20_N7ee301603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee30160 = {  "ee30160", // class name
+  bases_ee30160, 4,
+  &(vtc_ee30160[0]), // expected_vtbl_contents
+  &(vtt_ee30160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee30160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee30160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee30160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names47,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee40160  : dd0160 {
+  int e;
+  virtual void  bar(); // _ZN7ee401603barEv
+  ~ee40160(); // tgen
+  ee40160(); // tgen
+};
+//SIG(1 ee40160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee40160 ::bar(){vfunc_called(this, "_ZN7ee401603barEv");}
+ee40160 ::~ee40160(){ note_dtor("ee40160", this);} // tgen
+ee40160 ::ee40160(){ note_ctor("ee40160", this);} // tgen
+
+static void Test_ee40160()
+{
+  extern Class_Descriptor cd_ee40160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee40160, buf);
+    ee40160 *dp, &lv = *(dp=new (buf) ee40160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee40160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee40160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee40160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(24,16), "ee40160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), 0, "ee40160");
+    check_base_class_offset(lv, (dd0160*), 0, "ee40160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee40160.e");
+    test_class_info(&lv, &cd_ee40160);
+    dp->~ee40160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee40160(Test_ee40160, "ee40160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee40160C1Ev();
+extern void _ZN7ee40160D1Ev();
+Name_Map name_map_ee40160[] = {
+  NSPAIR(_ZN7ee40160C1Ev),
+  NSPAIR(_ZN7ee40160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee40160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee40160[];
+extern void _ZN7ee401603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee401603barEv,_ZTv0_n12_N7ee401603barEv)();
+extern void ABISELECT(_ZThn24_N7ee401603barEv,_ZThn16_N7ee401603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee40160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee40160[0]),
+  (VTBL_ENTRY)&_ZN7ee401603barEv,
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee40160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee401603barEv,_ZTv0_n12_N7ee401603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee40160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee40160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee40160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee40160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee40160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee40160[] = {
+  {&(_ZTV7ee40160[3]),  3,10},
+  {&(_tg__ZTV6dd0160__7ee40160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee40160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee40160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee40160[4]),  4,6},
+  {&(_ZTV7ee40160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee40160[];
+extern  VTBL_ENTRY _ZTV7ee40160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee40160[];
+static VTBL_ENTRY alt_thunk_names48[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee401603barEv,_ZTv0_n12_N7ee401603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee401603barEv,_ZThn16_N7ee401603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee40160 = {  "ee40160", // class name
+  bases_ee40160, 4,
+  &(vtc_ee40160[0]), // expected_vtbl_contents
+  &(vtt_ee40160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee40160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee40160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee40160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names48,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee50160  : virtual dd0160 {
+  int e;
+  virtual void  bar(); // _ZN7ee501603barEv
+  ~ee50160(); // tgen
+  ee50160(); // tgen
+};
+//SIG(1 ee50160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee50160 ::bar(){vfunc_called(this, "_ZN7ee501603barEv");}
+ee50160 ::~ee50160(){ note_dtor("ee50160", this);} // tgen
+ee50160 ::ee50160(){ note_ctor("ee50160", this);} // tgen
+
+static void Test_ee50160()
+{
+  extern Class_Descriptor cd_ee50160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee50160, buf);
+    ee50160 *dp, &lv = *(dp=new (buf) ee50160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee50160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee50160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee50160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(32,20), "ee50160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), ABISELECT(16,8), "ee50160");
+    check_base_class_offset(lv, (dd0160*), ABISELECT(16,8), "ee50160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee50160.e");
+    test_class_info(&lv, &cd_ee50160);
+    dp->~ee50160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee50160(Test_ee50160, "ee50160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee50160C1Ev();
+extern void _ZN7ee50160D1Ev();
+Name_Map name_map_ee50160[] = {
+  NSPAIR(_ZN7ee50160C1Ev),
+  NSPAIR(_ZN7ee50160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee50160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee50160[];
+extern void _ZN7ee501603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee501603barEv,_ZTv0_n12_N7ee501603barEv)();
+extern void ABISELECT(_ZThn32_N7ee501603barEv,_ZThn20_N7ee501603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee50160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee50160[0]),
+  (VTBL_ENTRY)&_ZN7ee501603barEv,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee50160[0]),
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee50160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee501603barEv,_ZTv0_n12_N7ee501603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee50160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee50160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee50160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee50160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee50160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee50160[] = {
+  {&(_ZTV7ee50160[4]),  4,14},
+  {&(_ZTV7ee50160[8]),  8,14},
+  {&(_ZTV7ee50160[12]),  12,14},
+  {&(_tg__ZTV6dd0160__7ee50160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee50160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee50160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee50160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee50160[];
+extern  VTBL_ENTRY _ZTV7ee50160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee50160[];
+static VTBL_ENTRY alt_thunk_names49[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee501603barEv,_ZTv0_n12_N7ee501603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee501603barEv,_ZThn20_N7ee501603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee50160 = {  "ee50160", // class name
+  bases_ee50160, 4,
+  &(vtc_ee50160[0]), // expected_vtbl_contents
+  &(vtt_ee50160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee50160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee50160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee50160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names49,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee60160  : dd0160 {
+  int e;
+  virtual void  foo(); // _ZN7ee601603fooEv
+  virtual void  bar(); // _ZN7ee601603barEv
+  ~ee60160(); // tgen
+  ee60160(); // tgen
+};
+//SIG(1 ee60160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee60160 ::foo(){vfunc_called(this, "_ZN7ee601603fooEv");}
+void  ee60160 ::bar(){vfunc_called(this, "_ZN7ee601603barEv");}
+ee60160 ::~ee60160(){ note_dtor("ee60160", this);} // tgen
+ee60160 ::ee60160(){ note_ctor("ee60160", this);} // tgen
+
+static void Test_ee60160()
+{
+  extern Class_Descriptor cd_ee60160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee60160, buf);
+    ee60160 *dp, &lv = *(dp=new (buf) ee60160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee60160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee60160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee60160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(24,16), "ee60160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), 0, "ee60160");
+    check_base_class_offset(lv, (dd0160*), 0, "ee60160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee60160.e");
+    test_class_info(&lv, &cd_ee60160);
+    dp->~ee60160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee60160(Test_ee60160, "ee60160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee60160C1Ev();
+extern void _ZN7ee60160D1Ev();
+Name_Map name_map_ee60160[] = {
+  NSPAIR(_ZN7ee60160C1Ev),
+  NSPAIR(_ZN7ee60160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee60160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee60160[];
+extern void _ZN7ee601603fooEv();
+extern void _ZN7ee601603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee601603barEv,_ZTv0_n12_N7ee601603barEv)();
+extern void ABISELECT(_ZThn24_N7ee601603barEv,_ZThn16_N7ee601603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee601603fooEv,_ZTv0_n16_N7ee601603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee601603fooEv,_ZThn16_N7ee601603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee60160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee60160[0]),
+  (VTBL_ENTRY)&_ZN7ee601603fooEv,
+  (VTBL_ENTRY)&_ZN7ee601603barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee60160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee601603barEv,_ZTv0_n12_N7ee601603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee601603fooEv,_ZTv0_n16_N7ee601603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee60160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee60160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee60160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee60160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee60160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee60160[] = {
+  {&(_ZTV7ee60160[3]),  3,11},
+  {&(_tg__ZTV6dd0160__7ee60160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee60160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee60160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee60160[4]),  4,6},
+  {&(_ZTV7ee60160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee60160[];
+extern  VTBL_ENTRY _ZTV7ee60160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee60160[];
+static VTBL_ENTRY alt_thunk_names50[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee601603fooEv,_ZTv0_n16_N7ee601603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee601603fooEv,_ZThn16_N7ee601603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee601603barEv,_ZTv0_n12_N7ee601603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee601603barEv,_ZThn16_N7ee601603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee60160 = {  "ee60160", // class name
+  bases_ee60160, 4,
+  &(vtc_ee60160[0]), // expected_vtbl_contents
+  &(vtt_ee60160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee60160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee60160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee60160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names50,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee70160  : virtual dd0160 {
+  int e;
+  virtual void  foo(); // _ZN7ee701603fooEv
+  virtual void  bar(); // _ZN7ee701603barEv
+  ~ee70160(); // tgen
+  ee70160(); // tgen
+};
+//SIG(1 ee70160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee70160 ::foo(){vfunc_called(this, "_ZN7ee701603fooEv");}
+void  ee70160 ::bar(){vfunc_called(this, "_ZN7ee701603barEv");}
+ee70160 ::~ee70160(){ note_dtor("ee70160", this);} // tgen
+ee70160 ::ee70160(){ note_ctor("ee70160", this);} // tgen
+
+static void Test_ee70160()
+{
+  extern Class_Descriptor cd_ee70160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee70160, buf);
+    ee70160 *dp, &lv = *(dp=new (buf) ee70160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee70160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee70160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee70160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd0160*), ABISELECT(32,20), "ee70160");
+    check_base_class_offset(lv, (cc160*)(dd0160*), ABISELECT(16,8), "ee70160");
+    check_base_class_offset(lv, (dd0160*), ABISELECT(16,8), "ee70160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee70160.e");
+    test_class_info(&lv, &cd_ee70160);
+    dp->~ee70160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee70160(Test_ee70160, "ee70160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee70160C1Ev();
+extern void _ZN7ee70160D1Ev();
+Name_Map name_map_ee70160[] = {
+  NSPAIR(_ZN7ee70160C1Ev),
+  NSPAIR(_ZN7ee70160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd0160;
+extern VTBL_ENTRY _ZTI6dd0160[];
+extern  VTBL_ENTRY _ZTV6dd0160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd0160[];
+static Base_Class bases_ee70160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee70160[];
+extern void _ZN7ee701603fooEv();
+extern void _ZN7ee701603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee701603barEv,_ZTv0_n12_N7ee701603barEv)();
+extern void ABISELECT(_ZThn32_N7ee701603barEv,_ZThn20_N7ee701603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee701603fooEv,_ZTv0_n16_N7ee701603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee701603fooEv,_ZThn20_N7ee701603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee70160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee70160[0]),
+  (VTBL_ENTRY)&_ZN7ee701603fooEv,
+  (VTBL_ENTRY)&_ZN7ee701603barEv,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee70160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee70160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee701603barEv,_ZTv0_n12_N7ee701603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee701603fooEv,_ZTv0_n16_N7ee701603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee70160[];
+static  VTBL_ENTRY _tg__ZTV6dd0160__7ee70160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd0160__7ee70160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd0160__7ee70160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd0160__7ee70160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd0160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee70160[] = {
+  {&(_ZTV7ee70160[4]),  4,15},
+  {&(_ZTV7ee70160[9]),  9,15},
+  {&(_ZTV7ee70160[13]),  13,15},
+  {&(_tg__ZTV6dd0160__7ee70160[3]),  3,3},
+  {&(_tg__ZTV5cc1606dd0160__7ee70160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd0160__7ee70160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd0160__7ee70160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee70160[];
+extern  VTBL_ENTRY _ZTV7ee70160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee70160[];
+static VTBL_ENTRY alt_thunk_names51[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee701603fooEv,_ZTv0_n16_N7ee701603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee701603fooEv,_ZThn20_N7ee701603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee701603barEv,_ZTv0_n12_N7ee701603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee701603barEv,_ZThn20_N7ee701603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee70160 = {  "ee70160", // class name
+  bases_ee70160, 4,
+  &(vtc_ee70160[0]), // expected_vtbl_contents
+  &(vtt_ee70160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee70160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee70160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee70160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names51,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd1160  : virtual cc160 {
+  int d;
+  ~dd1160(); // tgen
+  dd1160(); // tgen
+};
+//SIG(-1 dd1160) C1{ VBC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} Fi}
+
+
+dd1160 ::~dd1160(){ note_dtor("dd1160", this);} // tgen
+dd1160 ::dd1160(){ note_ctor("dd1160", this);} // tgen
+
+static void Test_dd1160()
+{
+  extern Class_Descriptor cd_dd1160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,8)];
+    init_test(&cd_dd1160, buf);
+    dd1160 *dp, &lv = *(dp=new (buf) dd1160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,28), "sizeof(dd1160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd1160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,20), "dd1160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,16), "dd1160");
+    check_base_class_offset(lv, (cc160*), ABISELECT(16,8), "dd1160");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd1160.d");
+    test_class_info(&lv, &cd_dd1160);
+    dp->~dd1160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd1160(Test_dd1160, "dd1160", ABISELECT(48,28));
+
+#else // __cplusplus
+
+extern void _ZN6dd1160C1Ev();
+extern void _ZN6dd1160D1Ev();
+Name_Map name_map_dd1160[] = {
+  NSPAIR(_ZN6dd1160C1Ev),
+  NSPAIR(_ZN6dd1160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd1160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd1160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd1160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd1160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd1160[] = {
+  {&(_ZTV6dd1160[4]),  4,13},
+  {&(_ZTV6dd1160[7]),  7,13},
+  {&(_ZTV6dd1160[11]),  11,13},
+  {&(_tg__ZTV5cc160__6dd1160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd1160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+Class_Descriptor cd_dd1160 = {  "dd1160", // class name
+  bases_dd1160, 3,
+  &(vtc_dd1160[0]), // expected_vtbl_contents
+  &(vtt_dd1160[0]), // expected_vtt_contents
+  ABISELECT(48,28), // object size
+  NSPAIRA(_ZTI6dd1160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd1160),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd1160),5, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee01160  : dd1160 {
+  int e;
+  ~ee01160(); // tgen
+  ee01160(); // tgen
+};
+//SIG(1 ee01160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee01160 ::~ee01160(){ note_dtor("ee01160", this);} // tgen
+ee01160 ::ee01160(){ note_ctor("ee01160", this);} // tgen
+
+static void Test_ee01160()
+{
+  extern Class_Descriptor cd_ee01160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee01160, buf);
+    ee01160 *dp, &lv = *(dp=new (buf) ee01160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee01160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee01160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee01160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee01160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(16,12), "ee01160");
+    check_base_class_offset(lv, (dd1160*), 0, "ee01160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee01160.e");
+    test_class_info(&lv, &cd_ee01160);
+    dp->~ee01160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee01160(Test_ee01160, "ee01160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee01160C1Ev();
+extern void _ZN7ee01160D1Ev();
+Name_Map name_map_ee01160[] = {
+  NSPAIR(_ZN7ee01160C1Ev),
+  NSPAIR(_ZN7ee01160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee01160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee01160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee01160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee01160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee01160[0]),
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee01160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee01160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee01160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee01160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee01160[] = {
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee01160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee01160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee01160[] = {
+  {&(_ZTV7ee01160[4]),  4,13},
+  {&(_tg__ZTV6dd1160__7ee01160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee01160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee01160[4]),  4,6},
+  {&(_ZTV7ee01160[7]),  7,13},
+  {&(_ZTV7ee01160[11]),  11,13},
+  {&(_tg__ZTV5cc160__7ee01160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee01160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee01160[];
+extern  VTBL_ENTRY _ZTV7ee01160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee01160[];
+Class_Descriptor cd_ee01160 = {  "ee01160", // class name
+  bases_ee01160, 4,
+  &(vtc_ee01160[0]), // expected_vtbl_contents
+  &(vtt_ee01160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee01160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee01160),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee01160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee11160  : virtual dd1160 {
+  int e;
+  ~ee11160(); // tgen
+  ee11160(); // tgen
+};
+//SIG(1 ee11160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} Fi}
+
+
+ee11160 ::~ee11160(){ note_dtor("ee11160", this);} // tgen
+ee11160 ::ee11160(){ note_ctor("ee11160", this);} // tgen
+
+static void Test_ee11160()
+{
+  extern Class_Descriptor cd_ee11160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee11160, buf);
+    ee11160 *dp, &lv = *(dp=new (buf) ee11160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee11160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee11160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee11160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee11160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(32,16), "ee11160");
+    check_base_class_offset(lv, (dd1160*), ABISELECT(16,8), "ee11160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee11160.e");
+    test_class_info(&lv, &cd_ee11160);
+    dp->~ee11160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee11160(Test_ee11160, "ee11160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee11160C1Ev();
+extern void _ZN7ee11160D1Ev();
+Name_Map name_map_ee11160[] = {
+  NSPAIR(_ZN7ee11160C1Ev),
+  NSPAIR(_ZN7ee11160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee11160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee11160[];
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee11160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee11160[0]),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee11160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee11160[0]),
+  0,
+  0,
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee11160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee11160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee11160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee11160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee11160[] = {
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee11160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee11160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee11160[] = {
+  {&(_ZTV7ee11160[5]),  5,18},
+  {&(_ZTV7ee11160[9]),  9,18},
+  {&(_ZTV7ee11160[12]),  12,18},
+  {&(_ZTV7ee11160[16]),  16,18},
+  {&(_tg__ZTV6dd1160__7ee11160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee11160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee11160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee11160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee11160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee11160[];
+extern  VTBL_ENTRY _ZTV7ee11160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee11160[];
+Class_Descriptor cd_ee11160 = {  "ee11160", // class name
+  bases_ee11160, 4,
+  &(vtc_ee11160[0]), // expected_vtbl_contents
+  &(vtt_ee11160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee11160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee11160),18, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee11160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee21160  : dd1160 {
+  int e;
+  virtual void  foo(); // _ZN7ee211603fooEv
+  ~ee21160(); // tgen
+  ee21160(); // tgen
+};
+//SIG(1 ee21160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee21160 ::foo(){vfunc_called(this, "_ZN7ee211603fooEv");}
+ee21160 ::~ee21160(){ note_dtor("ee21160", this);} // tgen
+ee21160 ::ee21160(){ note_ctor("ee21160", this);} // tgen
+
+static void Test_ee21160()
+{
+  extern Class_Descriptor cd_ee21160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee21160, buf);
+    ee21160 *dp, &lv = *(dp=new (buf) ee21160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee21160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee21160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee21160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee21160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(16,12), "ee21160");
+    check_base_class_offset(lv, (dd1160*), 0, "ee21160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee21160.e");
+    test_class_info(&lv, &cd_ee21160);
+    dp->~ee21160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee21160(Test_ee21160, "ee21160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee21160C1Ev();
+extern void _ZN7ee21160D1Ev();
+Name_Map name_map_ee21160[] = {
+  NSPAIR(_ZN7ee21160C1Ev),
+  NSPAIR(_ZN7ee21160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee21160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee21160[];
+extern void _ZN7ee211603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee211603fooEv,_ZTv0_n16_N7ee211603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee211603fooEv,_ZThn20_N7ee211603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee21160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee21160[0]),
+  (VTBL_ENTRY)&_ZN7ee211603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee21160[0]),
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee21160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee211603fooEv,_ZTv0_n16_N7ee211603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee21160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee21160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee21160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee21160[] = {
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee21160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee21160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee21160[] = {
+  {&(_ZTV7ee21160[4]),  4,14},
+  {&(_tg__ZTV6dd1160__7ee21160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee21160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee21160[4]),  4,6},
+  {&(_ZTV7ee21160[8]),  8,14},
+  {&(_ZTV7ee21160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee21160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee21160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee21160[];
+extern  VTBL_ENTRY _ZTV7ee21160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee21160[];
+static VTBL_ENTRY alt_thunk_names52[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee211603fooEv,_ZTv0_n16_N7ee211603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee211603fooEv,_ZThn20_N7ee211603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee21160 = {  "ee21160", // class name
+  bases_ee21160, 4,
+  &(vtc_ee21160[0]), // expected_vtbl_contents
+  &(vtt_ee21160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee21160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee21160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee21160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names52,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee31160  : virtual dd1160 {
+  int e;
+  virtual void  foo(); // _ZN7ee311603fooEv
+  ~ee31160(); // tgen
+  ee31160(); // tgen
+};
+//SIG(1 ee31160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee31160 ::foo(){vfunc_called(this, "_ZN7ee311603fooEv");}
+ee31160 ::~ee31160(){ note_dtor("ee31160", this);} // tgen
+ee31160 ::ee31160(){ note_ctor("ee31160", this);} // tgen
+
+static void Test_ee31160()
+{
+  extern Class_Descriptor cd_ee31160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee31160, buf);
+    ee31160 *dp, &lv = *(dp=new (buf) ee31160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee31160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee31160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee31160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee31160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(32,16), "ee31160");
+    check_base_class_offset(lv, (dd1160*), ABISELECT(16,8), "ee31160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee31160.e");
+    test_class_info(&lv, &cd_ee31160);
+    dp->~ee31160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee31160(Test_ee31160, "ee31160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee31160C1Ev();
+extern void _ZN7ee31160D1Ev();
+Name_Map name_map_ee31160[] = {
+  NSPAIR(_ZN7ee31160C1Ev),
+  NSPAIR(_ZN7ee31160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee31160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee31160[];
+extern void _ZN7ee311603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee311603fooEv,_ZTv0_n16_N7ee311603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee311603fooEv,_ZThn24_N7ee311603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee31160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee31160[0]),
+  (VTBL_ENTRY)&_ZN7ee311603fooEv,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee31160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee31160[0]),
+  ABISELECT(-48,-24),
+  0,
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee31160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee311603fooEv,_ZTv0_n16_N7ee311603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee31160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee31160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee31160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee31160[] = {
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee31160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee31160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee31160[] = {
+  {&(_ZTV7ee31160[5]),  5,19},
+  {&(_ZTV7ee31160[10]),  10,19},
+  {&(_ZTV7ee31160[13]),  13,19},
+  {&(_ZTV7ee31160[17]),  17,19},
+  {&(_tg__ZTV6dd1160__7ee31160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee31160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee31160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee31160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee31160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee31160[];
+extern  VTBL_ENTRY _ZTV7ee31160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee31160[];
+static VTBL_ENTRY alt_thunk_names53[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee311603fooEv,_ZTv0_n16_N7ee311603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee311603fooEv,_ZThn24_N7ee311603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee31160 = {  "ee31160", // class name
+  bases_ee31160, 4,
+  &(vtc_ee31160[0]), // expected_vtbl_contents
+  &(vtt_ee31160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee31160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee31160),19, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee31160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names53,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee41160  : dd1160 {
+  int e;
+  virtual void  bar(); // _ZN7ee411603barEv
+  ~ee41160(); // tgen
+  ee41160(); // tgen
+};
+//SIG(1 ee41160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee41160 ::bar(){vfunc_called(this, "_ZN7ee411603barEv");}
+ee41160 ::~ee41160(){ note_dtor("ee41160", this);} // tgen
+ee41160 ::ee41160(){ note_ctor("ee41160", this);} // tgen
+
+static void Test_ee41160()
+{
+  extern Class_Descriptor cd_ee41160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee41160, buf);
+    ee41160 *dp, &lv = *(dp=new (buf) ee41160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee41160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee41160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee41160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee41160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(16,12), "ee41160");
+    check_base_class_offset(lv, (dd1160*), 0, "ee41160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee41160.e");
+    test_class_info(&lv, &cd_ee41160);
+    dp->~ee41160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee41160(Test_ee41160, "ee41160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee41160C1Ev();
+extern void _ZN7ee41160D1Ev();
+Name_Map name_map_ee41160[] = {
+  NSPAIR(_ZN7ee41160C1Ev),
+  NSPAIR(_ZN7ee41160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee41160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee41160[];
+extern void _ZN7ee411603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee411603barEv,_ZTv0_n12_N7ee411603barEv)();
+extern void ABISELECT(_ZThn32_N7ee411603barEv,_ZThn20_N7ee411603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee41160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee41160[0]),
+  (VTBL_ENTRY)&_ZN7ee411603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee41160[0]),
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee41160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee411603barEv,_ZTv0_n12_N7ee411603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee41160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee41160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee41160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee41160[] = {
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee41160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee41160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee41160[] = {
+  {&(_ZTV7ee41160[4]),  4,14},
+  {&(_tg__ZTV6dd1160__7ee41160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee41160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee41160[4]),  4,6},
+  {&(_ZTV7ee41160[8]),  8,14},
+  {&(_ZTV7ee41160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee41160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee41160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee41160[];
+extern  VTBL_ENTRY _ZTV7ee41160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee41160[];
+static VTBL_ENTRY alt_thunk_names54[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee411603barEv,_ZTv0_n12_N7ee411603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee411603barEv,_ZThn20_N7ee411603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee41160 = {  "ee41160", // class name
+  bases_ee41160, 4,
+  &(vtc_ee41160[0]), // expected_vtbl_contents
+  &(vtt_ee41160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee41160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee41160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee41160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names54,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee51160  : virtual dd1160 {
+  int e;
+  virtual void  bar(); // _ZN7ee511603barEv
+  ~ee51160(); // tgen
+  ee51160(); // tgen
+};
+//SIG(1 ee51160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} Fi} v1 Fi}
+
+
+void  ee51160 ::bar(){vfunc_called(this, "_ZN7ee511603barEv");}
+ee51160 ::~ee51160(){ note_dtor("ee51160", this);} // tgen
+ee51160 ::ee51160(){ note_ctor("ee51160", this);} // tgen
+
+static void Test_ee51160()
+{
+  extern Class_Descriptor cd_ee51160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee51160, buf);
+    ee51160 *dp, &lv = *(dp=new (buf) ee51160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee51160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee51160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee51160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee51160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(32,16), "ee51160");
+    check_base_class_offset(lv, (dd1160*), ABISELECT(16,8), "ee51160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee51160.e");
+    test_class_info(&lv, &cd_ee51160);
+    dp->~ee51160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee51160(Test_ee51160, "ee51160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee51160C1Ev();
+extern void _ZN7ee51160D1Ev();
+Name_Map name_map_ee51160[] = {
+  NSPAIR(_ZN7ee51160C1Ev),
+  NSPAIR(_ZN7ee51160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee51160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee51160[];
+extern void _ZN7ee511603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee511603barEv,_ZTv0_n12_N7ee511603barEv)();
+extern void ABISELECT(_ZThn48_N7ee511603barEv,_ZThn24_N7ee511603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee51160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee51160[0]),
+  (VTBL_ENTRY)&_ZN7ee511603barEv,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee51160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee51160[0]),
+  0,
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee51160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee511603barEv,_ZTv0_n12_N7ee511603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee51160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee51160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee51160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee51160[] = {
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee51160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee51160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee51160[] = {
+  {&(_ZTV7ee51160[5]),  5,19},
+  {&(_ZTV7ee51160[10]),  10,19},
+  {&(_ZTV7ee51160[13]),  13,19},
+  {&(_ZTV7ee51160[17]),  17,19},
+  {&(_tg__ZTV6dd1160__7ee51160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee51160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee51160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee51160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee51160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee51160[];
+extern  VTBL_ENTRY _ZTV7ee51160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee51160[];
+static VTBL_ENTRY alt_thunk_names55[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee511603barEv,_ZTv0_n12_N7ee511603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee511603barEv,_ZThn24_N7ee511603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee51160 = {  "ee51160", // class name
+  bases_ee51160, 4,
+  &(vtc_ee51160[0]), // expected_vtbl_contents
+  &(vtt_ee51160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee51160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee51160),19, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee51160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names55,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee61160  : dd1160 {
+  int e;
+  virtual void  foo(); // _ZN7ee611603fooEv
+  virtual void  bar(); // _ZN7ee611603barEv
+  ~ee61160(); // tgen
+  ee61160(); // tgen
+};
+//SIG(1 ee61160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee61160 ::foo(){vfunc_called(this, "_ZN7ee611603fooEv");}
+void  ee61160 ::bar(){vfunc_called(this, "_ZN7ee611603barEv");}
+ee61160 ::~ee61160(){ note_dtor("ee61160", this);} // tgen
+ee61160 ::ee61160(){ note_ctor("ee61160", this);} // tgen
+
+static void Test_ee61160()
+{
+  extern Class_Descriptor cd_ee61160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee61160, buf);
+    ee61160 *dp, &lv = *(dp=new (buf) ee61160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee61160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee61160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee61160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee61160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(16,12), "ee61160");
+    check_base_class_offset(lv, (dd1160*), 0, "ee61160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee61160.e");
+    test_class_info(&lv, &cd_ee61160);
+    dp->~ee61160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee61160(Test_ee61160, "ee61160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee61160C1Ev();
+extern void _ZN7ee61160D1Ev();
+Name_Map name_map_ee61160[] = {
+  NSPAIR(_ZN7ee61160C1Ev),
+  NSPAIR(_ZN7ee61160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee61160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee61160[];
+extern void _ZN7ee611603fooEv();
+extern void _ZN7ee611603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee611603barEv,_ZTv0_n12_N7ee611603barEv)();
+extern void ABISELECT(_ZThn32_N7ee611603barEv,_ZThn20_N7ee611603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee611603fooEv,_ZTv0_n16_N7ee611603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee611603fooEv,_ZThn20_N7ee611603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee61160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee61160[0]),
+  (VTBL_ENTRY)&_ZN7ee611603fooEv,
+  (VTBL_ENTRY)&_ZN7ee611603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee61160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee61160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee611603barEv,_ZTv0_n12_N7ee611603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee611603fooEv,_ZTv0_n16_N7ee611603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee61160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee61160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee61160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee61160[] = {
+  0,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee61160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee61160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee61160[] = {
+  {&(_ZTV7ee61160[4]),  4,15},
+  {&(_tg__ZTV6dd1160__7ee61160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee61160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee61160[4]),  4,6},
+  {&(_ZTV7ee61160[9]),  9,15},
+  {&(_ZTV7ee61160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee61160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee61160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee61160[];
+extern  VTBL_ENTRY _ZTV7ee61160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee61160[];
+static VTBL_ENTRY alt_thunk_names56[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee611603fooEv,_ZTv0_n16_N7ee611603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee611603fooEv,_ZThn20_N7ee611603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee611603barEv,_ZTv0_n12_N7ee611603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee611603barEv,_ZThn20_N7ee611603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee61160 = {  "ee61160", // class name
+  bases_ee61160, 4,
+  &(vtc_ee61160[0]), // expected_vtbl_contents
+  &(vtt_ee61160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee61160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee61160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee61160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names56,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee71160  : virtual dd1160 {
+  int e;
+  virtual void  foo(); // _ZN7ee711603fooEv
+  virtual void  bar(); // _ZN7ee711603barEv
+  ~ee71160(); // tgen
+  ee71160(); // tgen
+};
+//SIG(1 ee71160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} Fi} v1 v2 Fi}
+
+
+void  ee71160 ::foo(){vfunc_called(this, "_ZN7ee711603fooEv");}
+void  ee71160 ::bar(){vfunc_called(this, "_ZN7ee711603barEv");}
+ee71160 ::~ee71160(){ note_dtor("ee71160", this);} // tgen
+ee71160 ::ee71160(){ note_ctor("ee71160", this);} // tgen
+
+static void Test_ee71160()
+{
+  extern Class_Descriptor cd_ee71160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee71160, buf);
+    ee71160 *dp, &lv = *(dp=new (buf) ee71160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee71160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee71160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee71160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee71160");
+    check_base_class_offset(lv, (cc160*)(dd1160*), ABISELECT(32,16), "ee71160");
+    check_base_class_offset(lv, (dd1160*), ABISELECT(16,8), "ee71160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee71160.e");
+    test_class_info(&lv, &cd_ee71160);
+    dp->~ee71160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee71160(Test_ee71160, "ee71160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee71160C1Ev();
+extern void _ZN7ee71160D1Ev();
+Name_Map name_map_ee71160[] = {
+  NSPAIR(_ZN7ee71160C1Ev),
+  NSPAIR(_ZN7ee71160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd1160;
+extern VTBL_ENTRY _ZTI6dd1160[];
+extern  VTBL_ENTRY _ZTV6dd1160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1160[];
+static Base_Class bases_ee71160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1160,    ABISELECT(16,8), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee71160[];
+extern void _ZN7ee711603fooEv();
+extern void _ZN7ee711603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee711603barEv,_ZTv0_n12_N7ee711603barEv)();
+extern void ABISELECT(_ZThn48_N7ee711603barEv,_ZThn24_N7ee711603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee711603fooEv,_ZTv0_n16_N7ee711603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee711603fooEv,_ZThn24_N7ee711603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee71160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee71160[0]),
+  (VTBL_ENTRY)&_ZN7ee711603fooEv,
+  (VTBL_ENTRY)&_ZN7ee711603barEv,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee71160[0]),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee71160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee71160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee711603barEv,_ZTv0_n12_N7ee711603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee711603fooEv,_ZTv0_n16_N7ee711603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee71160[];
+static  VTBL_ENTRY _tg__ZTV6dd1160__7ee71160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd1160__7ee71160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd1160__7ee71160[] = {
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd1160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee71160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee71160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee71160[] = {
+  {&(_ZTV7ee71160[5]),  5,20},
+  {&(_ZTV7ee71160[11]),  11,20},
+  {&(_ZTV7ee71160[14]),  14,20},
+  {&(_ZTV7ee71160[18]),  18,20},
+  {&(_tg__ZTV6dd1160__7ee71160[4]),  4,4},
+  {&(_tg__ZTV5cc160__6dd1160__7ee71160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd1160__7ee71160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee71160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee71160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee71160[];
+extern  VTBL_ENTRY _ZTV7ee71160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee71160[];
+static VTBL_ENTRY alt_thunk_names57[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee711603fooEv,_ZTv0_n16_N7ee711603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee711603fooEv,_ZThn24_N7ee711603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee711603barEv,_ZTv0_n12_N7ee711603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee711603barEv,_ZThn24_N7ee711603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee71160 = {  "ee71160", // class name
+  bases_ee71160, 4,
+  &(vtc_ee71160[0]), // expected_vtbl_contents
+  &(vtt_ee71160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee71160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee71160),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee71160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names57,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd2160  : cc160 {
+  int d;
+  virtual void  foo(); // _ZN6dd21603fooEv
+  ~dd2160(); // tgen
+  dd2160(); // tgen
+};
+//SIG(-1 dd2160) C1{ BC2{ VBC3{ BC4{ Fi} v2 v1 Fi} Fi} v1 Fi}
+
+
+void  dd2160 ::foo(){vfunc_called(this, "_ZN6dd21603fooEv");}
+dd2160 ::~dd2160(){ note_dtor("dd2160", this);} // tgen
+dd2160 ::dd2160(){ note_ctor("dd2160", this);} // tgen
+
+static void Test_dd2160()
+{
+  extern Class_Descriptor cd_dd2160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_dd2160, buf);
+    dd2160 *dp, &lv = *(dp=new (buf) dd2160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(dd2160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd2160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(24,16), "dd2160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(16,12), "dd2160");
+    check_base_class_offset(lv, (cc160*), 0, "dd2160");
+    check_field_offset(lv, d, ABISELECT(12,8), "dd2160.d");
+    test_class_info(&lv, &cd_dd2160);
+    dp->~dd2160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd2160(Test_dd2160, "dd2160", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd2160C1Ev();
+extern void _ZN6dd2160D1Ev();
+Name_Map name_map_dd2160[] = {
+  NSPAIR(_ZN6dd2160C1Ev),
+  NSPAIR(_ZN6dd2160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd2160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern void _ZN6dd21603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd2160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd2160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd2160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd2160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd2160[] = {
+  {&(_ZTV6dd2160[3]),  3,10},
+  {&(_tg__ZTV5cc160__6dd2160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd2160[4]),  4,6},
+  {&(_ZTV6dd2160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static VTBL_ENTRY alt_thunk_names58[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd2160 = {  "dd2160", // class name
+  bases_dd2160, 3,
+  &(vtc_dd2160[0]), // expected_vtbl_contents
+  &(vtt_dd2160[0]), // expected_vtt_contents
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI6dd2160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd2160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd2160),4, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names58,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee02160  : dd2160 {
+  int e;
+  ~ee02160(); // tgen
+  ee02160(); // tgen
+};
+//SIG(1 ee02160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee02160 ::~ee02160(){ note_dtor("ee02160", this);} // tgen
+ee02160 ::ee02160(){ note_ctor("ee02160", this);} // tgen
+
+static void Test_ee02160()
+{
+  extern Class_Descriptor cd_ee02160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee02160, buf);
+    ee02160 *dp, &lv = *(dp=new (buf) ee02160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee02160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee02160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee02160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(24,16), "ee02160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), 0, "ee02160");
+    check_base_class_offset(lv, (dd2160*), 0, "ee02160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee02160.e");
+    test_class_info(&lv, &cd_ee02160);
+    dp->~ee02160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee02160(Test_ee02160, "ee02160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee02160C1Ev();
+extern void _ZN7ee02160D1Ev();
+Name_Map name_map_ee02160[] = {
+  NSPAIR(_ZN7ee02160C1Ev),
+  NSPAIR(_ZN7ee02160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee02160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee02160[];
+extern void _ZN6dd21603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee02160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee02160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee02160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee02160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee02160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee02160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee02160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee02160[] = {
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee02160[] = {
+  {&(_ZTV7ee02160[3]),  3,10},
+  {&(_tg__ZTV6dd2160__7ee02160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee02160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee02160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee02160[4]),  4,6},
+  {&(_ZTV7ee02160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee02160[];
+extern  VTBL_ENTRY _ZTV7ee02160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee02160[];
+static VTBL_ENTRY alt_thunk_names59[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee02160 = {  "ee02160", // class name
+  bases_ee02160, 4,
+  &(vtc_ee02160[0]), // expected_vtbl_contents
+  &(vtt_ee02160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee02160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee02160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee02160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names59,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee12160  : virtual dd2160 {
+  int e;
+  ~ee12160(); // tgen
+  ee12160(); // tgen
+};
+//SIG(1 ee12160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee12160 ::~ee12160(){ note_dtor("ee12160", this);} // tgen
+ee12160 ::ee12160(){ note_ctor("ee12160", this);} // tgen
+
+static void Test_ee12160()
+{
+  extern Class_Descriptor cd_ee12160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee12160, buf);
+    ee12160 *dp, &lv = *(dp=new (buf) ee12160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee12160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee12160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee12160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(32,20), "ee12160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), ABISELECT(16,8), "ee12160");
+    check_base_class_offset(lv, (dd2160*), ABISELECT(16,8), "ee12160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee12160.e");
+    test_class_info(&lv, &cd_ee12160);
+    dp->~ee12160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee12160(Test_ee12160, "ee12160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee12160C1Ev();
+extern void _ZN7ee12160D1Ev();
+Name_Map name_map_ee12160[] = {
+  NSPAIR(_ZN7ee12160C1Ev),
+  NSPAIR(_ZN7ee12160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee12160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee12160[];
+extern void _ZN6dd21603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee12160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee12160[0]),
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee12160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee12160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee12160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee12160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee12160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee12160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee12160[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee12160[] = {
+  {&(_ZTV7ee12160[4]),  4,15},
+  {&(_ZTV7ee12160[8]),  8,15},
+  {&(_ZTV7ee12160[13]),  13,15},
+  {&(_tg__ZTV6dd2160__7ee12160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee12160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee12160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee12160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee12160[];
+extern  VTBL_ENTRY _ZTV7ee12160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee12160[];
+static VTBL_ENTRY alt_thunk_names60[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee12160 = {  "ee12160", // class name
+  bases_ee12160, 4,
+  &(vtc_ee12160[0]), // expected_vtbl_contents
+  &(vtt_ee12160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee12160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee12160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee12160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names60,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee22160  : dd2160 {
+  int e;
+  virtual void  foo(); // _ZN7ee221603fooEv
+  ~ee22160(); // tgen
+  ee22160(); // tgen
+};
+//SIG(1 ee22160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee22160 ::foo(){vfunc_called(this, "_ZN7ee221603fooEv");}
+ee22160 ::~ee22160(){ note_dtor("ee22160", this);} // tgen
+ee22160 ::ee22160(){ note_ctor("ee22160", this);} // tgen
+
+static void Test_ee22160()
+{
+  extern Class_Descriptor cd_ee22160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee22160, buf);
+    ee22160 *dp, &lv = *(dp=new (buf) ee22160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee22160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee22160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee22160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(24,16), "ee22160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), 0, "ee22160");
+    check_base_class_offset(lv, (dd2160*), 0, "ee22160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee22160.e");
+    test_class_info(&lv, &cd_ee22160);
+    dp->~ee22160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee22160(Test_ee22160, "ee22160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee22160C1Ev();
+extern void _ZN7ee22160D1Ev();
+Name_Map name_map_ee22160[] = {
+  NSPAIR(_ZN7ee22160C1Ev),
+  NSPAIR(_ZN7ee22160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee22160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee22160[];
+extern void _ZN7ee221603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee221603fooEv,_ZTv0_n16_N7ee221603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee221603fooEv,_ZThn16_N7ee221603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee22160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee22160[0]),
+  (VTBL_ENTRY)&_ZN7ee221603fooEv,
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee22160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee221603fooEv,_ZTv0_n16_N7ee221603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee22160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee22160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee22160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee22160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee22160[] = {
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee22160[] = {
+  {&(_ZTV7ee22160[3]),  3,10},
+  {&(_tg__ZTV6dd2160__7ee22160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee22160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee22160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee22160[4]),  4,6},
+  {&(_ZTV7ee22160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee22160[];
+extern  VTBL_ENTRY _ZTV7ee22160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee22160[];
+static VTBL_ENTRY alt_thunk_names61[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee221603fooEv,_ZTv0_n16_N7ee221603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee221603fooEv,_ZThn16_N7ee221603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee22160 = {  "ee22160", // class name
+  bases_ee22160, 4,
+  &(vtc_ee22160[0]), // expected_vtbl_contents
+  &(vtt_ee22160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee22160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee22160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee22160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names61,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee32160  : virtual dd2160 {
+  int e;
+  virtual void  foo(); // _ZN7ee321603fooEv
+  ~ee32160(); // tgen
+  ee32160(); // tgen
+};
+//SIG(1 ee32160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee32160 ::foo(){vfunc_called(this, "_ZN7ee321603fooEv");}
+ee32160 ::~ee32160(){ note_dtor("ee32160", this);} // tgen
+ee32160 ::ee32160(){ note_ctor("ee32160", this);} // tgen
+
+static void Test_ee32160()
+{
+  extern Class_Descriptor cd_ee32160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee32160, buf);
+    ee32160 *dp, &lv = *(dp=new (buf) ee32160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee32160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee32160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee32160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(32,20), "ee32160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), ABISELECT(16,8), "ee32160");
+    check_base_class_offset(lv, (dd2160*), ABISELECT(16,8), "ee32160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee32160.e");
+    test_class_info(&lv, &cd_ee32160);
+    dp->~ee32160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee32160(Test_ee32160, "ee32160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee32160C1Ev();
+extern void _ZN7ee32160D1Ev();
+Name_Map name_map_ee32160[] = {
+  NSPAIR(_ZN7ee32160C1Ev),
+  NSPAIR(_ZN7ee32160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee32160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee32160[];
+extern void _ZN7ee321603fooEv();
+extern void ABISELECT(_ZTv0_n32_N7ee321603fooEv,_ZTv0_n16_N7ee321603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee321603fooEv,_ZThn8_N7ee321603fooEv)() __attribute__((weak));
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee321603fooEv,_ZTv0_n16_N7ee321603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee321603fooEv,_ZThn20_N7ee321603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee32160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee32160[0]),
+  (VTBL_ENTRY)&_ZN7ee321603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee32160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee321603fooEv,_ZTv0_n16_N7ee321603fooEv),
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee32160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee321603fooEv,_ZTv0_n16_N7ee321603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee32160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee32160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee32160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee32160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee32160[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee32160[] = {
+  {&(_ZTV7ee32160[4]),  4,16},
+  {&(_ZTV7ee32160[9]),  9,16},
+  {&(_ZTV7ee32160[14]),  14,16},
+  {&(_tg__ZTV6dd2160__7ee32160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee32160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee32160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee32160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee32160[];
+extern  VTBL_ENTRY _ZTV7ee32160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee32160[];
+static VTBL_ENTRY alt_thunk_names62[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee321603fooEv,_ZTv0_n16_N7ee321603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee321603fooEv,_ZThn20_N7ee321603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee321603fooEv,_ZThn8_N7ee321603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee32160 = {  "ee32160", // class name
+  bases_ee32160, 4,
+  &(vtc_ee32160[0]), // expected_vtbl_contents
+  &(vtt_ee32160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee32160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee32160),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee32160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names62,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee42160  : dd2160 {
+  int e;
+  virtual void  bar(); // _ZN7ee421603barEv
+  ~ee42160(); // tgen
+  ee42160(); // tgen
+};
+//SIG(1 ee42160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee42160 ::bar(){vfunc_called(this, "_ZN7ee421603barEv");}
+ee42160 ::~ee42160(){ note_dtor("ee42160", this);} // tgen
+ee42160 ::ee42160(){ note_ctor("ee42160", this);} // tgen
+
+static void Test_ee42160()
+{
+  extern Class_Descriptor cd_ee42160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee42160, buf);
+    ee42160 *dp, &lv = *(dp=new (buf) ee42160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee42160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee42160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee42160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(24,16), "ee42160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), 0, "ee42160");
+    check_base_class_offset(lv, (dd2160*), 0, "ee42160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee42160.e");
+    test_class_info(&lv, &cd_ee42160);
+    dp->~ee42160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee42160(Test_ee42160, "ee42160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee42160C1Ev();
+extern void _ZN7ee42160D1Ev();
+Name_Map name_map_ee42160[] = {
+  NSPAIR(_ZN7ee42160C1Ev),
+  NSPAIR(_ZN7ee42160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee42160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee42160[];
+extern void _ZN6dd21603fooEv();
+extern void _ZN7ee421603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee421603barEv,_ZTv0_n12_N7ee421603barEv)();
+extern void ABISELECT(_ZThn24_N7ee421603barEv,_ZThn16_N7ee421603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee42160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee42160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+  (VTBL_ENTRY)&_ZN7ee421603barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee42160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee421603barEv,_ZTv0_n12_N7ee421603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee42160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee42160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee42160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee42160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee42160[] = {
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee42160[] = {
+  {&(_ZTV7ee42160[3]),  3,11},
+  {&(_tg__ZTV6dd2160__7ee42160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee42160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee42160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee42160[4]),  4,6},
+  {&(_ZTV7ee42160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee42160[];
+extern  VTBL_ENTRY _ZTV7ee42160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee42160[];
+static VTBL_ENTRY alt_thunk_names63[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee421603barEv,_ZTv0_n12_N7ee421603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee421603barEv,_ZThn16_N7ee421603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee42160 = {  "ee42160", // class name
+  bases_ee42160, 4,
+  &(vtc_ee42160[0]), // expected_vtbl_contents
+  &(vtt_ee42160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee42160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee42160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee42160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names63,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee52160  : virtual dd2160 {
+  int e;
+  virtual void  bar(); // _ZN7ee521603barEv
+  ~ee52160(); // tgen
+  ee52160(); // tgen
+};
+//SIG(1 ee52160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee52160 ::bar(){vfunc_called(this, "_ZN7ee521603barEv");}
+ee52160 ::~ee52160(){ note_dtor("ee52160", this);} // tgen
+ee52160 ::ee52160(){ note_ctor("ee52160", this);} // tgen
+
+static void Test_ee52160()
+{
+  extern Class_Descriptor cd_ee52160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee52160, buf);
+    ee52160 *dp, &lv = *(dp=new (buf) ee52160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee52160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee52160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee52160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(32,20), "ee52160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), ABISELECT(16,8), "ee52160");
+    check_base_class_offset(lv, (dd2160*), ABISELECT(16,8), "ee52160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee52160.e");
+    test_class_info(&lv, &cd_ee52160);
+    dp->~ee52160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee52160(Test_ee52160, "ee52160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee52160C1Ev();
+extern void _ZN7ee52160D1Ev();
+Name_Map name_map_ee52160[] = {
+  NSPAIR(_ZN7ee52160C1Ev),
+  NSPAIR(_ZN7ee52160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee52160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee52160[];
+extern void _ZN7ee521603barEv();
+extern void _ZN6dd21603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee521603barEv,_ZTv0_n12_N7ee521603barEv)();
+extern void ABISELECT(_ZThn32_N7ee521603barEv,_ZThn20_N7ee521603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee52160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee52160[0]),
+  (VTBL_ENTRY)&_ZN7ee521603barEv,
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee52160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee52160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee521603barEv,_ZTv0_n12_N7ee521603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee52160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee52160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee52160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee52160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee52160[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee52160[] = {
+  {&(_ZTV7ee52160[4]),  4,16},
+  {&(_ZTV7ee52160[9]),  9,16},
+  {&(_ZTV7ee52160[14]),  14,16},
+  {&(_tg__ZTV6dd2160__7ee52160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee52160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee52160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee52160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee52160[];
+extern  VTBL_ENTRY _ZTV7ee52160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee52160[];
+static VTBL_ENTRY alt_thunk_names64[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee521603barEv,_ZTv0_n12_N7ee521603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee521603barEv,_ZThn20_N7ee521603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee52160 = {  "ee52160", // class name
+  bases_ee52160, 4,
+  &(vtc_ee52160[0]), // expected_vtbl_contents
+  &(vtt_ee52160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee52160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee52160),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee52160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names64,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee62160  : dd2160 {
+  int e;
+  virtual void  foo(); // _ZN7ee621603fooEv
+  virtual void  bar(); // _ZN7ee621603barEv
+  ~ee62160(); // tgen
+  ee62160(); // tgen
+};
+//SIG(1 ee62160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee62160 ::foo(){vfunc_called(this, "_ZN7ee621603fooEv");}
+void  ee62160 ::bar(){vfunc_called(this, "_ZN7ee621603barEv");}
+ee62160 ::~ee62160(){ note_dtor("ee62160", this);} // tgen
+ee62160 ::ee62160(){ note_ctor("ee62160", this);} // tgen
+
+static void Test_ee62160()
+{
+  extern Class_Descriptor cd_ee62160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee62160, buf);
+    ee62160 *dp, &lv = *(dp=new (buf) ee62160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee62160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee62160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee62160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(24,16), "ee62160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), 0, "ee62160");
+    check_base_class_offset(lv, (dd2160*), 0, "ee62160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee62160.e");
+    test_class_info(&lv, &cd_ee62160);
+    dp->~ee62160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee62160(Test_ee62160, "ee62160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee62160C1Ev();
+extern void _ZN7ee62160D1Ev();
+Name_Map name_map_ee62160[] = {
+  NSPAIR(_ZN7ee62160C1Ev),
+  NSPAIR(_ZN7ee62160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee62160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee62160[];
+extern void _ZN7ee621603fooEv();
+extern void _ZN7ee621603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee621603barEv,_ZTv0_n12_N7ee621603barEv)();
+extern void ABISELECT(_ZThn24_N7ee621603barEv,_ZThn16_N7ee621603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee621603fooEv,_ZTv0_n16_N7ee621603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee621603fooEv,_ZThn16_N7ee621603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee62160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee62160[0]),
+  (VTBL_ENTRY)&_ZN7ee621603fooEv,
+  (VTBL_ENTRY)&_ZN7ee621603barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee62160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee621603barEv,_ZTv0_n12_N7ee621603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee621603fooEv,_ZTv0_n16_N7ee621603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee62160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee62160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee62160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee62160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee62160[] = {
+  ABISELECT(-24,-16),
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee62160[] = {
+  {&(_ZTV7ee62160[3]),  3,11},
+  {&(_tg__ZTV6dd2160__7ee62160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee62160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee62160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee62160[4]),  4,6},
+  {&(_ZTV7ee62160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee62160[];
+extern  VTBL_ENTRY _ZTV7ee62160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee62160[];
+static VTBL_ENTRY alt_thunk_names65[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd21603fooEv,_ZThn16_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee621603fooEv,_ZTv0_n16_N7ee621603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee621603fooEv,_ZThn16_N7ee621603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee621603barEv,_ZTv0_n12_N7ee621603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee621603barEv,_ZThn16_N7ee621603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee62160 = {  "ee62160", // class name
+  bases_ee62160, 4,
+  &(vtc_ee62160[0]), // expected_vtbl_contents
+  &(vtt_ee62160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee62160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee62160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee62160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names65,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee72160  : virtual dd2160 {
+  int e;
+  virtual void  foo(); // _ZN7ee721603fooEv
+  virtual void  bar(); // _ZN7ee721603barEv
+  ~ee72160(); // tgen
+  ee72160(); // tgen
+};
+//SIG(1 ee72160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee72160 ::foo(){vfunc_called(this, "_ZN7ee721603fooEv");}
+void  ee72160 ::bar(){vfunc_called(this, "_ZN7ee721603barEv");}
+ee72160 ::~ee72160(){ note_dtor("ee72160", this);} // tgen
+ee72160 ::ee72160(){ note_ctor("ee72160", this);} // tgen
+
+static void Test_ee72160()
+{
+  extern Class_Descriptor cd_ee72160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee72160, buf);
+    ee72160 *dp, &lv = *(dp=new (buf) ee72160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee72160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee72160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee72160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd2160*), ABISELECT(32,20), "ee72160");
+    check_base_class_offset(lv, (cc160*)(dd2160*), ABISELECT(16,8), "ee72160");
+    check_base_class_offset(lv, (dd2160*), ABISELECT(16,8), "ee72160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee72160.e");
+    test_class_info(&lv, &cd_ee72160);
+    dp->~ee72160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee72160(Test_ee72160, "ee72160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee72160C1Ev();
+extern void _ZN7ee72160D1Ev();
+Name_Map name_map_ee72160[] = {
+  NSPAIR(_ZN7ee72160C1Ev),
+  NSPAIR(_ZN7ee72160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd2160;
+extern VTBL_ENTRY _ZTI6dd2160[];
+extern  VTBL_ENTRY _ZTV6dd2160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd2160[];
+static Base_Class bases_ee72160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd2160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee72160[];
+extern void _ZN7ee721603fooEv();
+extern void _ZN7ee721603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee721603fooEv,_ZTv0_n16_N7ee721603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee721603fooEv,_ZThn8_N7ee721603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee721603barEv,_ZTv0_n12_N7ee721603barEv)();
+extern void ABISELECT(_ZThn32_N7ee721603barEv,_ZThn20_N7ee721603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee721603fooEv,_ZTv0_n16_N7ee721603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee721603fooEv,_ZThn20_N7ee721603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee72160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee72160[0]),
+  (VTBL_ENTRY)&_ZN7ee721603fooEv,
+  (VTBL_ENTRY)&_ZN7ee721603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee72160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee721603fooEv,_ZTv0_n16_N7ee721603fooEv),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee72160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee721603barEv,_ZTv0_n12_N7ee721603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee721603fooEv,_ZTv0_n16_N7ee721603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee72160[];
+extern void _ZN6dd21603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd2160__7ee72160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN6dd21603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd2160__7ee72160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd2160__7ee72160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd2160__7ee72160[] = {
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd2160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv),
+};
+static  VTT_ENTRY vtt_ee72160[] = {
+  {&(_ZTV7ee72160[4]),  4,17},
+  {&(_ZTV7ee72160[10]),  10,17},
+  {&(_ZTV7ee72160[15]),  15,17},
+  {&(_tg__ZTV6dd2160__7ee72160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd2160__7ee72160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd2160__7ee72160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd2160__7ee72160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee72160[];
+extern  VTBL_ENTRY _ZTV7ee72160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee72160[];
+static VTBL_ENTRY alt_thunk_names66[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd21603fooEv,_ZTv0_n16_N6dd21603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd21603fooEv,_ZThn12_N6dd21603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee721603barEv,_ZTv0_n12_N7ee721603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee721603barEv,_ZThn20_N7ee721603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee721603fooEv,_ZTv0_n16_N7ee721603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee721603fooEv,_ZThn20_N7ee721603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee721603fooEv,_ZThn8_N7ee721603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee72160 = {  "ee72160", // class name
+  bases_ee72160, 4,
+  &(vtc_ee72160[0]), // expected_vtbl_contents
+  &(vtt_ee72160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee72160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee72160),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee72160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names66,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd3160  : virtual cc160 {
+  int d;
+  virtual void  foo(); // _ZN6dd31603fooEv
+  ~dd3160(); // tgen
+  dd3160(); // tgen
+};
+//SIG(-1 dd3160) C1{ VBC2{ VBC3{ BC4{ Fi} v2 v1 Fi} Fi} v1 Fi}
+
+
+void  dd3160 ::foo(){vfunc_called(this, "_ZN6dd31603fooEv");}
+dd3160 ::~dd3160(){ note_dtor("dd3160", this);} // tgen
+dd3160 ::dd3160(){ note_ctor("dd3160", this);} // tgen
+
+static void Test_dd3160()
+{
+  extern Class_Descriptor cd_dd3160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,8)];
+    init_test(&cd_dd3160, buf);
+    dd3160 *dp, &lv = *(dp=new (buf) dd3160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,28), "sizeof(dd3160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd3160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,20), "dd3160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,16), "dd3160");
+    check_base_class_offset(lv, (cc160*), ABISELECT(16,8), "dd3160");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd3160.d");
+    test_class_info(&lv, &cd_dd3160);
+    dp->~dd3160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd3160(Test_dd3160, "dd3160", ABISELECT(48,28));
+
+#else // __cplusplus
+
+extern void _ZN6dd3160C1Ev();
+extern void _ZN6dd3160D1Ev();
+Name_Map name_map_dd3160[] = {
+  NSPAIR(_ZN6dd3160C1Ev),
+  NSPAIR(_ZN6dd3160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd3160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern void _ZN6dd31603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd3160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd3160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd3160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd3160[] = {
+  {&(_ZTV6dd3160[4]),  4,14},
+  {&(_ZTV6dd3160[8]),  8,14},
+  {&(_ZTV6dd3160[12]),  12,14},
+  {&(_tg__ZTV5cc160__6dd3160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd3160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static VTBL_ENTRY alt_thunk_names67[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd3160 = {  "dd3160", // class name
+  bases_dd3160, 3,
+  &(vtc_dd3160[0]), // expected_vtbl_contents
+  &(vtt_dd3160[0]), // expected_vtt_contents
+  ABISELECT(48,28), // object size
+  NSPAIRA(_ZTI6dd3160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd3160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd3160),5, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names67,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee03160  : dd3160 {
+  int e;
+  ~ee03160(); // tgen
+  ee03160(); // tgen
+};
+//SIG(1 ee03160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee03160 ::~ee03160(){ note_dtor("ee03160", this);} // tgen
+ee03160 ::ee03160(){ note_ctor("ee03160", this);} // tgen
+
+static void Test_ee03160()
+{
+  extern Class_Descriptor cd_ee03160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee03160, buf);
+    ee03160 *dp, &lv = *(dp=new (buf) ee03160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee03160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee03160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee03160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee03160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(16,12), "ee03160");
+    check_base_class_offset(lv, (dd3160*), 0, "ee03160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee03160.e");
+    test_class_info(&lv, &cd_ee03160);
+    dp->~ee03160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee03160(Test_ee03160, "ee03160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee03160C1Ev();
+extern void _ZN7ee03160D1Ev();
+Name_Map name_map_ee03160[] = {
+  NSPAIR(_ZN7ee03160C1Ev),
+  NSPAIR(_ZN7ee03160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee03160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee03160[];
+extern void _ZN6dd31603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee03160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee03160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee03160[0]),
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee03160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee03160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee03160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee03160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee03160[] = {
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee03160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee03160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee03160[] = {
+  {&(_ZTV7ee03160[4]),  4,14},
+  {&(_tg__ZTV6dd3160__7ee03160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee03160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee03160[4]),  4,6},
+  {&(_ZTV7ee03160[8]),  8,14},
+  {&(_ZTV7ee03160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee03160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee03160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee03160[];
+extern  VTBL_ENTRY _ZTV7ee03160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee03160[];
+static VTBL_ENTRY alt_thunk_names68[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee03160 = {  "ee03160", // class name
+  bases_ee03160, 4,
+  &(vtc_ee03160[0]), // expected_vtbl_contents
+  &(vtt_ee03160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee03160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee03160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee03160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names68,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee13160  : virtual dd3160 {
+  int e;
+  ~ee13160(); // tgen
+  ee13160(); // tgen
+};
+//SIG(1 ee13160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} Fi}
+
+
+ee13160 ::~ee13160(){ note_dtor("ee13160", this);} // tgen
+ee13160 ::ee13160(){ note_ctor("ee13160", this);} // tgen
+
+static void Test_ee13160()
+{
+  extern Class_Descriptor cd_ee13160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee13160, buf);
+    ee13160 *dp, &lv = *(dp=new (buf) ee13160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee13160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee13160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee13160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee13160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(32,16), "ee13160");
+    check_base_class_offset(lv, (dd3160*), ABISELECT(16,8), "ee13160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee13160.e");
+    test_class_info(&lv, &cd_ee13160);
+    dp->~ee13160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee13160(Test_ee13160, "ee13160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee13160C1Ev();
+extern void _ZN7ee13160D1Ev();
+Name_Map name_map_ee13160[] = {
+  NSPAIR(_ZN7ee13160C1Ev),
+  NSPAIR(_ZN7ee13160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee13160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee13160[];
+extern void _ZN6dd31603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee13160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee13160[0]),
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee13160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee13160[0]),
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee13160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee13160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee13160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee13160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee13160[] = {
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee13160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee13160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee13160[] = {
+  {&(_ZTV7ee13160[5]),  5,20},
+  {&(_ZTV7ee13160[10]),  10,20},
+  {&(_ZTV7ee13160[14]),  14,20},
+  {&(_ZTV7ee13160[18]),  18,20},
+  {&(_tg__ZTV6dd3160__7ee13160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee13160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee13160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee13160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee13160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee13160[];
+extern  VTBL_ENTRY _ZTV7ee13160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee13160[];
+static VTBL_ENTRY alt_thunk_names69[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee13160 = {  "ee13160", // class name
+  bases_ee13160, 4,
+  &(vtc_ee13160[0]), // expected_vtbl_contents
+  &(vtt_ee13160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee13160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee13160),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee13160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names69,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee23160  : dd3160 {
+  int e;
+  virtual void  foo(); // _ZN7ee231603fooEv
+  ~ee23160(); // tgen
+  ee23160(); // tgen
+};
+//SIG(1 ee23160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee23160 ::foo(){vfunc_called(this, "_ZN7ee231603fooEv");}
+ee23160 ::~ee23160(){ note_dtor("ee23160", this);} // tgen
+ee23160 ::ee23160(){ note_ctor("ee23160", this);} // tgen
+
+static void Test_ee23160()
+{
+  extern Class_Descriptor cd_ee23160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee23160, buf);
+    ee23160 *dp, &lv = *(dp=new (buf) ee23160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee23160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee23160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee23160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee23160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(16,12), "ee23160");
+    check_base_class_offset(lv, (dd3160*), 0, "ee23160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee23160.e");
+    test_class_info(&lv, &cd_ee23160);
+    dp->~ee23160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee23160(Test_ee23160, "ee23160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee23160C1Ev();
+extern void _ZN7ee23160D1Ev();
+Name_Map name_map_ee23160[] = {
+  NSPAIR(_ZN7ee23160C1Ev),
+  NSPAIR(_ZN7ee23160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee23160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee23160[];
+extern void _ZN7ee231603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee231603fooEv,_ZTv0_n16_N7ee231603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee231603fooEv,_ZThn20_N7ee231603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee23160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee23160[0]),
+  (VTBL_ENTRY)&_ZN7ee231603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee23160[0]),
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee23160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee231603fooEv,_ZTv0_n16_N7ee231603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee23160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee23160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee23160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee23160[] = {
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee23160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee23160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee23160[] = {
+  {&(_ZTV7ee23160[4]),  4,14},
+  {&(_tg__ZTV6dd3160__7ee23160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee23160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee23160[4]),  4,6},
+  {&(_ZTV7ee23160[8]),  8,14},
+  {&(_ZTV7ee23160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee23160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee23160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee23160[];
+extern  VTBL_ENTRY _ZTV7ee23160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee23160[];
+static VTBL_ENTRY alt_thunk_names70[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee231603fooEv,_ZTv0_n16_N7ee231603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee231603fooEv,_ZThn20_N7ee231603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee23160 = {  "ee23160", // class name
+  bases_ee23160, 4,
+  &(vtc_ee23160[0]), // expected_vtbl_contents
+  &(vtt_ee23160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee23160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee23160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee23160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names70,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee33160  : virtual dd3160 {
+  int e;
+  virtual void  foo(); // _ZN7ee331603fooEv
+  ~ee33160(); // tgen
+  ee33160(); // tgen
+};
+//SIG(1 ee33160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee33160 ::foo(){vfunc_called(this, "_ZN7ee331603fooEv");}
+ee33160 ::~ee33160(){ note_dtor("ee33160", this);} // tgen
+ee33160 ::ee33160(){ note_ctor("ee33160", this);} // tgen
+
+static void Test_ee33160()
+{
+  extern Class_Descriptor cd_ee33160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee33160, buf);
+    ee33160 *dp, &lv = *(dp=new (buf) ee33160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee33160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee33160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee33160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee33160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(32,16), "ee33160");
+    check_base_class_offset(lv, (dd3160*), ABISELECT(16,8), "ee33160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee33160.e");
+    test_class_info(&lv, &cd_ee33160);
+    dp->~ee33160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee33160(Test_ee33160, "ee33160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee33160C1Ev();
+extern void _ZN7ee33160D1Ev();
+Name_Map name_map_ee33160[] = {
+  NSPAIR(_ZN7ee33160C1Ev),
+  NSPAIR(_ZN7ee33160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee33160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    15, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee33160[];
+extern void _ZN7ee331603fooEv();
+extern void ABISELECT(_ZTv0_n40_N7ee331603fooEv,_ZTv0_n20_N7ee331603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee331603fooEv,_ZThn8_N7ee331603fooEv)() __attribute__((weak));
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee331603fooEv,_ZTv0_n16_N7ee331603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee331603fooEv,_ZThn24_N7ee331603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee33160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee33160[0]),
+  (VTBL_ENTRY)&_ZN7ee331603fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee33160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee331603fooEv,_ZTv0_n20_N7ee331603fooEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee33160[0]),
+  ABISELECT(-48,-24),
+  0,
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee33160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee331603fooEv,_ZTv0_n16_N7ee331603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee33160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee33160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee33160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee33160[] = {
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee33160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee33160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee33160[] = {
+  {&(_ZTV7ee33160[5]),  5,21},
+  {&(_ZTV7ee33160[11]),  11,21},
+  {&(_ZTV7ee33160[15]),  15,21},
+  {&(_ZTV7ee33160[19]),  19,21},
+  {&(_tg__ZTV6dd3160__7ee33160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee33160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee33160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee33160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee33160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee33160[];
+extern  VTBL_ENTRY _ZTV7ee33160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee33160[];
+static VTBL_ENTRY alt_thunk_names71[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee331603fooEv,_ZTv0_n16_N7ee331603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee331603fooEv,_ZThn24_N7ee331603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee331603fooEv,_ZTv0_n20_N7ee331603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee331603fooEv,_ZThn8_N7ee331603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee33160 = {  "ee33160", // class name
+  bases_ee33160, 4,
+  &(vtc_ee33160[0]), // expected_vtbl_contents
+  &(vtt_ee33160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee33160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee33160),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee33160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names71,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee43160  : dd3160 {
+  int e;
+  virtual void  bar(); // _ZN7ee431603barEv
+  ~ee43160(); // tgen
+  ee43160(); // tgen
+};
+//SIG(1 ee43160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee43160 ::bar(){vfunc_called(this, "_ZN7ee431603barEv");}
+ee43160 ::~ee43160(){ note_dtor("ee43160", this);} // tgen
+ee43160 ::ee43160(){ note_ctor("ee43160", this);} // tgen
+
+static void Test_ee43160()
+{
+  extern Class_Descriptor cd_ee43160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee43160, buf);
+    ee43160 *dp, &lv = *(dp=new (buf) ee43160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee43160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee43160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee43160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee43160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(16,12), "ee43160");
+    check_base_class_offset(lv, (dd3160*), 0, "ee43160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee43160.e");
+    test_class_info(&lv, &cd_ee43160);
+    dp->~ee43160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee43160(Test_ee43160, "ee43160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee43160C1Ev();
+extern void _ZN7ee43160D1Ev();
+Name_Map name_map_ee43160[] = {
+  NSPAIR(_ZN7ee43160C1Ev),
+  NSPAIR(_ZN7ee43160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee43160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee43160[];
+extern void _ZN6dd31603fooEv();
+extern void _ZN7ee431603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee431603barEv,_ZTv0_n12_N7ee431603barEv)();
+extern void ABISELECT(_ZThn32_N7ee431603barEv,_ZThn20_N7ee431603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee43160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee43160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+  (VTBL_ENTRY)&_ZN7ee431603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee43160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee43160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee431603barEv,_ZTv0_n12_N7ee431603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee43160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee43160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee43160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee43160[] = {
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee43160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee43160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee43160[] = {
+  {&(_ZTV7ee43160[4]),  4,15},
+  {&(_tg__ZTV6dd3160__7ee43160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee43160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee43160[4]),  4,6},
+  {&(_ZTV7ee43160[9]),  9,15},
+  {&(_ZTV7ee43160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee43160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee43160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee43160[];
+extern  VTBL_ENTRY _ZTV7ee43160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee43160[];
+static VTBL_ENTRY alt_thunk_names72[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee431603barEv,_ZTv0_n12_N7ee431603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee431603barEv,_ZThn20_N7ee431603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee43160 = {  "ee43160", // class name
+  bases_ee43160, 4,
+  &(vtc_ee43160[0]), // expected_vtbl_contents
+  &(vtt_ee43160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee43160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee43160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee43160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names72,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee53160  : virtual dd3160 {
+  int e;
+  virtual void  bar(); // _ZN7ee531603barEv
+  ~ee53160(); // tgen
+  ee53160(); // tgen
+};
+//SIG(1 ee53160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee53160 ::bar(){vfunc_called(this, "_ZN7ee531603barEv");}
+ee53160 ::~ee53160(){ note_dtor("ee53160", this);} // tgen
+ee53160 ::ee53160(){ note_ctor("ee53160", this);} // tgen
+
+static void Test_ee53160()
+{
+  extern Class_Descriptor cd_ee53160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee53160, buf);
+    ee53160 *dp, &lv = *(dp=new (buf) ee53160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee53160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee53160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee53160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee53160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(32,16), "ee53160");
+    check_base_class_offset(lv, (dd3160*), ABISELECT(16,8), "ee53160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee53160.e");
+    test_class_info(&lv, &cd_ee53160);
+    dp->~ee53160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee53160(Test_ee53160, "ee53160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee53160C1Ev();
+extern void _ZN7ee53160D1Ev();
+Name_Map name_map_ee53160[] = {
+  NSPAIR(_ZN7ee53160C1Ev),
+  NSPAIR(_ZN7ee53160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee53160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    15, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee53160[];
+extern void _ZN7ee531603barEv();
+extern void _ZN6dd31603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee531603barEv,_ZTv0_n12_N7ee531603barEv)();
+extern void ABISELECT(_ZThn48_N7ee531603barEv,_ZThn24_N7ee531603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee53160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee53160[0]),
+  (VTBL_ENTRY)&_ZN7ee531603barEv,
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee53160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee53160[0]),
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee53160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee531603barEv,_ZTv0_n12_N7ee531603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee53160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee53160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee53160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee53160[] = {
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee53160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee53160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee53160[] = {
+  {&(_ZTV7ee53160[5]),  5,21},
+  {&(_ZTV7ee53160[11]),  11,21},
+  {&(_ZTV7ee53160[15]),  15,21},
+  {&(_ZTV7ee53160[19]),  19,21},
+  {&(_tg__ZTV6dd3160__7ee53160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee53160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee53160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee53160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee53160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee53160[];
+extern  VTBL_ENTRY _ZTV7ee53160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee53160[];
+static VTBL_ENTRY alt_thunk_names73[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee531603barEv,_ZTv0_n12_N7ee531603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee531603barEv,_ZThn24_N7ee531603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee53160 = {  "ee53160", // class name
+  bases_ee53160, 4,
+  &(vtc_ee53160[0]), // expected_vtbl_contents
+  &(vtt_ee53160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee53160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee53160),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee53160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names73,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee63160  : dd3160 {
+  int e;
+  virtual void  foo(); // _ZN7ee631603fooEv
+  virtual void  bar(); // _ZN7ee631603barEv
+  ~ee63160(); // tgen
+  ee63160(); // tgen
+};
+//SIG(1 ee63160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee63160 ::foo(){vfunc_called(this, "_ZN7ee631603fooEv");}
+void  ee63160 ::bar(){vfunc_called(this, "_ZN7ee631603barEv");}
+ee63160 ::~ee63160(){ note_dtor("ee63160", this);} // tgen
+ee63160 ::ee63160(){ note_ctor("ee63160", this);} // tgen
+
+static void Test_ee63160()
+{
+  extern Class_Descriptor cd_ee63160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee63160, buf);
+    ee63160 *dp, &lv = *(dp=new (buf) ee63160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee63160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee63160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee63160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee63160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(16,12), "ee63160");
+    check_base_class_offset(lv, (dd3160*), 0, "ee63160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee63160.e");
+    test_class_info(&lv, &cd_ee63160);
+    dp->~ee63160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee63160(Test_ee63160, "ee63160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee63160C1Ev();
+extern void _ZN7ee63160D1Ev();
+Name_Map name_map_ee63160[] = {
+  NSPAIR(_ZN7ee63160C1Ev),
+  NSPAIR(_ZN7ee63160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee63160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee63160[];
+extern void _ZN7ee631603fooEv();
+extern void _ZN7ee631603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee631603barEv,_ZTv0_n12_N7ee631603barEv)();
+extern void ABISELECT(_ZThn32_N7ee631603barEv,_ZThn20_N7ee631603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee631603fooEv,_ZTv0_n16_N7ee631603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee631603fooEv,_ZThn20_N7ee631603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee63160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee63160[0]),
+  (VTBL_ENTRY)&_ZN7ee631603fooEv,
+  (VTBL_ENTRY)&_ZN7ee631603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee63160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee63160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee631603barEv,_ZTv0_n12_N7ee631603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee631603fooEv,_ZTv0_n16_N7ee631603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee63160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee63160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee63160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee63160[] = {
+  ABISELECT(-32,-20),
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee63160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee63160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee63160[] = {
+  {&(_ZTV7ee63160[4]),  4,15},
+  {&(_tg__ZTV6dd3160__7ee63160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee63160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee63160[4]),  4,6},
+  {&(_ZTV7ee63160[9]),  9,15},
+  {&(_ZTV7ee63160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee63160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee63160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee63160[];
+extern  VTBL_ENTRY _ZTV7ee63160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee63160[];
+static VTBL_ENTRY alt_thunk_names74[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn20_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee631603fooEv,_ZTv0_n16_N7ee631603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee631603fooEv,_ZThn20_N7ee631603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee631603barEv,_ZTv0_n12_N7ee631603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee631603barEv,_ZThn20_N7ee631603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee63160 = {  "ee63160", // class name
+  bases_ee63160, 4,
+  &(vtc_ee63160[0]), // expected_vtbl_contents
+  &(vtt_ee63160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee63160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee63160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee63160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names74,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee73160  : virtual dd3160 {
+  int e;
+  virtual void  foo(); // _ZN7ee731603fooEv
+  virtual void  bar(); // _ZN7ee731603barEv
+  ~ee73160(); // tgen
+  ee73160(); // tgen
+};
+//SIG(1 ee73160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v1 Fi} v1 v2 Fi}
+
+
+void  ee73160 ::foo(){vfunc_called(this, "_ZN7ee731603fooEv");}
+void  ee73160 ::bar(){vfunc_called(this, "_ZN7ee731603barEv");}
+ee73160 ::~ee73160(){ note_dtor("ee73160", this);} // tgen
+ee73160 ::ee73160(){ note_ctor("ee73160", this);} // tgen
+
+static void Test_ee73160()
+{
+  extern Class_Descriptor cd_ee73160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee73160, buf);
+    ee73160 *dp, &lv = *(dp=new (buf) ee73160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee73160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee73160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee73160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee73160");
+    check_base_class_offset(lv, (cc160*)(dd3160*), ABISELECT(32,16), "ee73160");
+    check_base_class_offset(lv, (dd3160*), ABISELECT(16,8), "ee73160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee73160.e");
+    test_class_info(&lv, &cd_ee73160);
+    dp->~ee73160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee73160(Test_ee73160, "ee73160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee73160C1Ev();
+extern void _ZN7ee73160D1Ev();
+Name_Map name_map_ee73160[] = {
+  NSPAIR(_ZN7ee73160C1Ev),
+  NSPAIR(_ZN7ee73160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd3160;
+extern VTBL_ENTRY _ZTI6dd3160[];
+extern  VTBL_ENTRY _ZTV6dd3160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd3160[];
+static Base_Class bases_ee73160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd3160,    ABISELECT(16,8), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee73160[];
+extern void _ZN7ee731603fooEv();
+extern void _ZN7ee731603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee731603fooEv,_ZTv0_n20_N7ee731603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee731603fooEv,_ZThn8_N7ee731603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee731603barEv,_ZTv0_n12_N7ee731603barEv)();
+extern void ABISELECT(_ZThn48_N7ee731603barEv,_ZThn24_N7ee731603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee731603fooEv,_ZTv0_n16_N7ee731603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee731603fooEv,_ZThn24_N7ee731603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee73160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee73160[0]),
+  (VTBL_ENTRY)&_ZN7ee731603fooEv,
+  (VTBL_ENTRY)&_ZN7ee731603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee73160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee731603fooEv,_ZTv0_n20_N7ee731603fooEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee73160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee73160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee731603barEv,_ZTv0_n12_N7ee731603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee731603fooEv,_ZTv0_n16_N7ee731603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee73160[];
+extern void _ZN6dd31603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd3160__7ee73160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN6dd31603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd3160__7ee73160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd3160__7ee73160[] = {
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd3160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee73160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee73160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee73160[] = {
+  {&(_ZTV7ee73160[5]),  5,22},
+  {&(_ZTV7ee73160[12]),  12,22},
+  {&(_ZTV7ee73160[16]),  16,22},
+  {&(_ZTV7ee73160[20]),  20,22},
+  {&(_tg__ZTV6dd3160__7ee73160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd3160__7ee73160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd3160__7ee73160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee73160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee73160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee73160[];
+extern  VTBL_ENTRY _ZTV7ee73160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee73160[];
+static VTBL_ENTRY alt_thunk_names75[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd31603fooEv,_ZTv0_n16_N6dd31603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd31603fooEv,_ZThn16_N6dd31603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee731603fooEv,_ZTv0_n16_N7ee731603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee731603fooEv,_ZThn24_N7ee731603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee731603barEv,_ZTv0_n12_N7ee731603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee731603barEv,_ZThn24_N7ee731603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee731603fooEv,_ZTv0_n20_N7ee731603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee731603fooEv,_ZThn8_N7ee731603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee73160 = {  "ee73160", // class name
+  bases_ee73160, 4,
+  &(vtc_ee73160[0]), // expected_vtbl_contents
+  &(vtt_ee73160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee73160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee73160),22, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee73160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names75,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd4160  : cc160 {
+  int d;
+  virtual void  bar(); // _ZN6dd41603barEv
+  ~dd4160(); // tgen
+  dd4160(); // tgen
+};
+//SIG(-1 dd4160) C1{ BC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 Fi}
+
+
+void  dd4160 ::bar(){vfunc_called(this, "_ZN6dd41603barEv");}
+dd4160 ::~dd4160(){ note_dtor("dd4160", this);} // tgen
+dd4160 ::dd4160(){ note_ctor("dd4160", this);} // tgen
+
+static void Test_dd4160()
+{
+  extern Class_Descriptor cd_dd4160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_dd4160, buf);
+    dd4160 *dp, &lv = *(dp=new (buf) dd4160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(dd4160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd4160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(24,16), "dd4160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(16,12), "dd4160");
+    check_base_class_offset(lv, (cc160*), 0, "dd4160");
+    check_field_offset(lv, d, ABISELECT(12,8), "dd4160.d");
+    test_class_info(&lv, &cd_dd4160);
+    dp->~dd4160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd4160(Test_dd4160, "dd4160", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd4160C1Ev();
+extern void _ZN6dd4160D1Ev();
+Name_Map name_map_dd4160[] = {
+  NSPAIR(_ZN6dd4160C1Ev),
+  NSPAIR(_ZN6dd4160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd4160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern void _ZN6dd41603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd4160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd4160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd4160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd4160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd4160[] = {
+  {&(_ZTV6dd4160[3]),  3,10},
+  {&(_tg__ZTV5cc160__6dd4160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd4160[4]),  4,6},
+  {&(_ZTV6dd4160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static VTBL_ENTRY alt_thunk_names76[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd4160 = {  "dd4160", // class name
+  bases_dd4160, 3,
+  &(vtc_dd4160[0]), // expected_vtbl_contents
+  &(vtt_dd4160[0]), // expected_vtt_contents
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI6dd4160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd4160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd4160),4, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names76,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee04160  : dd4160 {
+  int e;
+  ~ee04160(); // tgen
+  ee04160(); // tgen
+};
+//SIG(1 ee04160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee04160 ::~ee04160(){ note_dtor("ee04160", this);} // tgen
+ee04160 ::ee04160(){ note_ctor("ee04160", this);} // tgen
+
+static void Test_ee04160()
+{
+  extern Class_Descriptor cd_ee04160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee04160, buf);
+    ee04160 *dp, &lv = *(dp=new (buf) ee04160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee04160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee04160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee04160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(24,16), "ee04160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), 0, "ee04160");
+    check_base_class_offset(lv, (dd4160*), 0, "ee04160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee04160.e");
+    test_class_info(&lv, &cd_ee04160);
+    dp->~ee04160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee04160(Test_ee04160, "ee04160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee04160C1Ev();
+extern void _ZN7ee04160D1Ev();
+Name_Map name_map_ee04160[] = {
+  NSPAIR(_ZN7ee04160C1Ev),
+  NSPAIR(_ZN7ee04160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee04160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee04160[];
+extern void _ZN6dd41603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee04160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee04160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee04160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee04160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee04160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee04160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee04160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee04160[] = {
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee04160[] = {
+  {&(_ZTV7ee04160[3]),  3,10},
+  {&(_tg__ZTV6dd4160__7ee04160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee04160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee04160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee04160[4]),  4,6},
+  {&(_ZTV7ee04160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee04160[];
+extern  VTBL_ENTRY _ZTV7ee04160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee04160[];
+static VTBL_ENTRY alt_thunk_names77[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee04160 = {  "ee04160", // class name
+  bases_ee04160, 4,
+  &(vtc_ee04160[0]), // expected_vtbl_contents
+  &(vtt_ee04160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee04160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee04160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee04160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names77,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee14160  : virtual dd4160 {
+  int e;
+  ~ee14160(); // tgen
+  ee14160(); // tgen
+};
+//SIG(1 ee14160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee14160 ::~ee14160(){ note_dtor("ee14160", this);} // tgen
+ee14160 ::ee14160(){ note_ctor("ee14160", this);} // tgen
+
+static void Test_ee14160()
+{
+  extern Class_Descriptor cd_ee14160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee14160, buf);
+    ee14160 *dp, &lv = *(dp=new (buf) ee14160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee14160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee14160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee14160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(32,20), "ee14160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), ABISELECT(16,8), "ee14160");
+    check_base_class_offset(lv, (dd4160*), ABISELECT(16,8), "ee14160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee14160.e");
+    test_class_info(&lv, &cd_ee14160);
+    dp->~ee14160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee14160(Test_ee14160, "ee14160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee14160C1Ev();
+extern void _ZN7ee14160D1Ev();
+Name_Map name_map_ee14160[] = {
+  NSPAIR(_ZN7ee14160C1Ev),
+  NSPAIR(_ZN7ee14160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee14160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee14160[];
+extern void _ZN6dd41603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee14160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee14160[0]),
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee14160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee14160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee14160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee14160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee14160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee14160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee14160[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee14160[] = {
+  {&(_ZTV7ee14160[4]),  4,15},
+  {&(_ZTV7ee14160[8]),  8,15},
+  {&(_ZTV7ee14160[13]),  13,15},
+  {&(_tg__ZTV6dd4160__7ee14160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee14160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee14160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee14160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee14160[];
+extern  VTBL_ENTRY _ZTV7ee14160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee14160[];
+static VTBL_ENTRY alt_thunk_names78[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee14160 = {  "ee14160", // class name
+  bases_ee14160, 4,
+  &(vtc_ee14160[0]), // expected_vtbl_contents
+  &(vtt_ee14160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee14160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee14160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee14160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names78,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee24160  : dd4160 {
+  int e;
+  virtual void  foo(); // _ZN7ee241603fooEv
+  ~ee24160(); // tgen
+  ee24160(); // tgen
+};
+//SIG(1 ee24160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee24160 ::foo(){vfunc_called(this, "_ZN7ee241603fooEv");}
+ee24160 ::~ee24160(){ note_dtor("ee24160", this);} // tgen
+ee24160 ::ee24160(){ note_ctor("ee24160", this);} // tgen
+
+static void Test_ee24160()
+{
+  extern Class_Descriptor cd_ee24160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee24160, buf);
+    ee24160 *dp, &lv = *(dp=new (buf) ee24160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee24160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee24160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee24160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(24,16), "ee24160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), 0, "ee24160");
+    check_base_class_offset(lv, (dd4160*), 0, "ee24160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee24160.e");
+    test_class_info(&lv, &cd_ee24160);
+    dp->~ee24160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee24160(Test_ee24160, "ee24160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee24160C1Ev();
+extern void _ZN7ee24160D1Ev();
+Name_Map name_map_ee24160[] = {
+  NSPAIR(_ZN7ee24160C1Ev),
+  NSPAIR(_ZN7ee24160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee24160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee24160[];
+extern void _ZN6dd41603barEv();
+extern void _ZN7ee241603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee241603fooEv,_ZTv0_n16_N7ee241603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee241603fooEv,_ZThn16_N7ee241603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee24160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee24160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+  (VTBL_ENTRY)&_ZN7ee241603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee24160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee241603fooEv,_ZTv0_n16_N7ee241603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee24160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee24160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee24160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee24160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee24160[] = {
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee24160[] = {
+  {&(_ZTV7ee24160[3]),  3,11},
+  {&(_tg__ZTV6dd4160__7ee24160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee24160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee24160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee24160[4]),  4,6},
+  {&(_ZTV7ee24160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee24160[];
+extern  VTBL_ENTRY _ZTV7ee24160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee24160[];
+static VTBL_ENTRY alt_thunk_names79[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee241603fooEv,_ZTv0_n16_N7ee241603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee241603fooEv,_ZThn16_N7ee241603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee24160 = {  "ee24160", // class name
+  bases_ee24160, 4,
+  &(vtc_ee24160[0]), // expected_vtbl_contents
+  &(vtt_ee24160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee24160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee24160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee24160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names79,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee34160  : virtual dd4160 {
+  int e;
+  virtual void  foo(); // _ZN7ee341603fooEv
+  ~ee34160(); // tgen
+  ee34160(); // tgen
+};
+//SIG(1 ee34160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee34160 ::foo(){vfunc_called(this, "_ZN7ee341603fooEv");}
+ee34160 ::~ee34160(){ note_dtor("ee34160", this);} // tgen
+ee34160 ::ee34160(){ note_ctor("ee34160", this);} // tgen
+
+static void Test_ee34160()
+{
+  extern Class_Descriptor cd_ee34160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee34160, buf);
+    ee34160 *dp, &lv = *(dp=new (buf) ee34160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee34160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee34160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee34160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(32,20), "ee34160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), ABISELECT(16,8), "ee34160");
+    check_base_class_offset(lv, (dd4160*), ABISELECT(16,8), "ee34160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee34160.e");
+    test_class_info(&lv, &cd_ee34160);
+    dp->~ee34160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee34160(Test_ee34160, "ee34160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee34160C1Ev();
+extern void _ZN7ee34160D1Ev();
+Name_Map name_map_ee34160[] = {
+  NSPAIR(_ZN7ee34160C1Ev),
+  NSPAIR(_ZN7ee34160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee34160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee34160[];
+extern void _ZN7ee341603fooEv();
+extern void _ZN6dd41603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee341603fooEv,_ZTv0_n16_N7ee341603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee341603fooEv,_ZThn20_N7ee341603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee34160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee34160[0]),
+  (VTBL_ENTRY)&_ZN7ee341603fooEv,
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee34160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+  ABISELECT(-32,-20),
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee34160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee341603fooEv,_ZTv0_n16_N7ee341603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee34160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee34160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee34160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee34160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee34160[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee34160[] = {
+  {&(_ZTV7ee34160[4]),  4,16},
+  {&(_ZTV7ee34160[9]),  9,16},
+  {&(_ZTV7ee34160[14]),  14,16},
+  {&(_tg__ZTV6dd4160__7ee34160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee34160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee34160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee34160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee34160[];
+extern  VTBL_ENTRY _ZTV7ee34160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee34160[];
+static VTBL_ENTRY alt_thunk_names80[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee341603fooEv,_ZTv0_n16_N7ee341603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee341603fooEv,_ZThn20_N7ee341603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee34160 = {  "ee34160", // class name
+  bases_ee34160, 4,
+  &(vtc_ee34160[0]), // expected_vtbl_contents
+  &(vtt_ee34160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee34160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee34160),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee34160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names80,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee44160  : dd4160 {
+  int e;
+  virtual void  bar(); // _ZN7ee441603barEv
+  ~ee44160(); // tgen
+  ee44160(); // tgen
+};
+//SIG(1 ee44160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee44160 ::bar(){vfunc_called(this, "_ZN7ee441603barEv");}
+ee44160 ::~ee44160(){ note_dtor("ee44160", this);} // tgen
+ee44160 ::ee44160(){ note_ctor("ee44160", this);} // tgen
+
+static void Test_ee44160()
+{
+  extern Class_Descriptor cd_ee44160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee44160, buf);
+    ee44160 *dp, &lv = *(dp=new (buf) ee44160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee44160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee44160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee44160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(24,16), "ee44160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), 0, "ee44160");
+    check_base_class_offset(lv, (dd4160*), 0, "ee44160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee44160.e");
+    test_class_info(&lv, &cd_ee44160);
+    dp->~ee44160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee44160(Test_ee44160, "ee44160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee44160C1Ev();
+extern void _ZN7ee44160D1Ev();
+Name_Map name_map_ee44160[] = {
+  NSPAIR(_ZN7ee44160C1Ev),
+  NSPAIR(_ZN7ee44160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee44160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee44160[];
+extern void _ZN7ee441603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee441603barEv,_ZTv0_n12_N7ee441603barEv)();
+extern void ABISELECT(_ZThn24_N7ee441603barEv,_ZThn16_N7ee441603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee44160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee44160[0]),
+  (VTBL_ENTRY)&_ZN7ee441603barEv,
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee44160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee441603barEv,_ZTv0_n12_N7ee441603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee44160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee44160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee44160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee44160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee44160[] = {
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee44160[] = {
+  {&(_ZTV7ee44160[3]),  3,10},
+  {&(_tg__ZTV6dd4160__7ee44160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee44160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee44160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee44160[4]),  4,6},
+  {&(_ZTV7ee44160[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee44160[];
+extern  VTBL_ENTRY _ZTV7ee44160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee44160[];
+static VTBL_ENTRY alt_thunk_names81[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee441603barEv,_ZTv0_n12_N7ee441603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee441603barEv,_ZThn16_N7ee441603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee44160 = {  "ee44160", // class name
+  bases_ee44160, 4,
+  &(vtc_ee44160[0]), // expected_vtbl_contents
+  &(vtt_ee44160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee44160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee44160),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee44160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names81,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee54160  : virtual dd4160 {
+  int e;
+  virtual void  bar(); // _ZN7ee541603barEv
+  ~ee54160(); // tgen
+  ee54160(); // tgen
+};
+//SIG(1 ee54160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee54160 ::bar(){vfunc_called(this, "_ZN7ee541603barEv");}
+ee54160 ::~ee54160(){ note_dtor("ee54160", this);} // tgen
+ee54160 ::ee54160(){ note_ctor("ee54160", this);} // tgen
+
+static void Test_ee54160()
+{
+  extern Class_Descriptor cd_ee54160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee54160, buf);
+    ee54160 *dp, &lv = *(dp=new (buf) ee54160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee54160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee54160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee54160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(32,20), "ee54160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), ABISELECT(16,8), "ee54160");
+    check_base_class_offset(lv, (dd4160*), ABISELECT(16,8), "ee54160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee54160.e");
+    test_class_info(&lv, &cd_ee54160);
+    dp->~ee54160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee54160(Test_ee54160, "ee54160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee54160C1Ev();
+extern void _ZN7ee54160D1Ev();
+Name_Map name_map_ee54160[] = {
+  NSPAIR(_ZN7ee54160C1Ev),
+  NSPAIR(_ZN7ee54160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee54160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee54160[];
+extern void _ZN7ee541603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee541603barEv,_ZTv0_n16_N7ee541603barEv)();
+extern void ABISELECT(_ZThn16_N7ee541603barEv,_ZThn8_N7ee541603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee541603barEv,_ZTv0_n12_N7ee541603barEv)();
+extern void ABISELECT(_ZThn32_N7ee541603barEv,_ZThn20_N7ee541603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee54160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee54160[0]),
+  (VTBL_ENTRY)&_ZN7ee541603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee54160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee541603barEv,_ZTv0_n16_N7ee541603barEv),
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee54160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee541603barEv,_ZTv0_n12_N7ee541603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee54160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee54160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee54160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee54160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee54160[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee54160[] = {
+  {&(_ZTV7ee54160[4]),  4,16},
+  {&(_ZTV7ee54160[9]),  9,16},
+  {&(_ZTV7ee54160[14]),  14,16},
+  {&(_tg__ZTV6dd4160__7ee54160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee54160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee54160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee54160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee54160[];
+extern  VTBL_ENTRY _ZTV7ee54160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee54160[];
+static VTBL_ENTRY alt_thunk_names82[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee541603barEv,_ZTv0_n12_N7ee541603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee541603barEv,_ZThn20_N7ee541603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee541603barEv,_ZTv0_n16_N7ee541603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee541603barEv,_ZThn8_N7ee541603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee54160 = {  "ee54160", // class name
+  bases_ee54160, 4,
+  &(vtc_ee54160[0]), // expected_vtbl_contents
+  &(vtt_ee54160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee54160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee54160),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee54160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names82,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee64160  : dd4160 {
+  int e;
+  virtual void  foo(); // _ZN7ee641603fooEv
+  virtual void  bar(); // _ZN7ee641603barEv
+  ~ee64160(); // tgen
+  ee64160(); // tgen
+};
+//SIG(1 ee64160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee64160 ::foo(){vfunc_called(this, "_ZN7ee641603fooEv");}
+void  ee64160 ::bar(){vfunc_called(this, "_ZN7ee641603barEv");}
+ee64160 ::~ee64160(){ note_dtor("ee64160", this);} // tgen
+ee64160 ::ee64160(){ note_ctor("ee64160", this);} // tgen
+
+static void Test_ee64160()
+{
+  extern Class_Descriptor cd_ee64160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee64160, buf);
+    ee64160 *dp, &lv = *(dp=new (buf) ee64160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee64160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee64160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee64160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(24,16), "ee64160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), 0, "ee64160");
+    check_base_class_offset(lv, (dd4160*), 0, "ee64160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee64160.e");
+    test_class_info(&lv, &cd_ee64160);
+    dp->~ee64160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee64160(Test_ee64160, "ee64160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee64160C1Ev();
+extern void _ZN7ee64160D1Ev();
+Name_Map name_map_ee64160[] = {
+  NSPAIR(_ZN7ee64160C1Ev),
+  NSPAIR(_ZN7ee64160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee64160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee64160[];
+extern void _ZN7ee641603barEv();
+extern void _ZN7ee641603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee641603barEv,_ZTv0_n12_N7ee641603barEv)();
+extern void ABISELECT(_ZThn24_N7ee641603barEv,_ZThn16_N7ee641603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee641603fooEv,_ZTv0_n16_N7ee641603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee641603fooEv,_ZThn16_N7ee641603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee64160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee64160[0]),
+  (VTBL_ENTRY)&_ZN7ee641603barEv,
+  (VTBL_ENTRY)&_ZN7ee641603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee64160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee641603barEv,_ZTv0_n12_N7ee641603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee641603fooEv,_ZTv0_n16_N7ee641603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee64160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee64160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee64160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee64160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee64160[] = {
+  0,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee64160[] = {
+  {&(_ZTV7ee64160[3]),  3,11},
+  {&(_tg__ZTV6dd4160__7ee64160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee64160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee64160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee64160[4]),  4,6},
+  {&(_ZTV7ee64160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee64160[];
+extern  VTBL_ENTRY _ZTV7ee64160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee64160[];
+static VTBL_ENTRY alt_thunk_names83[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd41603barEv,_ZThn16_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee641603fooEv,_ZTv0_n16_N7ee641603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee641603fooEv,_ZThn16_N7ee641603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee641603barEv,_ZTv0_n12_N7ee641603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee641603barEv,_ZThn16_N7ee641603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee64160 = {  "ee64160", // class name
+  bases_ee64160, 4,
+  &(vtc_ee64160[0]), // expected_vtbl_contents
+  &(vtt_ee64160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee64160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee64160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee64160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names83,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee74160  : virtual dd4160 {
+  int e;
+  virtual void  foo(); // _ZN7ee741603fooEv
+  virtual void  bar(); // _ZN7ee741603barEv
+  ~ee74160(); // tgen
+  ee74160(); // tgen
+};
+//SIG(1 ee74160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee74160 ::foo(){vfunc_called(this, "_ZN7ee741603fooEv");}
+void  ee74160 ::bar(){vfunc_called(this, "_ZN7ee741603barEv");}
+ee74160 ::~ee74160(){ note_dtor("ee74160", this);} // tgen
+ee74160 ::ee74160(){ note_ctor("ee74160", this);} // tgen
+
+static void Test_ee74160()
+{
+  extern Class_Descriptor cd_ee74160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee74160, buf);
+    ee74160 *dp, &lv = *(dp=new (buf) ee74160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee74160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee74160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee74160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd4160*), ABISELECT(32,20), "ee74160");
+    check_base_class_offset(lv, (cc160*)(dd4160*), ABISELECT(16,8), "ee74160");
+    check_base_class_offset(lv, (dd4160*), ABISELECT(16,8), "ee74160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee74160.e");
+    test_class_info(&lv, &cd_ee74160);
+    dp->~ee74160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee74160(Test_ee74160, "ee74160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee74160C1Ev();
+extern void _ZN7ee74160D1Ev();
+Name_Map name_map_ee74160[] = {
+  NSPAIR(_ZN7ee74160C1Ev),
+  NSPAIR(_ZN7ee74160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd4160;
+extern VTBL_ENTRY _ZTI6dd4160[];
+extern  VTBL_ENTRY _ZTV6dd4160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd4160[];
+static Base_Class bases_ee74160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd4160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee74160[];
+extern void _ZN7ee741603fooEv();
+extern void _ZN7ee741603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee741603barEv,_ZTv0_n16_N7ee741603barEv)();
+extern void ABISELECT(_ZThn16_N7ee741603barEv,_ZThn8_N7ee741603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee741603barEv,_ZTv0_n12_N7ee741603barEv)();
+extern void ABISELECT(_ZThn32_N7ee741603barEv,_ZThn20_N7ee741603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee741603fooEv,_ZTv0_n16_N7ee741603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee741603fooEv,_ZThn20_N7ee741603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee74160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee74160[0]),
+  (VTBL_ENTRY)&_ZN7ee741603fooEv,
+  (VTBL_ENTRY)&_ZN7ee741603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee74160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee741603barEv,_ZTv0_n16_N7ee741603barEv),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee74160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee741603barEv,_ZTv0_n12_N7ee741603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee741603fooEv,_ZTv0_n16_N7ee741603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee74160[];
+extern void _ZN6dd41603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd4160__7ee74160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&_ZN6dd41603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd4160__7ee74160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd4160__7ee74160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv)();
+extern void ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd4160__7ee74160[] = {
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd4160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee74160[] = {
+  {&(_ZTV7ee74160[4]),  4,17},
+  {&(_ZTV7ee74160[10]),  10,17},
+  {&(_ZTV7ee74160[15]),  15,17},
+  {&(_tg__ZTV6dd4160__7ee74160[3]),  3,4},
+  {&(_tg__ZTV5cc1606dd4160__7ee74160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd4160__7ee74160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd4160__7ee74160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee74160[];
+extern  VTBL_ENTRY _ZTV7ee74160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee74160[];
+static VTBL_ENTRY alt_thunk_names84[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd41603barEv,_ZTv0_n12_N6dd41603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd41603barEv,_ZThn12_N6dd41603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee741603fooEv,_ZTv0_n16_N7ee741603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee741603fooEv,_ZThn20_N7ee741603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee741603barEv,_ZTv0_n12_N7ee741603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee741603barEv,_ZThn20_N7ee741603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee741603barEv,_ZTv0_n16_N7ee741603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee741603barEv,_ZThn8_N7ee741603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee74160 = {  "ee74160", // class name
+  bases_ee74160, 4,
+  &(vtc_ee74160[0]), // expected_vtbl_contents
+  &(vtt_ee74160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee74160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee74160),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee74160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names84,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd5160  : virtual cc160 {
+  int d;
+  virtual void  bar(); // _ZN6dd51603barEv
+  ~dd5160(); // tgen
+  dd5160(); // tgen
+};
+//SIG(-1 dd5160) C1{ VBC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 Fi}
+
+
+void  dd5160 ::bar(){vfunc_called(this, "_ZN6dd51603barEv");}
+dd5160 ::~dd5160(){ note_dtor("dd5160", this);} // tgen
+dd5160 ::dd5160(){ note_ctor("dd5160", this);} // tgen
+
+static void Test_dd5160()
+{
+  extern Class_Descriptor cd_dd5160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,8)];
+    init_test(&cd_dd5160, buf);
+    dd5160 *dp, &lv = *(dp=new (buf) dd5160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,28), "sizeof(dd5160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd5160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,20), "dd5160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,16), "dd5160");
+    check_base_class_offset(lv, (cc160*), ABISELECT(16,8), "dd5160");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd5160.d");
+    test_class_info(&lv, &cd_dd5160);
+    dp->~dd5160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd5160(Test_dd5160, "dd5160", ABISELECT(48,28));
+
+#else // __cplusplus
+
+extern void _ZN6dd5160C1Ev();
+extern void _ZN6dd5160D1Ev();
+Name_Map name_map_dd5160[] = {
+  NSPAIR(_ZN6dd5160C1Ev),
+  NSPAIR(_ZN6dd5160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd5160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern void _ZN6dd51603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_dd5160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd5160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd5160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd5160[] = {
+  {&(_ZTV6dd5160[4]),  4,14},
+  {&(_ZTV6dd5160[8]),  8,14},
+  {&(_ZTV6dd5160[12]),  12,14},
+  {&(_tg__ZTV5cc160__6dd5160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd5160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static VTBL_ENTRY alt_thunk_names85[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd5160 = {  "dd5160", // class name
+  bases_dd5160, 3,
+  &(vtc_dd5160[0]), // expected_vtbl_contents
+  &(vtt_dd5160[0]), // expected_vtt_contents
+  ABISELECT(48,28), // object size
+  NSPAIRA(_ZTI6dd5160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd5160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd5160),5, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names85,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee05160  : dd5160 {
+  int e;
+  ~ee05160(); // tgen
+  ee05160(); // tgen
+};
+//SIG(1 ee05160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee05160 ::~ee05160(){ note_dtor("ee05160", this);} // tgen
+ee05160 ::ee05160(){ note_ctor("ee05160", this);} // tgen
+
+static void Test_ee05160()
+{
+  extern Class_Descriptor cd_ee05160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee05160, buf);
+    ee05160 *dp, &lv = *(dp=new (buf) ee05160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee05160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee05160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee05160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee05160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(16,12), "ee05160");
+    check_base_class_offset(lv, (dd5160*), 0, "ee05160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee05160.e");
+    test_class_info(&lv, &cd_ee05160);
+    dp->~ee05160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee05160(Test_ee05160, "ee05160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee05160C1Ev();
+extern void _ZN7ee05160D1Ev();
+Name_Map name_map_ee05160[] = {
+  NSPAIR(_ZN7ee05160C1Ev),
+  NSPAIR(_ZN7ee05160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee05160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee05160[];
+extern void _ZN6dd51603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee05160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee05160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee05160[0]),
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee05160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee05160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee05160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee05160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee05160[] = {
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee05160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee05160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee05160[] = {
+  {&(_ZTV7ee05160[4]),  4,14},
+  {&(_tg__ZTV6dd5160__7ee05160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee05160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee05160[4]),  4,6},
+  {&(_ZTV7ee05160[8]),  8,14},
+  {&(_ZTV7ee05160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee05160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee05160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee05160[];
+extern  VTBL_ENTRY _ZTV7ee05160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee05160[];
+static VTBL_ENTRY alt_thunk_names86[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee05160 = {  "ee05160", // class name
+  bases_ee05160, 4,
+  &(vtc_ee05160[0]), // expected_vtbl_contents
+  &(vtt_ee05160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee05160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee05160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee05160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names86,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee15160  : virtual dd5160 {
+  int e;
+  ~ee15160(); // tgen
+  ee15160(); // tgen
+};
+//SIG(1 ee15160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} Fi}
+
+
+ee15160 ::~ee15160(){ note_dtor("ee15160", this);} // tgen
+ee15160 ::ee15160(){ note_ctor("ee15160", this);} // tgen
+
+static void Test_ee15160()
+{
+  extern Class_Descriptor cd_ee15160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee15160, buf);
+    ee15160 *dp, &lv = *(dp=new (buf) ee15160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee15160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee15160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee15160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee15160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(32,16), "ee15160");
+    check_base_class_offset(lv, (dd5160*), ABISELECT(16,8), "ee15160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee15160.e");
+    test_class_info(&lv, &cd_ee15160);
+    dp->~ee15160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee15160(Test_ee15160, "ee15160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee15160C1Ev();
+extern void _ZN7ee15160D1Ev();
+Name_Map name_map_ee15160[] = {
+  NSPAIR(_ZN7ee15160C1Ev),
+  NSPAIR(_ZN7ee15160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee15160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee15160[];
+extern void _ZN6dd51603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee15160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee15160[0]),
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee15160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee15160[0]),
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee15160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee15160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee15160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee15160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee15160[] = {
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee15160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee15160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee15160[] = {
+  {&(_ZTV7ee15160[5]),  5,20},
+  {&(_ZTV7ee15160[10]),  10,20},
+  {&(_ZTV7ee15160[14]),  14,20},
+  {&(_ZTV7ee15160[18]),  18,20},
+  {&(_tg__ZTV6dd5160__7ee15160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee15160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee15160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee15160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee15160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee15160[];
+extern  VTBL_ENTRY _ZTV7ee15160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee15160[];
+static VTBL_ENTRY alt_thunk_names87[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee15160 = {  "ee15160", // class name
+  bases_ee15160, 4,
+  &(vtc_ee15160[0]), // expected_vtbl_contents
+  &(vtt_ee15160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee15160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee15160),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee15160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names87,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee25160  : dd5160 {
+  int e;
+  virtual void  foo(); // _ZN7ee251603fooEv
+  ~ee25160(); // tgen
+  ee25160(); // tgen
+};
+//SIG(1 ee25160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee25160 ::foo(){vfunc_called(this, "_ZN7ee251603fooEv");}
+ee25160 ::~ee25160(){ note_dtor("ee25160", this);} // tgen
+ee25160 ::ee25160(){ note_ctor("ee25160", this);} // tgen
+
+static void Test_ee25160()
+{
+  extern Class_Descriptor cd_ee25160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee25160, buf);
+    ee25160 *dp, &lv = *(dp=new (buf) ee25160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee25160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee25160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee25160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee25160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(16,12), "ee25160");
+    check_base_class_offset(lv, (dd5160*), 0, "ee25160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee25160.e");
+    test_class_info(&lv, &cd_ee25160);
+    dp->~ee25160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee25160(Test_ee25160, "ee25160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee25160C1Ev();
+extern void _ZN7ee25160D1Ev();
+Name_Map name_map_ee25160[] = {
+  NSPAIR(_ZN7ee25160C1Ev),
+  NSPAIR(_ZN7ee25160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee25160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee25160[];
+extern void _ZN6dd51603barEv();
+extern void _ZN7ee251603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee251603fooEv,_ZTv0_n16_N7ee251603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee251603fooEv,_ZThn20_N7ee251603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee25160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee25160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+  (VTBL_ENTRY)&_ZN7ee251603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee25160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee25160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee251603fooEv,_ZTv0_n16_N7ee251603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee25160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee25160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee25160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee25160[] = {
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee25160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee25160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee25160[] = {
+  {&(_ZTV7ee25160[4]),  4,15},
+  {&(_tg__ZTV6dd5160__7ee25160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee25160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee25160[4]),  4,6},
+  {&(_ZTV7ee25160[9]),  9,15},
+  {&(_ZTV7ee25160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee25160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee25160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee25160[];
+extern  VTBL_ENTRY _ZTV7ee25160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee25160[];
+static VTBL_ENTRY alt_thunk_names88[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee251603fooEv,_ZTv0_n16_N7ee251603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee251603fooEv,_ZThn20_N7ee251603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee25160 = {  "ee25160", // class name
+  bases_ee25160, 4,
+  &(vtc_ee25160[0]), // expected_vtbl_contents
+  &(vtt_ee25160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee25160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee25160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee25160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names88,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee35160  : virtual dd5160 {
+  int e;
+  virtual void  foo(); // _ZN7ee351603fooEv
+  ~ee35160(); // tgen
+  ee35160(); // tgen
+};
+//SIG(1 ee35160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 Fi}
+
+
+void  ee35160 ::foo(){vfunc_called(this, "_ZN7ee351603fooEv");}
+ee35160 ::~ee35160(){ note_dtor("ee35160", this);} // tgen
+ee35160 ::ee35160(){ note_ctor("ee35160", this);} // tgen
+
+static void Test_ee35160()
+{
+  extern Class_Descriptor cd_ee35160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee35160, buf);
+    ee35160 *dp, &lv = *(dp=new (buf) ee35160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee35160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee35160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee35160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee35160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(32,16), "ee35160");
+    check_base_class_offset(lv, (dd5160*), ABISELECT(16,8), "ee35160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee35160.e");
+    test_class_info(&lv, &cd_ee35160);
+    dp->~ee35160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee35160(Test_ee35160, "ee35160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee35160C1Ev();
+extern void _ZN7ee35160D1Ev();
+Name_Map name_map_ee35160[] = {
+  NSPAIR(_ZN7ee35160C1Ev),
+  NSPAIR(_ZN7ee35160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee35160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    15, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee35160[];
+extern void _ZN7ee351603fooEv();
+extern void _ZN6dd51603barEv();
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee351603fooEv,_ZTv0_n16_N7ee351603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee351603fooEv,_ZThn24_N7ee351603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee35160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee35160[0]),
+  (VTBL_ENTRY)&_ZN7ee351603fooEv,
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee35160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee35160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee35160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee351603fooEv,_ZTv0_n16_N7ee351603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee35160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee35160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee35160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee35160[] = {
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee35160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee35160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee35160[] = {
+  {&(_ZTV7ee35160[5]),  5,21},
+  {&(_ZTV7ee35160[11]),  11,21},
+  {&(_ZTV7ee35160[15]),  15,21},
+  {&(_ZTV7ee35160[19]),  19,21},
+  {&(_tg__ZTV6dd5160__7ee35160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee35160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee35160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee35160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee35160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee35160[];
+extern  VTBL_ENTRY _ZTV7ee35160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee35160[];
+static VTBL_ENTRY alt_thunk_names89[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee351603fooEv,_ZTv0_n16_N7ee351603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee351603fooEv,_ZThn24_N7ee351603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee35160 = {  "ee35160", // class name
+  bases_ee35160, 4,
+  &(vtc_ee35160[0]), // expected_vtbl_contents
+  &(vtt_ee35160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee35160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee35160),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee35160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names89,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee45160  : dd5160 {
+  int e;
+  virtual void  bar(); // _ZN7ee451603barEv
+  ~ee45160(); // tgen
+  ee45160(); // tgen
+};
+//SIG(1 ee45160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee45160 ::bar(){vfunc_called(this, "_ZN7ee451603barEv");}
+ee45160 ::~ee45160(){ note_dtor("ee45160", this);} // tgen
+ee45160 ::ee45160(){ note_ctor("ee45160", this);} // tgen
+
+static void Test_ee45160()
+{
+  extern Class_Descriptor cd_ee45160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee45160, buf);
+    ee45160 *dp, &lv = *(dp=new (buf) ee45160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee45160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee45160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee45160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee45160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(16,12), "ee45160");
+    check_base_class_offset(lv, (dd5160*), 0, "ee45160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee45160.e");
+    test_class_info(&lv, &cd_ee45160);
+    dp->~ee45160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee45160(Test_ee45160, "ee45160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee45160C1Ev();
+extern void _ZN7ee45160D1Ev();
+Name_Map name_map_ee45160[] = {
+  NSPAIR(_ZN7ee45160C1Ev),
+  NSPAIR(_ZN7ee45160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee45160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee45160[];
+extern void _ZN7ee451603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee451603barEv,_ZTv0_n12_N7ee451603barEv)();
+extern void ABISELECT(_ZThn32_N7ee451603barEv,_ZThn20_N7ee451603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee45160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee45160[0]),
+  (VTBL_ENTRY)&_ZN7ee451603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee45160[0]),
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee45160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee451603barEv,_ZTv0_n12_N7ee451603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee45160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee45160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee45160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee45160[] = {
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee45160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee45160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee45160[] = {
+  {&(_ZTV7ee45160[4]),  4,14},
+  {&(_tg__ZTV6dd5160__7ee45160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee45160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee45160[4]),  4,6},
+  {&(_ZTV7ee45160[8]),  8,14},
+  {&(_ZTV7ee45160[12]),  12,14},
+  {&(_tg__ZTV5cc160__7ee45160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee45160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee45160[];
+extern  VTBL_ENTRY _ZTV7ee45160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee45160[];
+static VTBL_ENTRY alt_thunk_names90[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee451603barEv,_ZTv0_n12_N7ee451603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee451603barEv,_ZThn20_N7ee451603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee45160 = {  "ee45160", // class name
+  bases_ee45160, 4,
+  &(vtc_ee45160[0]), // expected_vtbl_contents
+  &(vtt_ee45160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee45160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee45160),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee45160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names90,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee55160  : virtual dd5160 {
+  int e;
+  virtual void  bar(); // _ZN7ee551603barEv
+  ~ee55160(); // tgen
+  ee55160(); // tgen
+};
+//SIG(1 ee55160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 Fi} v1 Fi}
+
+
+void  ee55160 ::bar(){vfunc_called(this, "_ZN7ee551603barEv");}
+ee55160 ::~ee55160(){ note_dtor("ee55160", this);} // tgen
+ee55160 ::ee55160(){ note_ctor("ee55160", this);} // tgen
+
+static void Test_ee55160()
+{
+  extern Class_Descriptor cd_ee55160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee55160, buf);
+    ee55160 *dp, &lv = *(dp=new (buf) ee55160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee55160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee55160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee55160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee55160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(32,16), "ee55160");
+    check_base_class_offset(lv, (dd5160*), ABISELECT(16,8), "ee55160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee55160.e");
+    test_class_info(&lv, &cd_ee55160);
+    dp->~ee55160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee55160(Test_ee55160, "ee55160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee55160C1Ev();
+extern void _ZN7ee55160D1Ev();
+Name_Map name_map_ee55160[] = {
+  NSPAIR(_ZN7ee55160C1Ev),
+  NSPAIR(_ZN7ee55160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee55160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    15, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee55160[];
+extern void _ZN7ee551603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee551603barEv,_ZTv0_n20_N7ee551603barEv)();
+extern void ABISELECT(_ZThn16_N7ee551603barEv,_ZThn8_N7ee551603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee551603barEv,_ZTv0_n12_N7ee551603barEv)();
+extern void ABISELECT(_ZThn48_N7ee551603barEv,_ZThn24_N7ee551603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY vtc_ee55160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee55160[0]),
+  (VTBL_ENTRY)&_ZN7ee551603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee55160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee551603barEv,_ZTv0_n20_N7ee551603barEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee55160[0]),
+  0,
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee55160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee551603barEv,_ZTv0_n12_N7ee551603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee55160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee55160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee55160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee55160[] = {
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee55160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee55160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee55160[] = {
+  {&(_ZTV7ee55160[5]),  5,21},
+  {&(_ZTV7ee55160[11]),  11,21},
+  {&(_ZTV7ee55160[15]),  15,21},
+  {&(_ZTV7ee55160[19]),  19,21},
+  {&(_tg__ZTV6dd5160__7ee55160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee55160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee55160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee55160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee55160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee55160[];
+extern  VTBL_ENTRY _ZTV7ee55160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee55160[];
+static VTBL_ENTRY alt_thunk_names91[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee551603barEv,_ZTv0_n12_N7ee551603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee551603barEv,_ZThn24_N7ee551603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee551603barEv,_ZTv0_n20_N7ee551603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee551603barEv,_ZThn8_N7ee551603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee55160 = {  "ee55160", // class name
+  bases_ee55160, 4,
+  &(vtc_ee55160[0]), // expected_vtbl_contents
+  &(vtt_ee55160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee55160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee55160),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee55160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names91,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee65160  : dd5160 {
+  int e;
+  virtual void  foo(); // _ZN7ee651603fooEv
+  virtual void  bar(); // _ZN7ee651603barEv
+  ~ee65160(); // tgen
+  ee65160(); // tgen
+};
+//SIG(1 ee65160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee65160 ::foo(){vfunc_called(this, "_ZN7ee651603fooEv");}
+void  ee65160 ::bar(){vfunc_called(this, "_ZN7ee651603barEv");}
+ee65160 ::~ee65160(){ note_dtor("ee65160", this);} // tgen
+ee65160 ::ee65160(){ note_ctor("ee65160", this);} // tgen
+
+static void Test_ee65160()
+{
+  extern Class_Descriptor cd_ee65160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee65160, buf);
+    ee65160 *dp, &lv = *(dp=new (buf) ee65160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee65160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee65160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee65160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee65160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(16,12), "ee65160");
+    check_base_class_offset(lv, (dd5160*), 0, "ee65160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee65160.e");
+    test_class_info(&lv, &cd_ee65160);
+    dp->~ee65160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee65160(Test_ee65160, "ee65160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee65160C1Ev();
+extern void _ZN7ee65160D1Ev();
+Name_Map name_map_ee65160[] = {
+  NSPAIR(_ZN7ee65160C1Ev),
+  NSPAIR(_ZN7ee65160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee65160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee65160[];
+extern void _ZN7ee651603barEv();
+extern void _ZN7ee651603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee651603barEv,_ZTv0_n12_N7ee651603barEv)();
+extern void ABISELECT(_ZThn32_N7ee651603barEv,_ZThn20_N7ee651603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee651603fooEv,_ZTv0_n16_N7ee651603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee651603fooEv,_ZThn20_N7ee651603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee65160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee65160[0]),
+  (VTBL_ENTRY)&_ZN7ee651603barEv,
+  (VTBL_ENTRY)&_ZN7ee651603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee65160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee65160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee651603barEv,_ZTv0_n12_N7ee651603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee651603fooEv,_ZTv0_n16_N7ee651603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee65160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee65160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee65160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee65160[] = {
+  0,
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee65160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee65160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee65160[] = {
+  {&(_ZTV7ee65160[4]),  4,15},
+  {&(_tg__ZTV6dd5160__7ee65160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee65160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee65160[4]),  4,6},
+  {&(_ZTV7ee65160[9]),  9,15},
+  {&(_ZTV7ee65160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee65160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee65160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee65160[];
+extern  VTBL_ENTRY _ZTV7ee65160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee65160[];
+static VTBL_ENTRY alt_thunk_names92[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn20_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee651603fooEv,_ZTv0_n16_N7ee651603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee651603fooEv,_ZThn20_N7ee651603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee651603barEv,_ZTv0_n12_N7ee651603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee651603barEv,_ZThn20_N7ee651603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee65160 = {  "ee65160", // class name
+  bases_ee65160, 4,
+  &(vtc_ee65160[0]), // expected_vtbl_contents
+  &(vtt_ee65160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee65160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee65160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee65160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names92,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee75160  : virtual dd5160 {
+  int e;
+  virtual void  foo(); // _ZN7ee751603fooEv
+  virtual void  bar(); // _ZN7ee751603barEv
+  ~ee75160(); // tgen
+  ee75160(); // tgen
+};
+//SIG(1 ee75160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 Fi} v1 v2 Fi}
+
+
+void  ee75160 ::foo(){vfunc_called(this, "_ZN7ee751603fooEv");}
+void  ee75160 ::bar(){vfunc_called(this, "_ZN7ee751603barEv");}
+ee75160 ::~ee75160(){ note_dtor("ee75160", this);} // tgen
+ee75160 ::ee75160(){ note_ctor("ee75160", this);} // tgen
+
+static void Test_ee75160()
+{
+  extern Class_Descriptor cd_ee75160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee75160, buf);
+    ee75160 *dp, &lv = *(dp=new (buf) ee75160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee75160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee75160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee75160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee75160");
+    check_base_class_offset(lv, (cc160*)(dd5160*), ABISELECT(32,16), "ee75160");
+    check_base_class_offset(lv, (dd5160*), ABISELECT(16,8), "ee75160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee75160.e");
+    test_class_info(&lv, &cd_ee75160);
+    dp->~ee75160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee75160(Test_ee75160, "ee75160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee75160C1Ev();
+extern void _ZN7ee75160D1Ev();
+Name_Map name_map_ee75160[] = {
+  NSPAIR(_ZN7ee75160C1Ev),
+  NSPAIR(_ZN7ee75160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd5160;
+extern VTBL_ENTRY _ZTI6dd5160[];
+extern  VTBL_ENTRY _ZTV6dd5160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd5160[];
+static Base_Class bases_ee75160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd5160,    ABISELECT(16,8), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee75160[];
+extern void _ZN7ee751603fooEv();
+extern void _ZN7ee751603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee751603barEv,_ZTv0_n20_N7ee751603barEv)();
+extern void ABISELECT(_ZThn16_N7ee751603barEv,_ZThn8_N7ee751603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee751603barEv,_ZTv0_n12_N7ee751603barEv)();
+extern void ABISELECT(_ZThn48_N7ee751603barEv,_ZThn24_N7ee751603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee751603fooEv,_ZTv0_n16_N7ee751603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee751603fooEv,_ZThn24_N7ee751603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee75160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee75160[0]),
+  (VTBL_ENTRY)&_ZN7ee751603fooEv,
+  (VTBL_ENTRY)&_ZN7ee751603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee75160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee751603barEv,_ZTv0_n20_N7ee751603barEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee75160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee75160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee751603barEv,_ZTv0_n12_N7ee751603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee751603fooEv,_ZTv0_n16_N7ee751603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee75160[];
+extern void _ZN6dd51603barEv();
+static  VTBL_ENTRY _tg__ZTV6dd5160__7ee75160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&_ZN6dd51603barEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd5160__7ee75160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv)();
+extern void ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv)() __attribute__((weak));
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd5160__7ee75160[] = {
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd5160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv),
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee75160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee75160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee75160[] = {
+  {&(_ZTV7ee75160[5]),  5,22},
+  {&(_ZTV7ee75160[12]),  12,22},
+  {&(_ZTV7ee75160[16]),  16,22},
+  {&(_ZTV7ee75160[20]),  20,22},
+  {&(_tg__ZTV6dd5160__7ee75160[4]),  4,5},
+  {&(_tg__ZTV5cc160__6dd5160__7ee75160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd5160__7ee75160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee75160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee75160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee75160[];
+extern  VTBL_ENTRY _ZTV7ee75160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee75160[];
+static VTBL_ENTRY alt_thunk_names93[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd51603barEv,_ZTv0_n12_N6dd51603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd51603barEv,_ZThn16_N6dd51603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee751603fooEv,_ZTv0_n16_N7ee751603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee751603fooEv,_ZThn24_N7ee751603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee751603barEv,_ZTv0_n12_N7ee751603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee751603barEv,_ZThn24_N7ee751603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee751603barEv,_ZTv0_n20_N7ee751603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee751603barEv,_ZThn8_N7ee751603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee75160 = {  "ee75160", // class name
+  bases_ee75160, 4,
+  &(vtc_ee75160[0]), // expected_vtbl_contents
+  &(vtt_ee75160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee75160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee75160),22, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee75160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names93,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd6160  : cc160 {
+  int d;
+  virtual void  bar(); // _ZN6dd61603barEv
+  virtual void  foo(); // _ZN6dd61603fooEv
+  ~dd6160(); // tgen
+  dd6160(); // tgen
+};
+//SIG(-1 dd6160) C1{ BC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 v2 Fi}
+
+
+void  dd6160 ::bar(){vfunc_called(this, "_ZN6dd61603barEv");}
+void  dd6160 ::foo(){vfunc_called(this, "_ZN6dd61603fooEv");}
+dd6160 ::~dd6160(){ note_dtor("dd6160", this);} // tgen
+dd6160 ::dd6160(){ note_ctor("dd6160", this);} // tgen
+
+static void Test_dd6160()
+{
+  extern Class_Descriptor cd_dd6160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_dd6160, buf);
+    dd6160 *dp, &lv = *(dp=new (buf) dd6160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(dd6160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd6160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(24,16), "dd6160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(16,12), "dd6160");
+    check_base_class_offset(lv, (cc160*), 0, "dd6160");
+    check_field_offset(lv, d, ABISELECT(12,8), "dd6160.d");
+    test_class_info(&lv, &cd_dd6160);
+    dp->~dd6160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd6160(Test_dd6160, "dd6160", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd6160C1Ev();
+extern void _ZN6dd6160D1Ev();
+Name_Map name_map_dd6160[] = {
+  NSPAIR(_ZN6dd6160C1Ev),
+  NSPAIR(_ZN6dd6160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd6160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd6160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd6160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd6160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd6160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd6160[] = {
+  {&(_ZTV6dd6160[3]),  3,11},
+  {&(_tg__ZTV5cc160__6dd6160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd6160[4]),  4,6},
+  {&(_ZTV6dd6160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static VTBL_ENTRY alt_thunk_names94[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd6160 = {  "dd6160", // class name
+  bases_dd6160, 3,
+  &(vtc_dd6160[0]), // expected_vtbl_contents
+  &(vtt_dd6160[0]), // expected_vtt_contents
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI6dd6160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd6160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd6160),4, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names94,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee06160  : dd6160 {
+  int e;
+  ~ee06160(); // tgen
+  ee06160(); // tgen
+};
+//SIG(1 ee06160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee06160 ::~ee06160(){ note_dtor("ee06160", this);} // tgen
+ee06160 ::ee06160(){ note_ctor("ee06160", this);} // tgen
+
+static void Test_ee06160()
+{
+  extern Class_Descriptor cd_ee06160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee06160, buf);
+    ee06160 *dp, &lv = *(dp=new (buf) ee06160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee06160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee06160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee06160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(24,16), "ee06160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), 0, "ee06160");
+    check_base_class_offset(lv, (dd6160*), 0, "ee06160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee06160.e");
+    test_class_info(&lv, &cd_ee06160);
+    dp->~ee06160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee06160(Test_ee06160, "ee06160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee06160C1Ev();
+extern void _ZN7ee06160D1Ev();
+Name_Map name_map_ee06160[] = {
+  NSPAIR(_ZN7ee06160C1Ev),
+  NSPAIR(_ZN7ee06160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee06160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee06160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee06160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee06160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee06160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee06160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee06160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee06160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee06160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee06160[] = {
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee06160[] = {
+  {&(_ZTV7ee06160[3]),  3,11},
+  {&(_tg__ZTV6dd6160__7ee06160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee06160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee06160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee06160[4]),  4,6},
+  {&(_ZTV7ee06160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee06160[];
+extern  VTBL_ENTRY _ZTV7ee06160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee06160[];
+static VTBL_ENTRY alt_thunk_names95[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee06160 = {  "ee06160", // class name
+  bases_ee06160, 4,
+  &(vtc_ee06160[0]), // expected_vtbl_contents
+  &(vtt_ee06160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee06160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee06160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee06160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names95,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee16160  : virtual dd6160 {
+  int e;
+  ~ee16160(); // tgen
+  ee16160(); // tgen
+};
+//SIG(1 ee16160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee16160 ::~ee16160(){ note_dtor("ee16160", this);} // tgen
+ee16160 ::ee16160(){ note_ctor("ee16160", this);} // tgen
+
+static void Test_ee16160()
+{
+  extern Class_Descriptor cd_ee16160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee16160, buf);
+    ee16160 *dp, &lv = *(dp=new (buf) ee16160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee16160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee16160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee16160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(32,20), "ee16160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), ABISELECT(16,8), "ee16160");
+    check_base_class_offset(lv, (dd6160*), ABISELECT(16,8), "ee16160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee16160.e");
+    test_class_info(&lv, &cd_ee16160);
+    dp->~ee16160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee16160(Test_ee16160, "ee16160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee16160C1Ev();
+extern void _ZN7ee16160D1Ev();
+Name_Map name_map_ee16160[] = {
+  NSPAIR(_ZN7ee16160C1Ev),
+  NSPAIR(_ZN7ee16160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee16160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee16160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee16160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee16160[0]),
+  0,
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee16160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee16160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee16160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee16160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee16160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee16160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee16160[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee16160[] = {
+  {&(_ZTV7ee16160[4]),  4,17},
+  {&(_ZTV7ee16160[9]),  9,17},
+  {&(_ZTV7ee16160[15]),  15,17},
+  {&(_tg__ZTV6dd6160__7ee16160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee16160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee16160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee16160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee16160[];
+extern  VTBL_ENTRY _ZTV7ee16160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee16160[];
+static VTBL_ENTRY alt_thunk_names96[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee16160 = {  "ee16160", // class name
+  bases_ee16160, 4,
+  &(vtc_ee16160[0]), // expected_vtbl_contents
+  &(vtt_ee16160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee16160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee16160),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee16160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names96,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee26160  : dd6160 {
+  int e;
+  virtual void  foo(); // _ZN7ee261603fooEv
+  ~ee26160(); // tgen
+  ee26160(); // tgen
+};
+//SIG(1 ee26160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee26160 ::foo(){vfunc_called(this, "_ZN7ee261603fooEv");}
+ee26160 ::~ee26160(){ note_dtor("ee26160", this);} // tgen
+ee26160 ::ee26160(){ note_ctor("ee26160", this);} // tgen
+
+static void Test_ee26160()
+{
+  extern Class_Descriptor cd_ee26160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee26160, buf);
+    ee26160 *dp, &lv = *(dp=new (buf) ee26160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee26160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee26160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee26160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(24,16), "ee26160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), 0, "ee26160");
+    check_base_class_offset(lv, (dd6160*), 0, "ee26160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee26160.e");
+    test_class_info(&lv, &cd_ee26160);
+    dp->~ee26160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee26160(Test_ee26160, "ee26160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee26160C1Ev();
+extern void _ZN7ee26160D1Ev();
+Name_Map name_map_ee26160[] = {
+  NSPAIR(_ZN7ee26160C1Ev),
+  NSPAIR(_ZN7ee26160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee26160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee26160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN7ee261603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee261603fooEv,_ZTv0_n16_N7ee261603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee261603fooEv,_ZThn16_N7ee261603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee26160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee26160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN7ee261603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee26160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee261603fooEv,_ZTv0_n16_N7ee261603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee26160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee26160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee26160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee26160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee26160[] = {
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee26160[] = {
+  {&(_ZTV7ee26160[3]),  3,11},
+  {&(_tg__ZTV6dd6160__7ee26160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee26160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee26160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee26160[4]),  4,6},
+  {&(_ZTV7ee26160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee26160[];
+extern  VTBL_ENTRY _ZTV7ee26160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee26160[];
+static VTBL_ENTRY alt_thunk_names97[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee261603fooEv,_ZTv0_n16_N7ee261603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee261603fooEv,_ZThn16_N7ee261603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee26160 = {  "ee26160", // class name
+  bases_ee26160, 4,
+  &(vtc_ee26160[0]), // expected_vtbl_contents
+  &(vtt_ee26160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee26160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee26160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee26160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names97,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee36160  : virtual dd6160 {
+  int e;
+  virtual void  foo(); // _ZN7ee361603fooEv
+  ~ee36160(); // tgen
+  ee36160(); // tgen
+};
+//SIG(1 ee36160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee36160 ::foo(){vfunc_called(this, "_ZN7ee361603fooEv");}
+ee36160 ::~ee36160(){ note_dtor("ee36160", this);} // tgen
+ee36160 ::ee36160(){ note_ctor("ee36160", this);} // tgen
+
+static void Test_ee36160()
+{
+  extern Class_Descriptor cd_ee36160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee36160, buf);
+    ee36160 *dp, &lv = *(dp=new (buf) ee36160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee36160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee36160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee36160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(32,20), "ee36160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), ABISELECT(16,8), "ee36160");
+    check_base_class_offset(lv, (dd6160*), ABISELECT(16,8), "ee36160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee36160.e");
+    test_class_info(&lv, &cd_ee36160);
+    dp->~ee36160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee36160(Test_ee36160, "ee36160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee36160C1Ev();
+extern void _ZN7ee36160D1Ev();
+Name_Map name_map_ee36160[] = {
+  NSPAIR(_ZN7ee36160C1Ev),
+  NSPAIR(_ZN7ee36160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee36160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee36160[];
+extern void _ZN7ee361603fooEv();
+extern void _ZN6dd61603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee361603fooEv,_ZTv0_n20_N7ee361603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee361603fooEv,_ZThn8_N7ee361603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee361603fooEv,_ZTv0_n16_N7ee361603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee361603fooEv,_ZThn20_N7ee361603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee36160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee36160[0]),
+  (VTBL_ENTRY)&_ZN7ee361603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee36160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee361603fooEv,_ZTv0_n20_N7ee361603fooEv),
+  ABISELECT(-32,-20),
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee36160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee361603fooEv,_ZTv0_n16_N7ee361603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee36160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee36160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee36160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee36160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee36160[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee36160[] = {
+  {&(_ZTV7ee36160[4]),  4,18},
+  {&(_ZTV7ee36160[10]),  10,18},
+  {&(_ZTV7ee36160[16]),  16,18},
+  {&(_tg__ZTV6dd6160__7ee36160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee36160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee36160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee36160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee36160[];
+extern  VTBL_ENTRY _ZTV7ee36160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee36160[];
+static VTBL_ENTRY alt_thunk_names98[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee361603fooEv,_ZTv0_n16_N7ee361603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee361603fooEv,_ZThn20_N7ee361603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee361603fooEv,_ZTv0_n20_N7ee361603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee361603fooEv,_ZThn8_N7ee361603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee36160 = {  "ee36160", // class name
+  bases_ee36160, 4,
+  &(vtc_ee36160[0]), // expected_vtbl_contents
+  &(vtt_ee36160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee36160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee36160),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee36160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names98,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee46160  : dd6160 {
+  int e;
+  virtual void  bar(); // _ZN7ee461603barEv
+  ~ee46160(); // tgen
+  ee46160(); // tgen
+};
+//SIG(1 ee46160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee46160 ::bar(){vfunc_called(this, "_ZN7ee461603barEv");}
+ee46160 ::~ee46160(){ note_dtor("ee46160", this);} // tgen
+ee46160 ::ee46160(){ note_ctor("ee46160", this);} // tgen
+
+static void Test_ee46160()
+{
+  extern Class_Descriptor cd_ee46160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee46160, buf);
+    ee46160 *dp, &lv = *(dp=new (buf) ee46160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee46160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee46160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee46160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(24,16), "ee46160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), 0, "ee46160");
+    check_base_class_offset(lv, (dd6160*), 0, "ee46160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee46160.e");
+    test_class_info(&lv, &cd_ee46160);
+    dp->~ee46160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee46160(Test_ee46160, "ee46160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee46160C1Ev();
+extern void _ZN7ee46160D1Ev();
+Name_Map name_map_ee46160[] = {
+  NSPAIR(_ZN7ee46160C1Ev),
+  NSPAIR(_ZN7ee46160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee46160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee46160[];
+extern void _ZN7ee461603barEv();
+extern void _ZN6dd61603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee461603barEv,_ZTv0_n12_N7ee461603barEv)();
+extern void ABISELECT(_ZThn24_N7ee461603barEv,_ZThn16_N7ee461603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee46160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee46160[0]),
+  (VTBL_ENTRY)&_ZN7ee461603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee46160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee461603barEv,_ZTv0_n12_N7ee461603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee46160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee46160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee46160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee46160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee46160[] = {
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee46160[] = {
+  {&(_ZTV7ee46160[3]),  3,11},
+  {&(_tg__ZTV6dd6160__7ee46160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee46160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee46160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee46160[4]),  4,6},
+  {&(_ZTV7ee46160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee46160[];
+extern  VTBL_ENTRY _ZTV7ee46160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee46160[];
+static VTBL_ENTRY alt_thunk_names99[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee461603barEv,_ZTv0_n12_N7ee461603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee461603barEv,_ZThn16_N7ee461603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee46160 = {  "ee46160", // class name
+  bases_ee46160, 4,
+  &(vtc_ee46160[0]), // expected_vtbl_contents
+  &(vtt_ee46160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee46160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee46160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee46160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names99,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee56160  : virtual dd6160 {
+  int e;
+  virtual void  bar(); // _ZN7ee561603barEv
+  ~ee56160(); // tgen
+  ee56160(); // tgen
+};
+//SIG(1 ee56160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee56160 ::bar(){vfunc_called(this, "_ZN7ee561603barEv");}
+ee56160 ::~ee56160(){ note_dtor("ee56160", this);} // tgen
+ee56160 ::ee56160(){ note_ctor("ee56160", this);} // tgen
+
+static void Test_ee56160()
+{
+  extern Class_Descriptor cd_ee56160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee56160, buf);
+    ee56160 *dp, &lv = *(dp=new (buf) ee56160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee56160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee56160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee56160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(32,20), "ee56160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), ABISELECT(16,8), "ee56160");
+    check_base_class_offset(lv, (dd6160*), ABISELECT(16,8), "ee56160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee56160.e");
+    test_class_info(&lv, &cd_ee56160);
+    dp->~ee56160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee56160(Test_ee56160, "ee56160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee56160C1Ev();
+extern void _ZN7ee56160D1Ev();
+Name_Map name_map_ee56160[] = {
+  NSPAIR(_ZN7ee56160C1Ev),
+  NSPAIR(_ZN7ee56160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee56160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee56160[];
+extern void _ZN7ee561603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee561603barEv,_ZTv0_n16_N7ee561603barEv)();
+extern void ABISELECT(_ZThn16_N7ee561603barEv,_ZThn8_N7ee561603barEv)() __attribute__((weak));
+extern void _ZN6dd61603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee561603barEv,_ZTv0_n12_N7ee561603barEv)();
+extern void ABISELECT(_ZThn32_N7ee561603barEv,_ZThn20_N7ee561603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee56160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee56160[0]),
+  (VTBL_ENTRY)&_ZN7ee561603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee56160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee561603barEv,_ZTv0_n16_N7ee561603barEv),
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee56160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee561603barEv,_ZTv0_n12_N7ee561603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee56160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee56160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee56160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee56160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee56160[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee56160[] = {
+  {&(_ZTV7ee56160[4]),  4,18},
+  {&(_ZTV7ee56160[10]),  10,18},
+  {&(_ZTV7ee56160[16]),  16,18},
+  {&(_tg__ZTV6dd6160__7ee56160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee56160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee56160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee56160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee56160[];
+extern  VTBL_ENTRY _ZTV7ee56160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee56160[];
+static VTBL_ENTRY alt_thunk_names100[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee561603barEv,_ZTv0_n12_N7ee561603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee561603barEv,_ZThn20_N7ee561603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee561603barEv,_ZTv0_n16_N7ee561603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee561603barEv,_ZThn8_N7ee561603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee56160 = {  "ee56160", // class name
+  bases_ee56160, 4,
+  &(vtc_ee56160[0]), // expected_vtbl_contents
+  &(vtt_ee56160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee56160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee56160),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee56160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names100,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee66160  : dd6160 {
+  int e;
+  virtual void  foo(); // _ZN7ee661603fooEv
+  virtual void  bar(); // _ZN7ee661603barEv
+  ~ee66160(); // tgen
+  ee66160(); // tgen
+};
+//SIG(1 ee66160) C1{ BC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee66160 ::foo(){vfunc_called(this, "_ZN7ee661603fooEv");}
+void  ee66160 ::bar(){vfunc_called(this, "_ZN7ee661603barEv");}
+ee66160 ::~ee66160(){ note_dtor("ee66160", this);} // tgen
+ee66160 ::ee66160(){ note_ctor("ee66160", this);} // tgen
+
+static void Test_ee66160()
+{
+  extern Class_Descriptor cd_ee66160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee66160, buf);
+    ee66160 *dp, &lv = *(dp=new (buf) ee66160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee66160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee66160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(32,20), "ee66160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(24,16), "ee66160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), 0, "ee66160");
+    check_base_class_offset(lv, (dd6160*), 0, "ee66160");
+    check_field_offset(lv, e, ABISELECT(16,12), "ee66160.e");
+    test_class_info(&lv, &cd_ee66160);
+    dp->~ee66160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee66160(Test_ee66160, "ee66160", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee66160C1Ev();
+extern void _ZN7ee66160D1Ev();
+Name_Map name_map_ee66160[] = {
+  NSPAIR(_ZN7ee66160C1Ev),
+  NSPAIR(_ZN7ee66160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee66160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(32,20), //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_bb60,    ABISELECT(24,16), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee66160[];
+extern void _ZN7ee661603barEv();
+extern void _ZN7ee661603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee661603barEv,_ZTv0_n12_N7ee661603barEv)();
+extern void ABISELECT(_ZThn24_N7ee661603barEv,_ZThn16_N7ee661603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee661603fooEv,_ZTv0_n16_N7ee661603fooEv)();
+extern void ABISELECT(_ZThn24_N7ee661603fooEv,_ZThn16_N7ee661603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee66160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee66160[0]),
+  (VTBL_ENTRY)&_ZN7ee661603barEv,
+  (VTBL_ENTRY)&_ZN7ee661603fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7ee66160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee661603barEv,_ZTv0_n12_N7ee661603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee661603fooEv,_ZTv0_n16_N7ee661603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee66160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee66160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee66160[] = {
+  ABISELECT(24,16),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee66160[] = {
+  0,
+  0,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee66160[] = {
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee66160[] = {
+  {&(_ZTV7ee66160[3]),  3,11},
+  {&(_tg__ZTV6dd6160__7ee66160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee66160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee66160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee66160[4]),  4,6},
+  {&(_ZTV7ee66160[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee66160[];
+extern  VTBL_ENTRY _ZTV7ee66160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee66160[];
+static VTBL_ENTRY alt_thunk_names101[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603fooEv,_ZThn16_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N6dd61603barEv,_ZThn16_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee661603fooEv,_ZTv0_n16_N7ee661603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee661603fooEv,_ZThn16_N7ee661603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee661603barEv,_ZTv0_n12_N7ee661603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N7ee661603barEv,_ZThn16_N7ee661603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee66160 = {  "ee66160", // class name
+  bases_ee66160, 4,
+  &(vtc_ee66160[0]), // expected_vtbl_contents
+  &(vtt_ee66160[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee66160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee66160),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee66160),6, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names101,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee76160  : virtual dd6160 {
+  int e;
+  virtual void  foo(); // _ZN7ee761603fooEv
+  virtual void  bar(); // _ZN7ee761603barEv
+  ~ee76160(); // tgen
+  ee76160(); // tgen
+};
+//SIG(1 ee76160) C1{ VBC2{ BC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee76160 ::foo(){vfunc_called(this, "_ZN7ee761603fooEv");}
+void  ee76160 ::bar(){vfunc_called(this, "_ZN7ee761603barEv");}
+ee76160 ::~ee76160(){ note_dtor("ee76160", this);} // tgen
+ee76160 ::ee76160(){ note_ctor("ee76160", this);} // tgen
+
+static void Test_ee76160()
+{
+  extern Class_Descriptor cd_ee76160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee76160, buf);
+    ee76160 *dp, &lv = *(dp=new (buf) ee76160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee76160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee76160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee76160");
+    check_base_class_offset(lv, (bb60*)(cc160*)(dd6160*), ABISELECT(32,20), "ee76160");
+    check_base_class_offset(lv, (cc160*)(dd6160*), ABISELECT(16,8), "ee76160");
+    check_base_class_offset(lv, (dd6160*), ABISELECT(16,8), "ee76160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee76160.e");
+    test_class_info(&lv, &cd_ee76160);
+    dp->~ee76160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee76160(Test_ee76160, "ee76160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee76160C1Ev();
+extern void _ZN7ee76160D1Ev();
+Name_Map name_map_ee76160[] = {
+  NSPAIR(_ZN7ee76160C1Ev),
+  NSPAIR(_ZN7ee76160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd6160;
+extern VTBL_ENTRY _ZTI6dd6160[];
+extern  VTBL_ENTRY _ZTV6dd6160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd6160[];
+static Base_Class bases_ee76160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd6160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee76160[];
+extern void _ZN7ee761603fooEv();
+extern void _ZN7ee761603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee761603barEv,_ZTv0_n16_N7ee761603barEv)();
+extern void ABISELECT(_ZThn16_N7ee761603barEv,_ZThn8_N7ee761603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N7ee761603fooEv,_ZTv0_n20_N7ee761603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee761603fooEv,_ZThn8_N7ee761603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee761603barEv,_ZTv0_n12_N7ee761603barEv)();
+extern void ABISELECT(_ZThn32_N7ee761603barEv,_ZThn20_N7ee761603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee761603fooEv,_ZTv0_n16_N7ee761603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee761603fooEv,_ZThn20_N7ee761603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee76160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee76160[0]),
+  (VTBL_ENTRY)&_ZN7ee761603fooEv,
+  (VTBL_ENTRY)&_ZN7ee761603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(16,12),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee76160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee761603barEv,_ZTv0_n16_N7ee761603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee761603fooEv,_ZTv0_n20_N7ee761603fooEv),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee76160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee761603barEv,_ZTv0_n12_N7ee761603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee761603fooEv,_ZTv0_n16_N7ee761603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee76160[];
+extern void _ZN6dd61603barEv();
+extern void _ZN6dd61603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd6160__7ee76160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&_ZN6dd61603barEv,
+  (VTBL_ENTRY)&_ZN6dd61603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc1606dd6160__7ee76160[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc1606dd6160__7ee76160[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv)();
+extern void ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv)();
+extern void ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd6160__7ee76160[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd6160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv),
+};
+static  VTT_ENTRY vtt_ee76160[] = {
+  {&(_ZTV7ee76160[4]),  4,19},
+  {&(_ZTV7ee76160[11]),  11,19},
+  {&(_ZTV7ee76160[17]),  17,19},
+  {&(_tg__ZTV6dd6160__7ee76160[3]),  3,5},
+  {&(_tg__ZTV5cc1606dd6160__7ee76160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc1606dd6160__7ee76160[4]),  4,6},
+  {&(_tg__ZTV4bb60__6dd6160__7ee76160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee76160[];
+extern  VTBL_ENTRY _ZTV7ee76160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee76160[];
+static VTBL_ENTRY alt_thunk_names102[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd61603fooEv,_ZTv0_n16_N6dd61603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603fooEv,_ZThn12_N6dd61603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd61603barEv,_ZTv0_n12_N6dd61603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N6dd61603barEv,_ZThn12_N6dd61603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee761603fooEv,_ZTv0_n16_N7ee761603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee761603fooEv,_ZThn20_N7ee761603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee761603barEv,_ZTv0_n12_N7ee761603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee761603barEv,_ZThn20_N7ee761603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee761603fooEv,_ZTv0_n20_N7ee761603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee761603fooEv,_ZThn8_N7ee761603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee761603barEv,_ZTv0_n16_N7ee761603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee761603barEv,_ZThn8_N7ee761603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee76160 = {  "ee76160", // class name
+  bases_ee76160, 4,
+  &(vtc_ee76160[0]), // expected_vtbl_contents
+  &(vtt_ee76160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee76160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee76160),19, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee76160),7, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names102,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd7160  : virtual cc160 {
+  int d;
+  virtual void  bar(); // _ZN6dd71603barEv
+  virtual void  foo(); // _ZN6dd71603fooEv
+  ~dd7160(); // tgen
+  dd7160(); // tgen
+};
+//SIG(-1 dd7160) C1{ VBC2{ VBC3{ BC4{ Fi} v1 v2 Fi} Fi} v1 v2 Fi}
+
+
+void  dd7160 ::bar(){vfunc_called(this, "_ZN6dd71603barEv");}
+void  dd7160 ::foo(){vfunc_called(this, "_ZN6dd71603fooEv");}
+dd7160 ::~dd7160(){ note_dtor("dd7160", this);} // tgen
+dd7160 ::dd7160(){ note_ctor("dd7160", this);} // tgen
+
+static void Test_dd7160()
+{
+  extern Class_Descriptor cd_dd7160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,8)];
+    init_test(&cd_dd7160, buf);
+    dd7160 *dp, &lv = *(dp=new (buf) dd7160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,28), "sizeof(dd7160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd7160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,20), "dd7160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,16), "dd7160");
+    check_base_class_offset(lv, (cc160*), ABISELECT(16,8), "dd7160");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd7160.d");
+    test_class_info(&lv, &cd_dd7160);
+    dp->~dd7160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd7160(Test_dd7160, "dd7160", ABISELECT(48,28));
+
+#else // __cplusplus
+
+extern void _ZN6dd7160C1Ev();
+extern void _ZN6dd7160D1Ev();
+Name_Map name_map_dd7160[] = {
+  NSPAIR(_ZN6dd7160C1Ev),
+  NSPAIR(_ZN6dd7160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+static Base_Class bases_dd7160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_dd7160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+extern VTBL_ENTRY _ZTV6dd7160[];
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__6dd7160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_dd7160[] = {
+  {&(_ZTV6dd7160[4]),  4,15},
+  {&(_ZTV6dd7160[9]),  9,15},
+  {&(_ZTV6dd7160[13]),  13,15},
+  {&(_tg__ZTV5cc160__6dd7160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__6dd7160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static VTBL_ENTRY alt_thunk_names103[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_dd7160 = {  "dd7160", // class name
+  bases_dd7160, 3,
+  &(vtc_dd7160[0]), // expected_vtbl_contents
+  &(vtt_dd7160[0]), // expected_vtt_contents
+  ABISELECT(48,28), // object size
+  NSPAIRA(_ZTI6dd7160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd7160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd7160),5, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names103,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee07160  : dd7160 {
+  int e;
+  ~ee07160(); // tgen
+  ee07160(); // tgen
+};
+//SIG(1 ee07160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee07160 ::~ee07160(){ note_dtor("ee07160", this);} // tgen
+ee07160 ::ee07160(){ note_ctor("ee07160", this);} // tgen
+
+static void Test_ee07160()
+{
+  extern Class_Descriptor cd_ee07160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee07160, buf);
+    ee07160 *dp, &lv = *(dp=new (buf) ee07160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee07160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee07160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee07160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee07160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(16,12), "ee07160");
+    check_base_class_offset(lv, (dd7160*), 0, "ee07160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee07160.e");
+    test_class_info(&lv, &cd_ee07160);
+    dp->~ee07160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee07160(Test_ee07160, "ee07160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee07160C1Ev();
+extern void _ZN7ee07160D1Ev();
+Name_Map name_map_ee07160[] = {
+  NSPAIR(_ZN7ee07160C1Ev),
+  NSPAIR(_ZN7ee07160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee07160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee07160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee07160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee07160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee07160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee07160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee07160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee07160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee07160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee07160[] = {
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee07160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee07160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee07160[] = {
+  {&(_ZTV7ee07160[4]),  4,15},
+  {&(_tg__ZTV6dd7160__7ee07160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee07160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee07160[4]),  4,6},
+  {&(_ZTV7ee07160[9]),  9,15},
+  {&(_ZTV7ee07160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee07160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee07160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee07160[];
+extern  VTBL_ENTRY _ZTV7ee07160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee07160[];
+static VTBL_ENTRY alt_thunk_names104[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee07160 = {  "ee07160", // class name
+  bases_ee07160, 4,
+  &(vtc_ee07160[0]), // expected_vtbl_contents
+  &(vtt_ee07160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee07160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee07160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee07160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names104,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee17160  : virtual dd7160 {
+  int e;
+  ~ee17160(); // tgen
+  ee17160(); // tgen
+};
+//SIG(1 ee17160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} Fi}
+
+
+ee17160 ::~ee17160(){ note_dtor("ee17160", this);} // tgen
+ee17160 ::ee17160(){ note_ctor("ee17160", this);} // tgen
+
+static void Test_ee17160()
+{
+  extern Class_Descriptor cd_ee17160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee17160, buf);
+    ee17160 *dp, &lv = *(dp=new (buf) ee17160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee17160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee17160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee17160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee17160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(32,16), "ee17160");
+    check_base_class_offset(lv, (dd7160*), ABISELECT(16,8), "ee17160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee17160.e");
+    test_class_info(&lv, &cd_ee17160);
+    dp->~ee17160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee17160(Test_ee17160, "ee17160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee17160C1Ev();
+extern void _ZN7ee17160D1Ev();
+Name_Map name_map_ee17160[] = {
+  NSPAIR(_ZN7ee17160C1Ev),
+  NSPAIR(_ZN7ee17160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee17160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    6, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee17160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee17160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee17160[0]),
+  0,
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee17160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee17160[0]),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee17160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee17160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee17160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee17160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee17160[] = {
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee17160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee17160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee17160[] = {
+  {&(_ZTV7ee17160[5]),  5,22},
+  {&(_ZTV7ee17160[11]),  11,22},
+  {&(_ZTV7ee17160[16]),  16,22},
+  {&(_ZTV7ee17160[20]),  20,22},
+  {&(_tg__ZTV6dd7160__7ee17160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee17160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee17160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee17160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee17160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee17160[];
+extern  VTBL_ENTRY _ZTV7ee17160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee17160[];
+static VTBL_ENTRY alt_thunk_names105[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee17160 = {  "ee17160", // class name
+  bases_ee17160, 4,
+  &(vtc_ee17160[0]), // expected_vtbl_contents
+  &(vtt_ee17160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee17160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee17160),22, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee17160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names105,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee27160  : dd7160 {
+  int e;
+  virtual void  foo(); // _ZN7ee271603fooEv
+  ~ee27160(); // tgen
+  ee27160(); // tgen
+};
+//SIG(1 ee27160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee27160 ::foo(){vfunc_called(this, "_ZN7ee271603fooEv");}
+ee27160 ::~ee27160(){ note_dtor("ee27160", this);} // tgen
+ee27160 ::ee27160(){ note_ctor("ee27160", this);} // tgen
+
+static void Test_ee27160()
+{
+  extern Class_Descriptor cd_ee27160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee27160, buf);
+    ee27160 *dp, &lv = *(dp=new (buf) ee27160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee27160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee27160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee27160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee27160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(16,12), "ee27160");
+    check_base_class_offset(lv, (dd7160*), 0, "ee27160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee27160.e");
+    test_class_info(&lv, &cd_ee27160);
+    dp->~ee27160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee27160(Test_ee27160, "ee27160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee27160C1Ev();
+extern void _ZN7ee27160D1Ev();
+Name_Map name_map_ee27160[] = {
+  NSPAIR(_ZN7ee27160C1Ev),
+  NSPAIR(_ZN7ee27160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee27160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee27160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN7ee271603fooEv();
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee271603fooEv,_ZTv0_n16_N7ee271603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee271603fooEv,_ZThn20_N7ee271603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee27160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee27160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN7ee271603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee27160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee27160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee271603fooEv,_ZTv0_n16_N7ee271603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee27160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee27160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee27160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee27160[] = {
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee27160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee27160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee27160[] = {
+  {&(_ZTV7ee27160[4]),  4,15},
+  {&(_tg__ZTV6dd7160__7ee27160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee27160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee27160[4]),  4,6},
+  {&(_ZTV7ee27160[9]),  9,15},
+  {&(_ZTV7ee27160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee27160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee27160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee27160[];
+extern  VTBL_ENTRY _ZTV7ee27160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee27160[];
+static VTBL_ENTRY alt_thunk_names106[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee271603fooEv,_ZTv0_n16_N7ee271603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee271603fooEv,_ZThn20_N7ee271603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee27160 = {  "ee27160", // class name
+  bases_ee27160, 4,
+  &(vtc_ee27160[0]), // expected_vtbl_contents
+  &(vtt_ee27160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee27160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee27160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee27160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names106,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee37160  : virtual dd7160 {
+  int e;
+  virtual void  foo(); // _ZN7ee371603fooEv
+  ~ee37160(); // tgen
+  ee37160(); // tgen
+};
+//SIG(1 ee37160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 Fi}
+
+
+void  ee37160 ::foo(){vfunc_called(this, "_ZN7ee371603fooEv");}
+ee37160 ::~ee37160(){ note_dtor("ee37160", this);} // tgen
+ee37160 ::ee37160(){ note_ctor("ee37160", this);} // tgen
+
+static void Test_ee37160()
+{
+  extern Class_Descriptor cd_ee37160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee37160, buf);
+    ee37160 *dp, &lv = *(dp=new (buf) ee37160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee37160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee37160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee37160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee37160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(32,16), "ee37160");
+    check_base_class_offset(lv, (dd7160*), ABISELECT(16,8), "ee37160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee37160.e");
+    test_class_info(&lv, &cd_ee37160);
+    dp->~ee37160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee37160(Test_ee37160, "ee37160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee37160C1Ev();
+extern void _ZN7ee37160D1Ev();
+Name_Map name_map_ee37160[] = {
+  NSPAIR(_ZN7ee37160C1Ev),
+  NSPAIR(_ZN7ee37160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee37160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    17, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    6, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee37160[];
+extern void _ZN7ee371603fooEv();
+extern void _ZN6dd71603barEv();
+extern void ABISELECT(_ZTv0_n48_N7ee371603fooEv,_ZTv0_n24_N7ee371603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee371603fooEv,_ZThn8_N7ee371603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee371603fooEv,_ZTv0_n16_N7ee371603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee371603fooEv,_ZThn24_N7ee371603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee37160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee37160[0]),
+  (VTBL_ENTRY)&_ZN7ee371603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee37160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7ee371603fooEv,_ZTv0_n24_N7ee371603fooEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee37160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee37160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee371603fooEv,_ZTv0_n16_N7ee371603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee37160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee37160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee37160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee37160[] = {
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee37160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee37160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee37160[] = {
+  {&(_ZTV7ee37160[5]),  5,23},
+  {&(_ZTV7ee37160[12]),  12,23},
+  {&(_ZTV7ee37160[17]),  17,23},
+  {&(_ZTV7ee37160[21]),  21,23},
+  {&(_tg__ZTV6dd7160__7ee37160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee37160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee37160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee37160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee37160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee37160[];
+extern  VTBL_ENTRY _ZTV7ee37160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee37160[];
+static VTBL_ENTRY alt_thunk_names107[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee371603fooEv,_ZTv0_n16_N7ee371603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee371603fooEv,_ZThn24_N7ee371603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7ee371603fooEv,_ZTv0_n24_N7ee371603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee371603fooEv,_ZThn8_N7ee371603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee37160 = {  "ee37160", // class name
+  bases_ee37160, 4,
+  &(vtc_ee37160[0]), // expected_vtbl_contents
+  &(vtt_ee37160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee37160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee37160),23, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee37160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names107,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee47160  : dd7160 {
+  int e;
+  virtual void  bar(); // _ZN7ee471603barEv
+  ~ee47160(); // tgen
+  ee47160(); // tgen
+};
+//SIG(1 ee47160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee47160 ::bar(){vfunc_called(this, "_ZN7ee471603barEv");}
+ee47160 ::~ee47160(){ note_dtor("ee47160", this);} // tgen
+ee47160 ::ee47160(){ note_ctor("ee47160", this);} // tgen
+
+static void Test_ee47160()
+{
+  extern Class_Descriptor cd_ee47160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee47160, buf);
+    ee47160 *dp, &lv = *(dp=new (buf) ee47160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee47160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee47160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee47160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee47160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(16,12), "ee47160");
+    check_base_class_offset(lv, (dd7160*), 0, "ee47160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee47160.e");
+    test_class_info(&lv, &cd_ee47160);
+    dp->~ee47160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee47160(Test_ee47160, "ee47160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee47160C1Ev();
+extern void _ZN7ee47160D1Ev();
+Name_Map name_map_ee47160[] = {
+  NSPAIR(_ZN7ee47160C1Ev),
+  NSPAIR(_ZN7ee47160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee47160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee47160[];
+extern void _ZN7ee471603barEv();
+extern void _ZN6dd71603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee471603barEv,_ZTv0_n12_N7ee471603barEv)();
+extern void ABISELECT(_ZThn32_N7ee471603barEv,_ZThn20_N7ee471603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee47160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee47160[0]),
+  (VTBL_ENTRY)&_ZN7ee471603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee47160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee47160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee471603barEv,_ZTv0_n12_N7ee471603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee47160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee47160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee47160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee47160[] = {
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee47160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee47160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee47160[] = {
+  {&(_ZTV7ee47160[4]),  4,15},
+  {&(_tg__ZTV6dd7160__7ee47160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee47160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee47160[4]),  4,6},
+  {&(_ZTV7ee47160[9]),  9,15},
+  {&(_ZTV7ee47160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee47160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee47160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee47160[];
+extern  VTBL_ENTRY _ZTV7ee47160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee47160[];
+static VTBL_ENTRY alt_thunk_names108[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee471603barEv,_ZTv0_n12_N7ee471603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee471603barEv,_ZThn20_N7ee471603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee47160 = {  "ee47160", // class name
+  bases_ee47160, 4,
+  &(vtc_ee47160[0]), // expected_vtbl_contents
+  &(vtt_ee47160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee47160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee47160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee47160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names108,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee57160  : virtual dd7160 {
+  int e;
+  virtual void  bar(); // _ZN7ee571603barEv
+  ~ee57160(); // tgen
+  ee57160(); // tgen
+};
+//SIG(1 ee57160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v1 v2 Fi} Fi} v1 v2 Fi} v1 Fi}
+
+
+void  ee57160 ::bar(){vfunc_called(this, "_ZN7ee571603barEv");}
+ee57160 ::~ee57160(){ note_dtor("ee57160", this);} // tgen
+ee57160 ::ee57160(){ note_ctor("ee57160", this);} // tgen
+
+static void Test_ee57160()
+{
+  extern Class_Descriptor cd_ee57160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee57160, buf);
+    ee57160 *dp, &lv = *(dp=new (buf) ee57160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee57160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee57160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee57160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee57160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(32,16), "ee57160");
+    check_base_class_offset(lv, (dd7160*), ABISELECT(16,8), "ee57160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee57160.e");
+    test_class_info(&lv, &cd_ee57160);
+    dp->~ee57160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee57160(Test_ee57160, "ee57160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee57160C1Ev();
+extern void _ZN7ee57160D1Ev();
+Name_Map name_map_ee57160[] = {
+  NSPAIR(_ZN7ee57160C1Ev),
+  NSPAIR(_ZN7ee57160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee57160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    17, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    ABISELECT(16,8), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    6, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee57160[];
+extern void _ZN7ee571603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee571603barEv,_ZTv0_n20_N7ee571603barEv)();
+extern void ABISELECT(_ZThn16_N7ee571603barEv,_ZThn8_N7ee571603barEv)() __attribute__((weak));
+extern void _ZN6dd71603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee571603barEv,_ZTv0_n12_N7ee571603barEv)();
+extern void ABISELECT(_ZThn48_N7ee571603barEv,_ZThn24_N7ee571603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee57160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee57160[0]),
+  (VTBL_ENTRY)&_ZN7ee571603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee57160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee571603barEv,_ZTv0_n20_N7ee571603barEv),
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee57160[0]),
+  ABISELECT(-32,-16),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee57160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee571603barEv,_ZTv0_n12_N7ee571603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee57160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee57160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee57160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee57160[] = {
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee57160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee57160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee57160[] = {
+  {&(_ZTV7ee57160[5]),  5,23},
+  {&(_ZTV7ee57160[12]),  12,23},
+  {&(_ZTV7ee57160[17]),  17,23},
+  {&(_ZTV7ee57160[21]),  21,23},
+  {&(_tg__ZTV6dd7160__7ee57160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee57160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee57160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee57160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee57160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee57160[];
+extern  VTBL_ENTRY _ZTV7ee57160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee57160[];
+static VTBL_ENTRY alt_thunk_names109[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee571603barEv,_ZTv0_n12_N7ee571603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee571603barEv,_ZThn24_N7ee571603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee571603barEv,_ZTv0_n20_N7ee571603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee571603barEv,_ZThn8_N7ee571603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee57160 = {  "ee57160", // class name
+  bases_ee57160, 4,
+  &(vtc_ee57160[0]), // expected_vtbl_contents
+  &(vtt_ee57160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee57160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee57160),23, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee57160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names109,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee67160  : dd7160 {
+  int e;
+  virtual void  foo(); // _ZN7ee671603fooEv
+  virtual void  bar(); // _ZN7ee671603barEv
+  ~ee67160(); // tgen
+  ee67160(); // tgen
+};
+//SIG(1 ee67160) C1{ BC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee67160 ::foo(){vfunc_called(this, "_ZN7ee671603fooEv");}
+void  ee67160 ::bar(){vfunc_called(this, "_ZN7ee671603barEv");}
+ee67160 ::~ee67160(){ note_dtor("ee67160", this);} // tgen
+ee67160 ::ee67160(){ note_ctor("ee67160", this);} // tgen
+
+static void Test_ee67160()
+{
+  extern Class_Descriptor cd_ee67160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_ee67160, buf);
+    ee67160 *dp, &lv = *(dp=new (buf) ee67160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(ee67160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee67160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(40,24), "ee67160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(32,20), "ee67160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(16,12), "ee67160");
+    check_base_class_offset(lv, (dd7160*), 0, "ee67160");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee67160.e");
+    test_class_info(&lv, &cd_ee67160);
+    dp->~ee67160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee67160(Test_ee67160, "ee67160", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee67160C1Ev();
+extern void _ZN7ee67160D1Ev();
+Name_Map name_map_ee67160[] = {
+  NSPAIR(_ZN7ee67160C1Ev),
+  NSPAIR(_ZN7ee67160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee67160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,24), //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_bb60,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee67160[];
+extern void _ZN7ee671603barEv();
+extern void _ZN7ee671603fooEv();
+extern void ABISELECT(_ZTv0_n24_N7ee671603barEv,_ZTv0_n12_N7ee671603barEv)();
+extern void ABISELECT(_ZThn32_N7ee671603barEv,_ZThn20_N7ee671603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee671603fooEv,_ZTv0_n16_N7ee671603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee671603fooEv,_ZThn20_N7ee671603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee67160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee67160[0]),
+  (VTBL_ENTRY)&_ZN7ee671603barEv,
+  (VTBL_ENTRY)&_ZN7ee671603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee67160[0]),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7ee67160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee671603barEv,_ZTv0_n12_N7ee671603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee671603fooEv,_ZTv0_n16_N7ee671603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee67160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee67160[] = {
+  ABISELECT(32,20),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee67160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee67160[] = {
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee67160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee67160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee67160[] = {
+  {&(_ZTV7ee67160[4]),  4,15},
+  {&(_tg__ZTV6dd7160__7ee67160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee67160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee67160[4]),  4,6},
+  {&(_ZTV7ee67160[9]),  9,15},
+  {&(_ZTV7ee67160[13]),  13,15},
+  {&(_tg__ZTV5cc160__7ee67160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee67160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee67160[];
+extern  VTBL_ENTRY _ZTV7ee67160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee67160[];
+static VTBL_ENTRY alt_thunk_names110[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn20_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn20_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee671603fooEv,_ZTv0_n16_N7ee671603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee671603fooEv,_ZThn20_N7ee671603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee671603barEv,_ZTv0_n12_N7ee671603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee671603barEv,_ZThn20_N7ee671603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee67160 = {  "ee67160", // class name
+  bases_ee67160, 4,
+  &(vtc_ee67160[0]), // expected_vtbl_contents
+  &(vtt_ee67160[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI7ee67160),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee67160),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee67160),8, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names110,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee77160  : virtual dd7160 {
+  int e;
+  virtual void  foo(); // _ZN7ee771603fooEv
+  virtual void  bar(); // _ZN7ee771603barEv
+  ~ee77160(); // tgen
+  ee77160(); // tgen
+};
+//SIG(1 ee77160) C1{ VBC2{ VBC3{ VBC4{ BC5{ Fi} v2 v1 Fi} Fi} v2 v1 Fi} v1 v2 Fi}
+
+
+void  ee77160 ::foo(){vfunc_called(this, "_ZN7ee771603fooEv");}
+void  ee77160 ::bar(){vfunc_called(this, "_ZN7ee771603barEv");}
+ee77160 ::~ee77160(){ note_dtor("ee77160", this);} // tgen
+ee77160 ::ee77160(){ note_ctor("ee77160", this);} // tgen
+
+static void Test_ee77160()
+{
+  extern Class_Descriptor cd_ee77160;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_ee77160, buf);
+    ee77160 *dp, &lv = *(dp=new (buf) ee77160());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(ee77160)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee77160)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(56,28), "ee77160");
+    check_base_class_offset(lv, (bb60*)(cc160*), ABISELECT(48,24), "ee77160");
+    check_base_class_offset(lv, (cc160*)(dd7160*), ABISELECT(32,16), "ee77160");
+    check_base_class_offset(lv, (dd7160*), ABISELECT(16,8), "ee77160");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee77160.e");
+    test_class_info(&lv, &cd_ee77160);
+    dp->~ee77160();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee77160(Test_ee77160, "ee77160", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN7ee77160C1Ev();
+extern void _ZN7ee77160D1Ev();
+Name_Map name_map_ee77160[] = {
+  NSPAIR(_ZN7ee77160C1Ev),
+  NSPAIR(_ZN7ee77160D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc160;
+extern VTBL_ENTRY _ZTI5cc160[];
+extern  VTBL_ENTRY _ZTV5cc160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5cc160[];
+extern Class_Descriptor cd_dd7160;
+extern VTBL_ENTRY _ZTI6dd7160[];
+extern  VTBL_ENTRY _ZTV6dd7160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd7160[];
+static Base_Class bases_ee77160[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(56,28), //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_bb60,    ABISELECT(48,24), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_cc160,    ABISELECT(32,16), //bcp->offset
+    15, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd7160,    ABISELECT(16,8), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    6, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee77160[];
+extern void _ZN7ee771603fooEv();
+extern void _ZN7ee771603barEv();
+extern void ABISELECT(_ZTv0_n40_N7ee771603barEv,_ZTv0_n20_N7ee771603barEv)();
+extern void ABISELECT(_ZThn16_N7ee771603barEv,_ZThn8_N7ee771603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n48_N7ee771603fooEv,_ZTv0_n24_N7ee771603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee771603fooEv,_ZThn8_N7ee771603fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N7ee771603barEv,_ZTv0_n12_N7ee771603barEv)();
+extern void ABISELECT(_ZThn48_N7ee771603barEv,_ZThn24_N7ee771603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee771603fooEv,_ZTv0_n16_N7ee771603fooEv)();
+extern void ABISELECT(_ZThn48_N7ee771603fooEv,_ZThn24_N7ee771603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee77160[] = {
+  ABISELECT(48,24),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee77160[0]),
+  (VTBL_ENTRY)&_ZN7ee771603fooEv,
+  (VTBL_ENTRY)&_ZN7ee771603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee77160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7ee771603barEv,_ZTv0_n20_N7ee771603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7ee771603fooEv,_ZTv0_n24_N7ee771603fooEv),
+  ABISELECT(16,8),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee77160[0]),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  ABISELECT(-48,-24),
+  (VTBL_ENTRY)&(_ZTI7ee77160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee771603barEv,_ZTv0_n12_N7ee771603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee771603fooEv,_ZTv0_n16_N7ee771603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee77160[];
+extern void _ZN6dd71603barEv();
+extern void _ZN6dd71603fooEv();
+static  VTBL_ENTRY _tg__ZTV6dd7160__7ee77160[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&_ZN6dd71603barEv,
+  (VTBL_ENTRY)&_ZN6dd71603fooEv,
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__6dd7160__7ee77160[] = {
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+};
+extern void ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv)();
+extern void ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv)();
+extern void ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTV4bb60__6dd7160__7ee77160[] = {
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6dd7160[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv),
+};
+static  VTBL_ENTRY _tg__ZTV5cc160__7ee77160[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN4bb603fooEv();
+static  VTBL_ENTRY _tg__ZTV4bb60__5cc160__7ee77160[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5cc160[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN4bb603fooEv,
+};
+static  VTT_ENTRY vtt_ee77160[] = {
+  {&(_ZTV7ee77160[5]),  5,24},
+  {&(_ZTV7ee77160[13]),  13,24},
+  {&(_ZTV7ee77160[18]),  18,24},
+  {&(_ZTV7ee77160[22]),  22,24},
+  {&(_tg__ZTV6dd7160__7ee77160[4]),  4,6},
+  {&(_tg__ZTV5cc160__6dd7160__7ee77160[3]),  3,3},
+  {&(_tg__ZTV4bb60__6dd7160__7ee77160[4]),  4,6},
+  {&(_tg__ZTV5cc160__7ee77160[3]),  3,3},
+  {&(_tg__ZTV4bb60__5cc160__7ee77160[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee77160[];
+extern  VTBL_ENTRY _ZTV7ee77160[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee77160[];
+static VTBL_ENTRY alt_thunk_names111[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6dd71603fooEv,_ZTv0_n16_N6dd71603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603fooEv,_ZThn16_N6dd71603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6dd71603barEv,_ZTv0_n12_N6dd71603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N6dd71603barEv,_ZThn16_N6dd71603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee771603fooEv,_ZTv0_n16_N7ee771603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee771603fooEv,_ZThn24_N7ee771603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee771603barEv,_ZTv0_n12_N7ee771603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn48_N7ee771603barEv,_ZThn24_N7ee771603barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7ee771603fooEv,_ZTv0_n24_N7ee771603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee771603fooEv,_ZThn8_N7ee771603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7ee771603barEv,_ZTv0_n20_N7ee771603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee771603barEv,_ZThn8_N7ee771603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee77160 = {  "ee77160", // class name
+  bases_ee77160, 4,
+  &(vtc_ee77160[0]), // expected_vtbl_contents
+  &(vtt_ee77160[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI7ee77160),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee77160),24, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee77160),9, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names111,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  cc260  : bb60 {
+  int c;
+  virtual void  foo(); // _ZN5cc2603fooEv
+  ~cc260(); // tgen
+  cc260(); // tgen
+};
+//SIG(-1 cc260) C1{ BC2{ BC3{ Fi} v2 v1 Fi} v1 Fi}
+
+
+void  cc260 ::foo(){vfunc_called(this, "_ZN5cc2603fooEv");}
+cc260 ::~cc260(){ note_dtor("cc260", this);} // tgen
+cc260 ::cc260(){ note_ctor("cc260", this);} // tgen
+
+static void Test_cc260()
+{
+  extern Class_Descriptor cd_cc260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_cc260, buf);
+    cc260 *dp, &lv = *(dp=new (buf) cc260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(cc260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(cc260)");
+    check_base_class_offset(lv, (aa0*)(bb60*), ABISELECT(8,4), "cc260");
+    check_base_class_offset(lv, (bb60*), 0, "cc260");
+    check_field_offset(lv, c, ABISELECT(16,12), "cc260.c");
+    test_class_info(&lv, &cd_cc260);
+    dp->~cc260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vcc260(Test_cc260, "cc260", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN5cc260C1Ev();
+extern void _ZN5cc260D1Ev();
+Name_Map name_map_cc260[] = {
+  NSPAIR(_ZN5cc260C1Ev),
+  NSPAIR(_ZN5cc260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+static Base_Class bases_cc260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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 _ZTI5cc260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_cc260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI5cc260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+Class_Descriptor cd_cc260 = {  "cc260", // class name
+  bases_cc260, 2,
+  &(vtc_cc260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI5cc260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV5cc260),4, //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  dd0260  : cc260 {
+  int d;
+  ~dd0260(); // tgen
+  dd0260(); // tgen
+};
+//SIG(-1 dd0260) C1{ BC2{ BC3{ BC4{ Fi} v2 v1 Fi} v1 Fi} Fi}
+
+
+dd0260 ::~dd0260(){ note_dtor("dd0260", this);} // tgen
+dd0260 ::dd0260(){ note_ctor("dd0260", this);} // tgen
+
+static void Test_dd0260()
+{
+  extern Class_Descriptor cd_dd0260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,6)];
+    init_test(&cd_dd0260, buf);
+    dd0260 *dp, &lv = *(dp=new (buf) dd0260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,20), "sizeof(dd0260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd0260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(8,4), "dd0260");
+    check_base_class_offset(lv, (bb60*)(cc260*), 0, "dd0260");
+    check_base_class_offset(lv, (cc260*), 0, "dd0260");
+    check_field_offset(lv, d, ABISELECT(20,16), "dd0260.d");
+    test_class_info(&lv, &cd_dd0260);
+    dp->~dd0260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd0260(Test_dd0260, "dd0260", ABISELECT(24,20));
+
+#else // __cplusplus
+
+extern void _ZN6dd0260C1Ev();
+extern void _ZN6dd0260D1Ev();
+Name_Map name_map_dd0260[] = {
+  NSPAIR(_ZN6dd0260C1Ev),
+  NSPAIR(_ZN6dd0260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+static Base_Class bases_dd0260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc260,    0, //bcp->offset
+    0, //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 _ZTI6dd0260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_dd0260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd0260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+Class_Descriptor cd_dd0260 = {  "dd0260", // class name
+  bases_dd0260, 3,
+  &(vtc_dd0260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,20), // object size
+  NSPAIRA(_ZTI6dd0260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV6dd0260),4, //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
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee00260  : dd0260 {
+  int e;
+  ~ee00260(); // tgen
+  ee00260(); // tgen
+};
+//SIG(1 ee00260) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} Fi}
+
+
+ee00260 ::~ee00260(){ note_dtor("ee00260", this);} // tgen
+ee00260 ::ee00260(){ note_ctor("ee00260", this);} // tgen
+
+static void Test_ee00260()
+{
+  extern Class_Descriptor cd_ee00260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee00260, buf);
+    ee00260 *dp, &lv = *(dp=new (buf) ee00260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee00260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee00260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(8,4), "ee00260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), 0, "ee00260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), 0, "ee00260");
+    check_base_class_offset(lv, (dd0260*), 0, "ee00260");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee00260.e");
+    test_class_info(&lv, &cd_ee00260);
+    dp->~ee00260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee00260(Test_ee00260, "ee00260", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee00260C1Ev();
+extern void _ZN7ee00260D1Ev();
+Name_Map name_map_ee00260[] = {
+  NSPAIR(_ZN7ee00260C1Ev),
+  NSPAIR(_ZN7ee00260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee00260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc260,    0, //bcp->offset
+    0, //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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee00260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee00260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee00260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee00260[];
+extern  VTBL_ENTRY _ZTV7ee00260[];
+Class_Descriptor cd_ee00260 = {  "ee00260", // class name
+  bases_ee00260, 4,
+  &(vtc_ee00260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee00260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee00260),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee10260  : virtual dd0260 {
+  int e;
+  ~ee10260(); // tgen
+  ee10260(); // tgen
+};
+//SIG(1 ee10260) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} Fi}
+
+
+ee10260 ::~ee10260(){ note_dtor("ee10260", this);} // tgen
+ee10260 ::ee10260(){ note_ctor("ee10260", this);} // tgen
+
+static void Test_ee10260()
+{
+  extern Class_Descriptor cd_ee10260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee10260, buf);
+    ee10260 *dp, &lv = *(dp=new (buf) ee10260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee10260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee10260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(24,12), "ee10260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), ABISELECT(16,8), "ee10260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), ABISELECT(16,8), "ee10260");
+    check_base_class_offset(lv, (dd0260*), ABISELECT(16,8), "ee10260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee10260.e");
+    test_class_info(&lv, &cd_ee10260);
+    dp->~ee10260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee10260(Test_ee10260, "ee10260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee10260C1Ev();
+extern void _ZN7ee10260D1Ev();
+Name_Map name_map_ee10260[] = {
+  NSPAIR(_ZN7ee10260C1Ev),
+  NSPAIR(_ZN7ee10260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee10260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc260,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee10260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee10260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee10260[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee10260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee10260[];
+static  VTT_ENTRY vtt_ee10260[] = {
+  {&(_ZTV7ee10260[3]),  3,9},
+  {&(_ZTV7ee10260[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee10260[];
+extern  VTBL_ENTRY _ZTV7ee10260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee10260[];
+Class_Descriptor cd_ee10260 = {  "ee10260", // class name
+  bases_ee10260, 4,
+  &(vtc_ee10260[0]), // expected_vtbl_contents
+  &(vtt_ee10260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee10260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee10260),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee10260),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee20260  : dd0260 {
+  int e;
+  virtual void  foo(); // _ZN7ee202603fooEv
+  ~ee20260(); // tgen
+  ee20260(); // tgen
+};
+//SIG(1 ee20260) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 Fi}
+
+
+void  ee20260 ::foo(){vfunc_called(this, "_ZN7ee202603fooEv");}
+ee20260 ::~ee20260(){ note_dtor("ee20260", this);} // tgen
+ee20260 ::ee20260(){ note_ctor("ee20260", this);} // tgen
+
+static void Test_ee20260()
+{
+  extern Class_Descriptor cd_ee20260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee20260, buf);
+    ee20260 *dp, &lv = *(dp=new (buf) ee20260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee20260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee20260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(8,4), "ee20260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), 0, "ee20260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), 0, "ee20260");
+    check_base_class_offset(lv, (dd0260*), 0, "ee20260");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee20260.e");
+    test_class_info(&lv, &cd_ee20260);
+    dp->~ee20260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee20260(Test_ee20260, "ee20260", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee20260C1Ev();
+extern void _ZN7ee20260D1Ev();
+Name_Map name_map_ee20260[] = {
+  NSPAIR(_ZN7ee20260C1Ev),
+  NSPAIR(_ZN7ee20260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee20260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc260,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee20260[];
+extern void _ZN4bb603barEv();
+extern void _ZN7ee202603fooEv();
+static  VTBL_ENTRY vtc_ee20260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee20260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN7ee202603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee20260[];
+extern  VTBL_ENTRY _ZTV7ee20260[];
+Class_Descriptor cd_ee20260 = {  "ee20260", // class name
+  bases_ee20260, 4,
+  &(vtc_ee20260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee20260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee20260),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee30260  : virtual dd0260 {
+  int e;
+  virtual void  foo(); // _ZN7ee302603fooEv
+  ~ee30260(); // tgen
+  ee30260(); // tgen
+};
+//SIG(1 ee30260) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 Fi}
+
+
+void  ee30260 ::foo(){vfunc_called(this, "_ZN7ee302603fooEv");}
+ee30260 ::~ee30260(){ note_dtor("ee30260", this);} // tgen
+ee30260 ::ee30260(){ note_ctor("ee30260", this);} // tgen
+
+static void Test_ee30260()
+{
+  extern Class_Descriptor cd_ee30260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee30260, buf);
+    ee30260 *dp, &lv = *(dp=new (buf) ee30260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee30260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee30260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(24,12), "ee30260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), ABISELECT(16,8), "ee30260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), ABISELECT(16,8), "ee30260");
+    check_base_class_offset(lv, (dd0260*), ABISELECT(16,8), "ee30260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee30260.e");
+    test_class_info(&lv, &cd_ee30260);
+    dp->~ee30260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee30260(Test_ee30260, "ee30260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee30260C1Ev();
+extern void _ZN7ee30260D1Ev();
+Name_Map name_map_ee30260[] = {
+  NSPAIR(_ZN7ee30260C1Ev),
+  NSPAIR(_ZN7ee30260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee30260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc260,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee30260[];
+extern void _ZN7ee302603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee302603fooEv,_ZTv0_n16_N7ee302603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee302603fooEv,_ZThn8_N7ee302603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee30260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee30260[0]),
+  (VTBL_ENTRY)&_ZN7ee302603fooEv,
+  ABISELECT(-16,-8),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee30260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee302603fooEv,_ZTv0_n16_N7ee302603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee30260[];
+static  VTT_ENTRY vtt_ee30260[] = {
+  {&(_ZTV7ee30260[3]),  3,10},
+  {&(_ZTV7ee30260[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee30260[];
+extern  VTBL_ENTRY _ZTV7ee30260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee30260[];
+static VTBL_ENTRY alt_thunk_names112[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee302603fooEv,_ZTv0_n16_N7ee302603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee302603fooEv,_ZThn8_N7ee302603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee30260 = {  "ee30260", // class name
+  bases_ee30260, 4,
+  &(vtc_ee30260[0]), // expected_vtbl_contents
+  &(vtt_ee30260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee30260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee30260),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee30260),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names112,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee40260  : dd0260 {
+  int e;
+  virtual void  bar(); // _ZN7ee402603barEv
+  ~ee40260(); // tgen
+  ee40260(); // tgen
+};
+//SIG(1 ee40260) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} v2 Fi} Fi} v1 Fi}
+
+
+void  ee40260 ::bar(){vfunc_called(this, "_ZN7ee402603barEv");}
+ee40260 ::~ee40260(){ note_dtor("ee40260", this);} // tgen
+ee40260 ::ee40260(){ note_ctor("ee40260", this);} // tgen
+
+static void Test_ee40260()
+{
+  extern Class_Descriptor cd_ee40260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee40260, buf);
+    ee40260 *dp, &lv = *(dp=new (buf) ee40260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee40260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee40260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(8,4), "ee40260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), 0, "ee40260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), 0, "ee40260");
+    check_base_class_offset(lv, (dd0260*), 0, "ee40260");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee40260.e");
+    test_class_info(&lv, &cd_ee40260);
+    dp->~ee40260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee40260(Test_ee40260, "ee40260", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee40260C1Ev();
+extern void _ZN7ee40260D1Ev();
+Name_Map name_map_ee40260[] = {
+  NSPAIR(_ZN7ee40260C1Ev),
+  NSPAIR(_ZN7ee40260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee40260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc260,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee40260[];
+extern void _ZN7ee402603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee40260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee40260[0]),
+  (VTBL_ENTRY)&_ZN7ee402603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee40260[];
+extern  VTBL_ENTRY _ZTV7ee40260[];
+Class_Descriptor cd_ee40260 = {  "ee40260", // class name
+  bases_ee40260, 4,
+  &(vtc_ee40260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee40260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee40260),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee50260  : virtual dd0260 {
+  int e;
+  virtual void  bar(); // _ZN7ee502603barEv
+  ~ee50260(); // tgen
+  ee50260(); // tgen
+};
+//SIG(1 ee50260) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v1 v2 Fi} v2 Fi} Fi} v1 Fi}
+
+
+void  ee50260 ::bar(){vfunc_called(this, "_ZN7ee502603barEv");}
+ee50260 ::~ee50260(){ note_dtor("ee50260", this);} // tgen
+ee50260 ::ee50260(){ note_ctor("ee50260", this);} // tgen
+
+static void Test_ee50260()
+{
+  extern Class_Descriptor cd_ee50260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee50260, buf);
+    ee50260 *dp, &lv = *(dp=new (buf) ee50260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee50260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee50260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(24,12), "ee50260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), ABISELECT(16,8), "ee50260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), ABISELECT(16,8), "ee50260");
+    check_base_class_offset(lv, (dd0260*), ABISELECT(16,8), "ee50260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee50260.e");
+    test_class_info(&lv, &cd_ee50260);
+    dp->~ee50260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee50260(Test_ee50260, "ee50260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee50260C1Ev();
+extern void _ZN7ee50260D1Ev();
+Name_Map name_map_ee50260[] = {
+  NSPAIR(_ZN7ee50260C1Ev),
+  NSPAIR(_ZN7ee50260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee50260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc260,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee50260[];
+extern void _ZN7ee502603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee502603barEv,_ZTv0_n12_N7ee502603barEv)();
+extern void ABISELECT(_ZThn16_N7ee502603barEv,_ZThn8_N7ee502603barEv)() __attribute__((weak));
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee50260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee50260[0]),
+  (VTBL_ENTRY)&_ZN7ee502603barEv,
+  0,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee50260[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee502603barEv,_ZTv0_n12_N7ee502603barEv),
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee50260[];
+static  VTT_ENTRY vtt_ee50260[] = {
+  {&(_ZTV7ee50260[3]),  3,10},
+  {&(_ZTV7ee50260[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee50260[];
+extern  VTBL_ENTRY _ZTV7ee50260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee50260[];
+static VTBL_ENTRY alt_thunk_names113[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee502603barEv,_ZTv0_n12_N7ee502603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee502603barEv,_ZThn8_N7ee502603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee50260 = {  "ee50260", // class name
+  bases_ee50260, 4,
+  &(vtc_ee50260[0]), // expected_vtbl_contents
+  &(vtt_ee50260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee50260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee50260),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee50260),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names113,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee60260  : dd0260 {
+  int e;
+  virtual void  foo(); // _ZN7ee602603fooEv
+  virtual void  bar(); // _ZN7ee602603barEv
+  ~ee60260(); // tgen
+  ee60260(); // tgen
+};
+//SIG(1 ee60260) C1{ BC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 v2 Fi}
+
+
+void  ee60260 ::foo(){vfunc_called(this, "_ZN7ee602603fooEv");}
+void  ee60260 ::bar(){vfunc_called(this, "_ZN7ee602603barEv");}
+ee60260 ::~ee60260(){ note_dtor("ee60260", this);} // tgen
+ee60260 ::ee60260(){ note_ctor("ee60260", this);} // tgen
+
+static void Test_ee60260()
+{
+  extern Class_Descriptor cd_ee60260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_ee60260, buf);
+    ee60260 *dp, &lv = *(dp=new (buf) ee60260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(ee60260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee60260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(8,4), "ee60260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), 0, "ee60260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), 0, "ee60260");
+    check_base_class_offset(lv, (dd0260*), 0, "ee60260");
+    check_field_offset(lv, e, ABISELECT(24,20), "ee60260.e");
+    test_class_info(&lv, &cd_ee60260);
+    dp->~ee60260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee60260(Test_ee60260, "ee60260", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN7ee60260C1Ev();
+extern void _ZN7ee60260D1Ev();
+Name_Map name_map_ee60260[] = {
+  NSPAIR(_ZN7ee60260C1Ev),
+  NSPAIR(_ZN7ee60260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee60260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    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, 0},
+  {&cd_bb60,    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_cc260,    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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    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
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee60260[];
+extern void _ZN7ee602603barEv();
+extern void _ZN7ee602603fooEv();
+static  VTBL_ENTRY vtc_ee60260[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee60260[0]),
+  (VTBL_ENTRY)&_ZN7ee602603barEv,
+  (VTBL_ENTRY)&_ZN7ee602603fooEv,
+};
+extern VTBL_ENTRY _ZTI7ee60260[];
+extern  VTBL_ENTRY _ZTV7ee60260[];
+Class_Descriptor cd_ee60260 = {  "ee60260", // class name
+  bases_ee60260, 4,
+  &(vtc_ee60260[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI7ee60260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee60260),4, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  3, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee70260  : virtual dd0260 {
+  int e;
+  virtual void  foo(); // _ZN7ee702603fooEv
+  virtual void  bar(); // _ZN7ee702603barEv
+  ~ee70260(); // tgen
+  ee70260(); // tgen
+};
+//SIG(1 ee70260) C1{ VBC2{ BC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 v2 Fi}
+
+
+void  ee70260 ::foo(){vfunc_called(this, "_ZN7ee702603fooEv");}
+void  ee70260 ::bar(){vfunc_called(this, "_ZN7ee702603barEv");}
+ee70260 ::~ee70260(){ note_dtor("ee70260", this);} // tgen
+ee70260 ::ee70260(){ note_ctor("ee70260", this);} // tgen
+
+static void Test_ee70260()
+{
+  extern Class_Descriptor cd_ee70260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee70260, buf);
+    ee70260 *dp, &lv = *(dp=new (buf) ee70260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee70260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee70260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*)(dd0260*), ABISELECT(24,12), "ee70260");
+    check_base_class_offset(lv, (bb60*)(cc260*)(dd0260*), ABISELECT(16,8), "ee70260");
+    check_base_class_offset(lv, (cc260*)(dd0260*), ABISELECT(16,8), "ee70260");
+    check_base_class_offset(lv, (dd0260*), ABISELECT(16,8), "ee70260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee70260.e");
+    test_class_info(&lv, &cd_ee70260);
+    dp->~ee70260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee70260(Test_ee70260, "ee70260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee70260C1Ev();
+extern void _ZN7ee70260D1Ev();
+Name_Map name_map_ee70260[] = {
+  NSPAIR(_ZN7ee70260C1Ev),
+  NSPAIR(_ZN7ee70260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd0260;
+extern VTBL_ENTRY _ZTI6dd0260[];
+extern  VTBL_ENTRY _ZTV6dd0260[];
+static Base_Class bases_ee70260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc260,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    4, //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
+    3, //immediately_derived
+  0, 0},
+  {&cd_dd0260,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee70260[];
+extern void _ZN7ee702603fooEv();
+extern void _ZN7ee702603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee702603barEv,_ZTv0_n12_N7ee702603barEv)();
+extern void ABISELECT(_ZThn16_N7ee702603barEv,_ZThn8_N7ee702603barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N7ee702603fooEv,_ZTv0_n16_N7ee702603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee702603fooEv,_ZThn8_N7ee702603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee70260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee70260[0]),
+  (VTBL_ENTRY)&_ZN7ee702603fooEv,
+  (VTBL_ENTRY)&_ZN7ee702603barEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee70260[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee702603barEv,_ZTv0_n12_N7ee702603barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee702603fooEv,_ZTv0_n16_N7ee702603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee70260[];
+static  VTT_ENTRY vtt_ee70260[] = {
+  {&(_ZTV7ee70260[3]),  3,11},
+  {&(_ZTV7ee70260[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTI7ee70260[];
+extern  VTBL_ENTRY _ZTV7ee70260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee70260[];
+static VTBL_ENTRY alt_thunk_names114[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee702603fooEv,_ZTv0_n16_N7ee702603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee702603fooEv,_ZThn8_N7ee702603fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee702603barEv,_ZTv0_n12_N7ee702603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee702603barEv,_ZThn8_N7ee702603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee70260 = {  "ee70260", // class name
+  bases_ee70260, 4,
+  &(vtc_ee70260[0]), // expected_vtbl_contents
+  &(vtt_ee70260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee70260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee70260),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee70260),2, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names114,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  dd1260  : virtual cc260 {
+  int d;
+  ~dd1260(); // tgen
+  dd1260(); // tgen
+};
+//SIG(-1 dd1260) C1{ VBC2{ BC3{ BC4{ Fi} v2 v1 Fi} v1 Fi} Fi}
+
+
+dd1260 ::~dd1260(){ note_dtor("dd1260", this);} // tgen
+dd1260 ::dd1260(){ note_ctor("dd1260", this);} // tgen
+
+static void Test_dd1260()
+{
+  extern Class_Descriptor cd_dd1260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,7)];
+    init_test(&cd_dd1260, buf);
+    dd1260 *dp, &lv = *(dp=new (buf) dd1260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,24), "sizeof(dd1260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(dd1260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(24,12), "dd1260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(16,8), "dd1260");
+    check_base_class_offset(lv, (cc260*), ABISELECT(16,8), "dd1260");
+    check_field_offset(lv, d, ABISELECT(8,4), "dd1260.d");
+    test_class_info(&lv, &cd_dd1260);
+    dp->~dd1260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vdd1260(Test_dd1260, "dd1260", ABISELECT(40,24));
+
+#else // __cplusplus
+
+extern void _ZN6dd1260C1Ev();
+extern void _ZN6dd1260D1Ev();
+Name_Map name_map_dd1260[] = {
+  NSPAIR(_ZN6dd1260C1Ev),
+  NSPAIR(_ZN6dd1260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+static Base_Class bases_dd1260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,12), //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_bb60,    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_cc260,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_dd1260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV6dd1260[];
+static  VTT_ENTRY vtt_dd1260[] = {
+  {&(_ZTV6dd1260[3]),  3,9},
+  {&(_ZTV6dd1260[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+Class_Descriptor cd_dd1260 = {  "dd1260", // class name
+  bases_dd1260, 3,
+  &(vtc_dd1260[0]), // expected_vtbl_contents
+  &(vtt_dd1260[0]), // expected_vtt_contents
+  ABISELECT(40,24), // object size
+  NSPAIRA(_ZTI6dd1260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV6dd1260),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6dd1260),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee01260  : dd1260 {
+  int e;
+  ~ee01260(); // tgen
+  ee01260(); // tgen
+};
+//SIG(1 ee01260) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} Fi}
+
+
+ee01260 ::~ee01260(){ note_dtor("ee01260", this);} // tgen
+ee01260 ::ee01260(){ note_ctor("ee01260", this);} // tgen
+
+static void Test_ee01260()
+{
+  extern Class_Descriptor cd_ee01260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee01260, buf);
+    ee01260 *dp, &lv = *(dp=new (buf) ee01260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee01260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee01260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(24,16), "ee01260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(16,12), "ee01260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(16,12), "ee01260");
+    check_base_class_offset(lv, (dd1260*), 0, "ee01260");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee01260.e");
+    test_class_info(&lv, &cd_ee01260);
+    dp->~ee01260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee01260(Test_ee01260, "ee01260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee01260C1Ev();
+extern void _ZN7ee01260D1Ev();
+Name_Map name_map_ee01260[] = {
+  NSPAIR(_ZN7ee01260C1Ev),
+  NSPAIR(_ZN7ee01260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee01260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //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_cc260,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee01260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee01260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee01260[0]),
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee01260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee01260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee01260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee01260[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee01260[] = {
+  {&(_ZTV7ee01260[3]),  3,9},
+  {&(_tg__ZTV6dd1260__7ee01260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee01260[4]),  4,6},
+  {&(_ZTV7ee01260[7]),  7,9},
+};
+extern VTBL_ENTRY _ZTI7ee01260[];
+extern  VTBL_ENTRY _ZTV7ee01260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee01260[];
+Class_Descriptor cd_ee01260 = {  "ee01260", // class name
+  bases_ee01260, 4,
+  &(vtc_ee01260[0]), // expected_vtbl_contents
+  &(vtt_ee01260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee01260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee01260),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee01260),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee11260  : virtual dd1260 {
+  int e;
+  ~ee11260(); // tgen
+  ee11260(); // tgen
+};
+//SIG(1 ee11260) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} Fi}
+
+
+ee11260 ::~ee11260(){ note_dtor("ee11260", this);} // tgen
+ee11260 ::ee11260(){ note_ctor("ee11260", this);} // tgen
+
+static void Test_ee11260()
+{
+  extern Class_Descriptor cd_ee11260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee11260, buf);
+    ee11260 *dp, &lv = *(dp=new (buf) ee11260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee11260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee11260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(40,20), "ee11260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(32,16), "ee11260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(32,16), "ee11260");
+    check_base_class_offset(lv, (dd1260*), ABISELECT(16,8), "ee11260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee11260.e");
+    test_class_info(&lv, &cd_ee11260);
+    dp->~ee11260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee11260(Test_ee11260, "ee11260", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee11260C1Ev();
+extern void _ZN7ee11260D1Ev();
+Name_Map name_map_ee11260[] = {
+  NSPAIR(_ZN7ee11260C1Ev),
+  NSPAIR(_ZN7ee11260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee11260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //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_cc260,    ABISELECT(32,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee11260[];
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee11260[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee11260[0]),
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee11260[0]),
+  0,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee11260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee11260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee11260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee11260[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee11260[] = {
+  {&(_ZTV7ee11260[4]),  4,13},
+  {&(_ZTV7ee11260[7]),  7,13},
+  {&(_ZTV7ee11260[11]),  11,13},
+  {&(_tg__ZTV6dd1260__7ee11260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee11260[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee11260[];
+extern  VTBL_ENTRY _ZTV7ee11260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee11260[];
+Class_Descriptor cd_ee11260 = {  "ee11260", // class name
+  bases_ee11260, 4,
+  &(vtc_ee11260[0]), // expected_vtbl_contents
+  &(vtt_ee11260[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee11260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee11260),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee11260),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee21260  : dd1260 {
+  int e;
+  virtual void  foo(); // _ZN7ee212603fooEv
+  ~ee21260(); // tgen
+  ee21260(); // tgen
+};
+//SIG(1 ee21260) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 Fi}
+
+
+void  ee21260 ::foo(){vfunc_called(this, "_ZN7ee212603fooEv");}
+ee21260 ::~ee21260(){ note_dtor("ee21260", this);} // tgen
+ee21260 ::ee21260(){ note_ctor("ee21260", this);} // tgen
+
+static void Test_ee21260()
+{
+  extern Class_Descriptor cd_ee21260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee21260, buf);
+    ee21260 *dp, &lv = *(dp=new (buf) ee21260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee21260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee21260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(24,16), "ee21260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(16,12), "ee21260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(16,12), "ee21260");
+    check_base_class_offset(lv, (dd1260*), 0, "ee21260");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee21260.e");
+    test_class_info(&lv, &cd_ee21260);
+    dp->~ee21260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee21260(Test_ee21260, "ee21260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee21260C1Ev();
+extern void _ZN7ee21260D1Ev();
+Name_Map name_map_ee21260[] = {
+  NSPAIR(_ZN7ee21260C1Ev),
+  NSPAIR(_ZN7ee21260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee21260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //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_cc260,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee21260[];
+extern void _ZN7ee212603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee212603fooEv,_ZTv0_n16_N7ee212603fooEv)();
+extern void ABISELECT(_ZThn16_N7ee212603fooEv,_ZThn12_N7ee212603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee21260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee21260[0]),
+  (VTBL_ENTRY)&_ZN7ee212603fooEv,
+  ABISELECT(-16,-12),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee21260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee212603fooEv,_ZTv0_n16_N7ee212603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee21260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee21260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee21260[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee21260[] = {
+  {&(_ZTV7ee21260[3]),  3,10},
+  {&(_tg__ZTV6dd1260__7ee21260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee21260[4]),  4,6},
+  {&(_ZTV7ee21260[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee21260[];
+extern  VTBL_ENTRY _ZTV7ee21260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee21260[];
+static VTBL_ENTRY alt_thunk_names115[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee212603fooEv,_ZTv0_n16_N7ee212603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee212603fooEv,_ZThn12_N7ee212603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee21260 = {  "ee21260", // class name
+  bases_ee21260, 4,
+  &(vtc_ee21260[0]), // expected_vtbl_contents
+  &(vtt_ee21260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee21260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee21260),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee21260),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names115,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee31260  : virtual dd1260 {
+  int e;
+  virtual void  foo(); // _ZN7ee312603fooEv
+  ~ee31260(); // tgen
+  ee31260(); // tgen
+};
+//SIG(1 ee31260) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v2 v1 Fi} v1 Fi} Fi} v1 Fi}
+
+
+void  ee31260 ::foo(){vfunc_called(this, "_ZN7ee312603fooEv");}
+ee31260 ::~ee31260(){ note_dtor("ee31260", this);} // tgen
+ee31260 ::ee31260(){ note_ctor("ee31260", this);} // tgen
+
+static void Test_ee31260()
+{
+  extern Class_Descriptor cd_ee31260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee31260, buf);
+    ee31260 *dp, &lv = *(dp=new (buf) ee31260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee31260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee31260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(40,20), "ee31260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(32,16), "ee31260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(32,16), "ee31260");
+    check_base_class_offset(lv, (dd1260*), ABISELECT(16,8), "ee31260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee31260.e");
+    test_class_info(&lv, &cd_ee31260);
+    dp->~ee31260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee31260(Test_ee31260, "ee31260", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee31260C1Ev();
+extern void _ZN7ee31260D1Ev();
+Name_Map name_map_ee31260[] = {
+  NSPAIR(_ZN7ee31260C1Ev),
+  NSPAIR(_ZN7ee31260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee31260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //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_cc260,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee31260[];
+extern void _ZN7ee312603fooEv();
+extern void _ZN4bb603barEv();
+extern void ABISELECT(_ZTv0_n32_N7ee312603fooEv,_ZTv0_n16_N7ee312603fooEv)();
+extern void ABISELECT(_ZThn32_N7ee312603fooEv,_ZThn16_N7ee312603fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_ee31260[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee31260[0]),
+  (VTBL_ENTRY)&_ZN7ee312603fooEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee31260[0]),
+  ABISELECT(-32,-16),
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee31260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7ee312603fooEv,_ZTv0_n16_N7ee312603fooEv),
+};
+extern VTBL_ENTRY _ZTV7ee31260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee31260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee31260[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee31260[] = {
+  {&(_ZTV7ee31260[4]),  4,14},
+  {&(_ZTV7ee31260[8]),  8,14},
+  {&(_ZTV7ee31260[12]),  12,14},
+  {&(_tg__ZTV6dd1260__7ee31260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee31260[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee31260[];
+extern  VTBL_ENTRY _ZTV7ee31260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee31260[];
+static VTBL_ENTRY alt_thunk_names116[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7ee312603fooEv,_ZTv0_n16_N7ee312603fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee312603fooEv,_ZThn16_N7ee312603fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee31260 = {  "ee31260", // class name
+  bases_ee31260, 4,
+  &(vtc_ee31260[0]), // expected_vtbl_contents
+  &(vtt_ee31260[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI7ee31260),ABISELECT(40,24), //typeinfo_var
+  NSPAIRA(_ZTV7ee31260),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee31260),5, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names116,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee41260  : dd1260 {
+  int e;
+  virtual void  bar(); // _ZN7ee412603barEv
+  ~ee41260(); // tgen
+  ee41260(); // tgen
+};
+//SIG(1 ee41260) C1{ BC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} v2 Fi} Fi} v1 Fi}
+
+
+void  ee41260 ::bar(){vfunc_called(this, "_ZN7ee412603barEv");}
+ee41260 ::~ee41260(){ note_dtor("ee41260", this);} // tgen
+ee41260 ::ee41260(){ note_ctor("ee41260", this);} // tgen
+
+static void Test_ee41260()
+{
+  extern Class_Descriptor cd_ee41260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_ee41260, buf);
+    ee41260 *dp, &lv = *(dp=new (buf) ee41260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(ee41260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee41260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(24,16), "ee41260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(16,12), "ee41260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(16,12), "ee41260");
+    check_base_class_offset(lv, (dd1260*), 0, "ee41260");
+    check_field_offset(lv, e, ABISELECT(12,8), "ee41260.e");
+    test_class_info(&lv, &cd_ee41260);
+    dp->~ee41260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee41260(Test_ee41260, "ee41260", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN7ee41260C1Ev();
+extern void _ZN7ee41260D1Ev();
+Name_Map name_map_ee41260[] = {
+  NSPAIR(_ZN7ee41260C1Ev),
+  NSPAIR(_ZN7ee41260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee41260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(24,16), //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_bb60,    ABISELECT(16,12), //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_cc260,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee41260[];
+extern void _ZN7ee412603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee412603barEv,_ZTv0_n12_N7ee412603barEv)();
+extern void ABISELECT(_ZThn16_N7ee412603barEv,_ZThn12_N7ee412603barEv)() __attribute__((weak));
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee41260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee41260[0]),
+  (VTBL_ENTRY)&_ZN7ee412603barEv,
+  0,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7ee41260[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee412603barEv,_ZTv0_n12_N7ee412603barEv),
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee41260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee41260[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee41260[] = {
+  0,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee41260[] = {
+  {&(_ZTV7ee41260[3]),  3,10},
+  {&(_tg__ZTV6dd1260__7ee41260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee41260[4]),  4,6},
+  {&(_ZTV7ee41260[8]),  8,10},
+};
+extern VTBL_ENTRY _ZTI7ee41260[];
+extern  VTBL_ENTRY _ZTV7ee41260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee41260[];
+static VTBL_ENTRY alt_thunk_names117[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee412603barEv,_ZTv0_n12_N7ee412603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N7ee412603barEv,_ZThn12_N7ee412603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee41260 = {  "ee41260", // class name
+  bases_ee41260, 4,
+  &(vtc_ee41260[0]), // expected_vtbl_contents
+  &(vtt_ee41260[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI7ee41260),ABISELECT(24,12), //typeinfo_var
+  NSPAIRA(_ZTV7ee41260),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7ee41260),4, //virtual table table var
+  3, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names117,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  ee51260  : virtual dd1260 {
+  int e;
+  virtual void  bar(); // _ZN7ee512603barEv
+  ~ee51260(); // tgen
+  ee51260(); // tgen
+};
+//SIG(1 ee51260) C1{ VBC2{ VBC3{ BC4{ BC5{ Fi} v1 v2 Fi} v2 Fi} Fi} v1 Fi}
+
+
+void  ee51260 ::bar(){vfunc_called(this, "_ZN7ee512603barEv");}
+ee51260 ::~ee51260(){ note_dtor("ee51260", this);} // tgen
+ee51260 ::ee51260(){ note_ctor("ee51260", this);} // tgen
+
+static void Test_ee51260()
+{
+  extern Class_Descriptor cd_ee51260;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_ee51260, buf);
+    ee51260 *dp, &lv = *(dp=new (buf) ee51260());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(ee51260)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(ee51260)");
+    check_base_class_offset(lv, (aa0*)(bb60*)(cc260*), ABISELECT(40,20), "ee51260");
+    check_base_class_offset(lv, (bb60*)(cc260*), ABISELECT(32,16), "ee51260");
+    check_base_class_offset(lv, (cc260*)(dd1260*), ABISELECT(32,16), "ee51260");
+    check_base_class_offset(lv, (dd1260*), ABISELECT(16,8), "ee51260");
+    check_field_offset(lv, e, ABISELECT(8,4), "ee51260.e");
+    test_class_info(&lv, &cd_ee51260);
+    dp->~ee51260();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vee51260(Test_ee51260, "ee51260", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN7ee51260C1Ev();
+extern void _ZN7ee51260D1Ev();
+Name_Map name_map_ee51260[] = {
+  NSPAIR(_ZN7ee51260C1Ev),
+  NSPAIR(_ZN7ee51260D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_aa0;
+extern VTBL_ENTRY _ZTI3aa0[];
+extern Class_Descriptor cd_bb60;
+extern VTBL_ENTRY _ZTI4bb60[];
+extern  VTBL_ENTRY _ZTV4bb60[];
+extern Class_Descriptor cd_cc260;
+extern VTBL_ENTRY _ZTI5cc260[];
+extern  VTBL_ENTRY _ZTV5cc260[];
+extern Class_Descriptor cd_dd1260;
+extern VTBL_ENTRY _ZTI6dd1260[];
+extern  VTBL_ENTRY _ZTV6dd1260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6dd1260[];
+static Base_Class bases_ee51260[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_aa0,    ABISELECT(40,20), //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_bb60,    ABISELECT(32,16), //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_cc260,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    3, //immediately_derived
+  0, 1},
+  {&cd_dd1260,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    4, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7ee51260[];
+extern void _ZN7ee512603barEv();
+extern void ABISELECT(_ZTv0_n24_N7ee512603barEv,_ZTv0_n12_N7ee512603barEv)();
+extern void ABISELECT(_ZThn32_N7ee512603barEv,_ZThn16_N7ee512603barEv)() __attribute__((weak));
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY vtc_ee51260[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7ee51260[0]),
+  (VTBL_ENTRY)&_ZN7ee512603barEv,
+  ABISELECT(16,8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7ee51260[0]),
+  0,
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7ee51260[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7ee512603barEv,_ZTv0_n12_N7ee512603barEv),
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+extern VTBL_ENTRY _ZTV7ee51260[];
+static  VTBL_ENTRY _tg__ZTV6dd1260__7ee51260[] = {
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+};
+extern void _ZN4bb603barEv();
+extern void _ZN5cc2603fooEv();
+static  VTBL_ENTRY _tg__ZTV5cc260__6dd1260__7ee51260[] = {
+  0,
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6dd1260[0]),
+  (VTBL_ENTRY)&_ZN4bb603barEv,
+  (VTBL_ENTRY)&_ZN5cc2603fooEv,
+};
+static  VTT_ENTRY vtt_ee51260[] = {
+  {&(_ZTV7ee51260[4]),  4,14},
+  {&(_ZTV7ee51260[8]),  8,14},
+  {&(_ZTV7ee51260[12]),  12,14},
+  {&(_tg__ZTV6dd1260__7ee51260[3]),  3,3},
+  {&(_tg__ZTV5cc260__6dd1260__7ee51260[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTI7ee51260[];
+extern  VTBL_ENTRY _ZTV7ee51260[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7ee51260[];
+static VTBL_ENTRY alt_thunk_names118[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7ee512603barEv,_ZTv0_n12_N7ee512603barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N7ee512603barEv,_ZThn16_N7ee512603barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_ee51260 = {  "ee51260", // class name
+  bases_ee51260, 4,
+  &(vtc_ee51260[0]), // expected_vtbl_contents
+  &(vtt_ee51260[0]), // expected_vtt_contents

[... 280626 lines stripped ...]




More information about the llvm-commits mailing list