[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_vf50.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf50.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf50.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf50.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,225218 @@
+// 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  A0  {
+  int fa;
+};
+//SIG(-1 A0) C1{ Fi}
+
+
+
+static void Test_A0()
+{
+  {
+    init_simple_test("A0");
+    A0 lv;
+    check2(sizeof(lv), 4, "sizeof(A0)");
+    check2(__alignof__(lv), 4, "__alignof__(A0)");
+    check_field_offset(lv, fa, 0, "A0.fa");
+  }
+}
+static Arrange_To_Call_Me vA0(Test_A0, "A0", 4);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI2A0[];
+VTBL_ENTRY *P__ZTI2A0 = _ZTI2A0; 
+Class_Descriptor cd_A0 = {  "A0", // class name
+  0,0,//no base classes
+  0, // no vftv
+  0, //no vtt
+  4, // object size
+  NSPAIRA(_ZTI2A0),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  A1  {
+  int fa;
+  virtual void  foo(); // _ZN2A13fooEv
+  ~A1(); // tgen
+  A1(); // tgen
+};
+//SIG(-1 A1) C1{ v1 Fi}
+
+
+void  A1 ::foo(){vfunc_called(this, "_ZN2A13fooEv");}
+A1 ::~A1(){ note_dtor("A1", this);} // tgen
+A1 ::A1(){ note_ctor("A1", this);} // tgen
+
+static void Test_A1()
+{
+  extern Class_Descriptor cd_A1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_A1, buf);
+    A1 *dp, &lv = *(dp=new (buf) A1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(A1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(A1)");
+    check_field_offset(lv, fa, ABISELECT(8,4), "A1.fa");
+    test_class_info(&lv, &cd_A1);
+    dp->~A1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vA1(Test_A1, "A1", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN2A1C1Ev();
+extern void _ZN2A1D1Ev();
+Name_Map name_map_A1[] = {
+  NSPAIR(_ZN2A1C1Ev),
+  NSPAIR(_ZN2A1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI2A1[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_A1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2A1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+Class_Descriptor cd_A1 = {  "A1", // class name
+  0,0,//no base classes
+  &(vtc_A1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI2A1),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV2A1),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  B0  {
+  int fb;
+};
+//SIG(-1 B0) C1{ Fi}
+
+
+
+static void Test_B0()
+{
+  {
+    init_simple_test("B0");
+    B0 lv;
+    check2(sizeof(lv), 4, "sizeof(B0)");
+    check2(__alignof__(lv), 4, "__alignof__(B0)");
+    check_field_offset(lv, fb, 0, "B0.fb");
+  }
+}
+static Arrange_To_Call_Me vB0(Test_B0, "B0", 4);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI2B0[];
+VTBL_ENTRY *P__ZTI2B0 = _ZTI2B0; 
+Class_Descriptor cd_B0 = {  "B0", // class name
+  0,0,//no base classes
+  0, // no vftv
+  0, //no vtt
+  4, // object size
+  NSPAIRA(_ZTI2B0),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  B1  {
+  int fb;
+  virtual void  foo(); // _ZN2B13fooEv
+  ~B1(); // tgen
+  B1(); // tgen
+};
+//SIG(-1 B1) C1{ v1 Fi}
+
+
+void  B1 ::foo(){vfunc_called(this, "_ZN2B13fooEv");}
+B1 ::~B1(){ note_dtor("B1", this);} // tgen
+B1 ::B1(){ note_ctor("B1", this);} // tgen
+
+static void Test_B1()
+{
+  extern Class_Descriptor cd_B1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_B1, buf);
+    B1 *dp, &lv = *(dp=new (buf) B1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(B1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(B1)");
+    check_field_offset(lv, fb, ABISELECT(8,4), "B1.fb");
+    test_class_info(&lv, &cd_B1);
+    dp->~B1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vB1(Test_B1, "B1", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN2B1C1Ev();
+extern void _ZN2B1D1Ev();
+Name_Map name_map_B1[] = {
+  NSPAIR(_ZN2B1C1Ev),
+  NSPAIR(_ZN2B1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI2B1[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_B1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2B1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+Class_Descriptor cd_B1 = {  "B1", // class name
+  0,0,//no base classes
+  &(vtc_B1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI2B1),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV2B1),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  D0  {
+  int fd;
+};
+//SIG(1 D0) C1{ Fi}
+
+
+
+static void Test_D0()
+{
+  {
+    init_simple_test("D0");
+    D0 lv;
+    check2(sizeof(lv), 4, "sizeof(D0)");
+    check2(__alignof__(lv), 4, "__alignof__(D0)");
+    check_field_offset(lv, fd, 0, "D0.fd");
+  }
+}
+static Arrange_To_Call_Me vD0(Test_D0, "D0", 4);
+
+#else // __cplusplus
+
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  D1  {
+  int fd;
+  virtual void  foo(); // _ZN2D13fooEv
+  ~D1(); // tgen
+  D1(); // tgen
+};
+//SIG(-1 D1) C1{ v1 Fi}
+
+
+void  D1 ::foo(){vfunc_called(this, "_ZN2D13fooEv");}
+D1 ::~D1(){ note_dtor("D1", this);} // tgen
+D1 ::D1(){ note_ctor("D1", this);} // tgen
+
+static void Test_D1()
+{
+  extern Class_Descriptor cd_D1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_D1, buf);
+    D1 *dp, &lv = *(dp=new (buf) D1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(D1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(D1)");
+    check_field_offset(lv, fd, ABISELECT(8,4), "D1.fd");
+    test_class_info(&lv, &cd_D1);
+    dp->~D1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vD1(Test_D1, "D1", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN2D1C1Ev();
+extern void _ZN2D1D1Ev();
+Name_Map name_map_D1[] = {
+  NSPAIR(_ZN2D1C1Ev),
+  NSPAIR(_ZN2D1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI2D1[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_D1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2D1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+Class_Descriptor cd_D1 = {  "D1", // class name
+  0,0,//no base classes
+  &(vtc_D1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI2D1),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV2D1),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  F0  {
+  int ff;
+};
+//SIG(-1 F0) C1{ Fi}
+
+
+
+static void Test_F0()
+{
+  {
+    init_simple_test("F0");
+    F0 lv;
+    check2(sizeof(lv), 4, "sizeof(F0)");
+    check2(__alignof__(lv), 4, "__alignof__(F0)");
+    check_field_offset(lv, ff, 0, "F0.ff");
+  }
+}
+static Arrange_To_Call_Me vF0(Test_F0, "F0", 4);
+
+#else // __cplusplus
+
+extern VTBL_ENTRY _ZTI2F0[];
+VTBL_ENTRY *P__ZTI2F0 = _ZTI2F0; 
+Class_Descriptor cd_F0 = {  "F0", // class name
+  0,0,//no base classes
+  0, // no vftv
+  0, //no vtt
+  4, // object size
+  NSPAIRA(_ZTI2F0),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  F1  {
+  int ff;
+  virtual void  foo(); // _ZN2F13fooEv
+  ~F1(); // tgen
+  F1(); // tgen
+};
+//SIG(-1 F1) C1{ v1 Fi}
+
+
+void  F1 ::foo(){vfunc_called(this, "_ZN2F13fooEv");}
+F1 ::~F1(){ note_dtor("F1", this);} // tgen
+F1 ::F1(){ note_ctor("F1", this);} // tgen
+
+static void Test_F1()
+{
+  extern Class_Descriptor cd_F1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd_F1, buf);
+    F1 *dp, &lv = *(dp=new (buf) F1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(F1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(F1)");
+    check_field_offset(lv, ff, ABISELECT(8,4), "F1.ff");
+    test_class_info(&lv, &cd_F1);
+    dp->~F1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vF1(Test_F1, "F1", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN2F1C1Ev();
+extern void _ZN2F1D1Ev();
+Name_Map name_map_F1[] = {
+  NSPAIR(_ZN2F1C1Ev),
+  NSPAIR(_ZN2F1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTI2F1[];
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_F1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2F1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+Class_Descriptor cd_F1 = {  "F1", // class name
+  0,0,//no base classes
+  &(vtc_F1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTI2F1),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTV2F1),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  C0  : A0 , B0 {
+  int fc;
+};
+//SIG(-1 C0) C1{ BC2{ Fi} BC3{ Fi} Fi}
+
+
+
+static void Test_C0()
+{
+  extern Class_Descriptor cd_C0;
+  void *lvp;
+  {
+    int buf[4];
+    init_test(&cd_C0, buf);
+    C0 &lv = *(new (buf) C0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), 12, "sizeof(C0)");
+    check2(__alignof__(lv), 4, "__alignof__(C0)");
+    check_base_class_offset(lv, (A0*), 0, "C0");
+    check_base_class_offset(lv, (B0*), 4, "C0");
+    check_field_offset(lv, fc, 8, "C0.fc");
+    test_class_info(&lv, &cd_C0);
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC0(Test_C0, "C0", 12);
+
+#else // __cplusplus
+
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    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 _ZTI2C0[];
+Class_Descriptor cd_C0 = {  "C0", // class name
+  bases_C0, 2,
+  0, // no vftv
+  0, //no vtt
+  12, // object size
+  NSPAIRA(_ZTI2C0),ABISELECT(56,32), //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  C1  : A1 , B0 {
+  int fc;
+  ~C1(); // tgen
+  C1(); // tgen
+};
+//SIG(-1 C1) C1{ BC2{ v1 Fi} BC3{ Fi} Fi}
+
+
+C1 ::~C1(){ note_dtor("C1", this);} // tgen
+C1 ::C1(){ note_ctor("C1", this);} // tgen
+
+static void Test_C1()
+{
+  extern Class_Descriptor cd_C1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C1, buf);
+    C1 *dp, &lv = *(dp=new (buf) C1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C1)");
+    check_base_class_offset(lv, (A1*), 0, "C1");
+    check_base_class_offset(lv, (B0*), ABISELECT(12,8), "C1");
+    check_field_offset(lv, fc, ABISELECT(16,12), "C1.fc");
+    test_class_info(&lv, &cd_C1);
+    dp->~C1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC1(Test_C1, "C1", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C1C1Ev();
+extern void _ZN2C1D1Ev();
+Name_Map name_map_C1[] = {
+  NSPAIR(_ZN2C1C1Ev),
+  NSPAIR(_ZN2C1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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},
+  {&cd_B0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI2C1[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_C1[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2C1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+Class_Descriptor cd_C1 = {  "C1", // class name
+  bases_C1, 2,
+  &(vtc_C1[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C1),3, //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  C2  : virtual A0 , B0 {
+  int fc;
+  ~C2(); // tgen
+  C2(); // tgen
+};
+//SIG(-1 C2) C1{ VBC2{ Fi} BC3{ Fi} Fi}
+
+
+C2 ::~C2(){ note_dtor("C2", this);} // tgen
+C2 ::C2(){ note_ctor("C2", this);} // tgen
+
+static void Test_C2()
+{
+  extern Class_Descriptor cd_C2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C2, buf);
+    C2 *dp, &lv = *(dp=new (buf) C2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C2)");
+    check_base_class_offset(lv, (A0*), ABISELECT(16,12), "C2");
+    check_base_class_offset(lv, (B0*), ABISELECT(8,4), "C2");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C2.fc");
+    test_class_info(&lv, &cd_C2);
+    dp->~C2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC2(Test_C2, "C2", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C2C1Ev();
+extern void _ZN2C2D1Ev();
+Name_Map name_map_C2[] = {
+  NSPAIR(_ZN2C2C1Ev),
+  NSPAIR(_ZN2C2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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 _ZTI2C2[];
+static  VTBL_ENTRY vtc_C2[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+extern VTBL_ENTRY _ZTV2C2[];
+static  VTT_ENTRY vtt_C2[] = {
+  {&(_ZTV2C2[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+Class_Descriptor cd_C2 = {  "C2", // class name
+  bases_C2, 2,
+  &(vtc_C2[0]), // expected_vtbl_contents
+  &(vtt_C2[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C2),3, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C2),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C3  : virtual A1 , B0 {
+  int fc;
+  ~C3(); // tgen
+  C3(); // tgen
+};
+//SIG(-1 C3) C1{ VBC2{ v1 Fi} BC3{ Fi} Fi}
+
+
+C3 ::~C3(){ note_dtor("C3", this);} // tgen
+C3 ::C3(){ note_ctor("C3", this);} // tgen
+
+static void Test_C3()
+{
+  extern Class_Descriptor cd_C3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C3, buf);
+    C3 *dp, &lv = *(dp=new (buf) C3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C3)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,12), "C3");
+    check_base_class_offset(lv, (B0*), ABISELECT(8,4), "C3");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C3.fc");
+    test_class_info(&lv, &cd_C3);
+    dp->~C3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC3(Test_C3, "C3", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN2C3C1Ev();
+extern void _ZN2C3D1Ev();
+Name_Map name_map_C3[] = {
+  NSPAIR(_ZN2C3C1Ev),
+  NSPAIR(_ZN2C3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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 _ZTI2C3[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_C3[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV2C3[];
+static  VTT_ENTRY vtt_C3[] = {
+  {&(_ZTV2C3[3]),  3,7},
+  {&(_ZTV2C3[6]),  6,7},
+};
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+Class_Descriptor cd_C3 = {  "C3", // class name
+  bases_C3, 2,
+  &(vtc_C3[0]), // expected_vtbl_contents
+  &(vtt_C3[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI2C3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C3),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C3),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  C4  : A0 , B1 {
+  int fc;
+  ~C4(); // tgen
+  C4(); // tgen
+};
+//SIG(-1 C4) C1{ BC2{ Fi} BC3{ v1 Fi} Fi}
+
+
+C4 ::~C4(){ note_dtor("C4", this);} // tgen
+C4 ::C4(){ note_ctor("C4", this);} // tgen
+
+static void Test_C4()
+{
+  extern Class_Descriptor cd_C4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C4, buf);
+    C4 *dp, &lv = *(dp=new (buf) C4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C4)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C4");
+    check_base_class_offset(lv, (B1*), 0, "C4");
+    check_field_offset(lv, fc, ABISELECT(16,12), "C4.fc");
+    test_class_info(&lv, &cd_C4);
+    dp->~C4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC4(Test_C4, "C4", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C4C1Ev();
+extern void _ZN2C4D1Ev();
+Name_Map name_map_C4[] = {
+  NSPAIR(_ZN2C4C1Ev),
+  NSPAIR(_ZN2C4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B1,    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 _ZTI2C4[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C4[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2C4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+Class_Descriptor cd_C4 = {  "C4", // class name
+  bases_C4, 2,
+  &(vtc_C4[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C4),3, //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  C5  : A1 , B1 {
+  int fc;
+  ~C5(); // tgen
+  C5(); // tgen
+};
+//SIG(-1 C5) C1{ BC2{ v1 Fi} BC3{ v2 Fi} Fi}
+
+
+C5 ::~C5(){ note_dtor("C5", this);} // tgen
+C5 ::C5(){ note_ctor("C5", this);} // tgen
+
+static void Test_C5()
+{
+  extern Class_Descriptor cd_C5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C5, buf);
+    C5 *dp, &lv = *(dp=new (buf) C5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C5)");
+    check_base_class_offset(lv, (A1*), 0, "C5");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,8), "C5");
+    check_field_offset(lv, fc, ABISELECT(28,16), "C5.fc");
+    test_class_info(&lv, &cd_C5);
+    dp->~C5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC5(Test_C5, "C5", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN2C5C1Ev();
+extern void _ZN2C5D1Ev();
+Name_Map name_map_C5[] = {
+  NSPAIR(_ZN2C5C1Ev),
+  NSPAIR(_ZN2C5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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},
+  {&cd_B1,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI2C5[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C5[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI2C5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI2C5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+Class_Descriptor cd_C5 = {  "C5", // class name
+  bases_C5, 2,
+  &(vtc_C5[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI2C5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C5),6, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  2, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C6  : virtual A0 , B1 {
+  int fc;
+  ~C6(); // tgen
+  C6(); // tgen
+};
+//SIG(-1 C6) C1{ VBC2{ Fi} BC3{ v1 Fi} Fi}
+
+
+C6 ::~C6(){ note_dtor("C6", this);} // tgen
+C6 ::C6(){ note_ctor("C6", this);} // tgen
+
+static void Test_C6()
+{
+  extern Class_Descriptor cd_C6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C6, buf);
+    C6 *dp, &lv = *(dp=new (buf) C6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C6)");
+    check_base_class_offset(lv, (A0*), ABISELECT(16,12), "C6");
+    check_base_class_offset(lv, (B1*), 0, "C6");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C6.fc");
+    test_class_info(&lv, &cd_C6);
+    dp->~C6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC6(Test_C6, "C6", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C6C1Ev();
+extern void _ZN2C6D1Ev();
+Name_Map name_map_C6[] = {
+  NSPAIR(_ZN2C6C1Ev),
+  NSPAIR(_ZN2C6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    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 _ZTI2C6[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C6[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV2C6[];
+static  VTT_ENTRY vtt_C6[] = {
+  {&(_ZTV2C6[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+Class_Descriptor cd_C6 = {  "C6", // class name
+  bases_C6, 2,
+  &(vtc_C6[0]), // expected_vtbl_contents
+  &(vtt_C6[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C6),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C6),1, //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  C7  : virtual A1 , B1 {
+  int fc;
+  ~C7(); // tgen
+  C7(); // tgen
+};
+//SIG(-1 C7) C1{ VBC2{ v1 Fi} BC3{ v2 Fi} Fi}
+
+
+C7 ::~C7(){ note_dtor("C7", this);} // tgen
+C7 ::C7(){ note_ctor("C7", this);} // tgen
+
+static void Test_C7()
+{
+  extern Class_Descriptor cd_C7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C7, buf);
+    C7 *dp, &lv = *(dp=new (buf) C7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C7)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,12), "C7");
+    check_base_class_offset(lv, (B1*), 0, "C7");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C7.fc");
+    test_class_info(&lv, &cd_C7);
+    dp->~C7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC7(Test_C7, "C7", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN2C7C1Ev();
+extern void _ZN2C7D1Ev();
+Name_Map name_map_C7[] = {
+  NSPAIR(_ZN2C7C1Ev),
+  NSPAIR(_ZN2C7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    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 _ZTI2C7[];
+extern void _ZN2B13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_C7[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV2C7[];
+static  VTT_ENTRY vtt_C7[] = {
+  {&(_ZTV2C7[3]),  3,8},
+  {&(_ZTV2C7[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+Class_Descriptor cd_C7 = {  "C7", // class name
+  bases_C7, 2,
+  &(vtc_C7[0]), // expected_vtbl_contents
+  &(vtt_C7[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI2C7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C7),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C7),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  C8  : A0 , virtual B0 {
+  int fc;
+  ~C8(); // tgen
+  C8(); // tgen
+};
+//SIG(-1 C8) C1{ BC2{ Fi} VBC3{ Fi} Fi}
+
+
+C8 ::~C8(){ note_dtor("C8", this);} // tgen
+C8 ::C8(){ note_ctor("C8", this);} // tgen
+
+static void Test_C8()
+{
+  extern Class_Descriptor cd_C8;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C8, buf);
+    C8 *dp, &lv = *(dp=new (buf) C8());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C8)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C8)");
+    check_base_class_offset(lv, (A0*), ABISELECT(8,4), "C8");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C8");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C8.fc");
+    test_class_info(&lv, &cd_C8);
+    dp->~C8();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC8(Test_C8, "C8", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C8C1Ev();
+extern void _ZN2C8D1Ev();
+Name_Map name_map_C8[] = {
+  NSPAIR(_ZN2C8C1Ev),
+  NSPAIR(_ZN2C8D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C8[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI2C8[];
+static  VTBL_ENTRY vtc_C8[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+extern VTBL_ENTRY _ZTV2C8[];
+static  VTT_ENTRY vtt_C8[] = {
+  {&(_ZTV2C8[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+Class_Descriptor cd_C8 = {  "C8", // class name
+  bases_C8, 2,
+  &(vtc_C8[0]), // expected_vtbl_contents
+  &(vtt_C8[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C8),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C8),3, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C8),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C9  : A1 , virtual B0 {
+  int fc;
+  ~C9(); // tgen
+  C9(); // tgen
+};
+//SIG(-1 C9) C1{ BC2{ v1 Fi} VBC3{ Fi} Fi}
+
+
+C9 ::~C9(){ note_dtor("C9", this);} // tgen
+C9 ::C9(){ note_ctor("C9", this);} // tgen
+
+static void Test_C9()
+{
+  extern Class_Descriptor cd_C9;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C9, buf);
+    C9 *dp, &lv = *(dp=new (buf) C9());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C9)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C9)");
+    check_base_class_offset(lv, (A1*), 0, "C9");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C9");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C9.fc");
+    test_class_info(&lv, &cd_C9);
+    dp->~C9();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC9(Test_C9, "C9", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN2C9C1Ev();
+extern void _ZN2C9D1Ev();
+Name_Map name_map_C9[] = {
+  NSPAIR(_ZN2C9C1Ev),
+  NSPAIR(_ZN2C9D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C9[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI2C9[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_C9[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV2C9[];
+static  VTT_ENTRY vtt_C9[] = {
+  {&(_ZTV2C9[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+Class_Descriptor cd_C9 = {  "C9", // class name
+  bases_C9, 2,
+  &(vtc_C9[0]), // expected_vtbl_contents
+  &(vtt_C9[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI2C9),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV2C9),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT2C9),1, //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  C10  : virtual A0 , virtual B0 {
+  int fc;
+  ~C10(); // tgen
+  C10(); // tgen
+};
+//SIG(-1 C10) C1{ VBC2{ Fi} VBC3{ Fi} Fi}
+
+
+C10 ::~C10(){ note_dtor("C10", this);} // tgen
+C10 ::C10(){ note_ctor("C10", this);} // tgen
+
+static void Test_C10()
+{
+  extern Class_Descriptor cd_C10;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C10, buf);
+    C10 *dp, &lv = *(dp=new (buf) C10());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C10)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C10)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C10");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C10");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C10.fc");
+    test_class_info(&lv, &cd_C10);
+    dp->~C10();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC10(Test_C10, "C10", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C10C1Ev();
+extern void _ZN3C10D1Ev();
+Name_Map name_map_C10[] = {
+  NSPAIR(_ZN3C10C1Ev),
+  NSPAIR(_ZN3C10D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C10[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C10[];
+static  VTBL_ENTRY vtc_C10[] = {
+  ABISELECT(16,12),
+  ABISELECT(12,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+extern VTBL_ENTRY _ZTV3C10[];
+static  VTT_ENTRY vtt_C10[] = {
+  {&(_ZTV3C10[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+Class_Descriptor cd_C10 = {  "C10", // class name
+  bases_C10, 2,
+  &(vtc_C10[0]), // expected_vtbl_contents
+  &(vtt_C10[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C10),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C10),4, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C10),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C11  : virtual A1 , virtual B0 {
+  int fc;
+  ~C11(); // tgen
+  C11(); // tgen
+};
+//SIG(-1 C11) C1{ VBC2{ v1 Fi} VBC3{ Fi} Fi}
+
+
+C11 ::~C11(){ note_dtor("C11", this);} // tgen
+C11 ::C11(){ note_ctor("C11", this);} // tgen
+
+static void Test_C11()
+{
+  extern Class_Descriptor cd_C11;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C11, buf);
+    C11 *dp, &lv = *(dp=new (buf) C11());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C11)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C11)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,8), "C11");
+    check_base_class_offset(lv, (B0*), ABISELECT(28,16), "C11");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C11.fc");
+    test_class_info(&lv, &cd_C11);
+    dp->~C11();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC11(Test_C11, "C11", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C11C1Ev();
+extern void _ZN3C11D1Ev();
+Name_Map name_map_C11[] = {
+  NSPAIR(_ZN3C11C1Ev),
+  NSPAIR(_ZN3C11D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C11[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    ABISELECT(28,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
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C11[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_C11[] = {
+  ABISELECT(28,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV3C11[];
+static  VTT_ENTRY vtt_C11[] = {
+  {&(_ZTV3C11[4]),  4,8},
+  {&(_ZTV3C11[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+Class_Descriptor cd_C11 = {  "C11", // class name
+  bases_C11, 2,
+  &(vtc_C11[0]), // expected_vtbl_contents
+  &(vtt_C11[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C11),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C11),8, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C11),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  C12  : A0 , virtual B1 {
+  int fc;
+  ~C12(); // tgen
+  C12(); // tgen
+};
+//SIG(-1 C12) C1{ BC2{ Fi} VBC3{ v1 Fi} Fi}
+
+
+C12 ::~C12(){ note_dtor("C12", this);} // tgen
+C12 ::C12(){ note_ctor("C12", this);} // tgen
+
+static void Test_C12()
+{
+  extern Class_Descriptor cd_C12;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C12, buf);
+    C12 *dp, &lv = *(dp=new (buf) C12());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C12)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C12)");
+    check_base_class_offset(lv, (A0*), ABISELECT(8,4), "C12");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C12");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C12.fc");
+    test_class_info(&lv, &cd_C12);
+    dp->~C12();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC12(Test_C12, "C12", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C12C1Ev();
+extern void _ZN3C12D1Ev();
+Name_Map name_map_C12[] = {
+  NSPAIR(_ZN3C12C1Ev),
+  NSPAIR(_ZN3C12D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C12[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C12[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C12[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV3C12[];
+static  VTT_ENTRY vtt_C12[] = {
+  {&(_ZTV3C12[3]),  3,7},
+  {&(_ZTV3C12[6]),  6,7},
+};
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+Class_Descriptor cd_C12 = {  "C12", // class name
+  bases_C12, 2,
+  &(vtc_C12[0]), // expected_vtbl_contents
+  &(vtt_C12[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C12),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C12),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C12),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  C13  : A1 , virtual B1 {
+  int fc;
+  ~C13(); // tgen
+  C13(); // tgen
+};
+//SIG(-1 C13) C1{ BC2{ v1 Fi} VBC3{ v2 Fi} Fi}
+
+
+C13 ::~C13(){ note_dtor("C13", this);} // tgen
+C13 ::C13(){ note_ctor("C13", this);} // tgen
+
+static void Test_C13()
+{
+  extern Class_Descriptor cd_C13;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C13, buf);
+    C13 *dp, &lv = *(dp=new (buf) C13());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C13)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C13)");
+    check_base_class_offset(lv, (A1*), 0, "C13");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C13");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C13.fc");
+    test_class_info(&lv, &cd_C13);
+    dp->~C13();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC13(Test_C13, "C13", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C13C1Ev();
+extern void _ZN3C13D1Ev();
+Name_Map name_map_C13[] = {
+  NSPAIR(_ZN3C13C1Ev),
+  NSPAIR(_ZN3C13D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C13[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C13[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C13[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV3C13[];
+static  VTT_ENTRY vtt_C13[] = {
+  {&(_ZTV3C13[3]),  3,8},
+  {&(_ZTV3C13[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+Class_Descriptor cd_C13 = {  "C13", // class name
+  bases_C13, 2,
+  &(vtc_C13[0]), // expected_vtbl_contents
+  &(vtt_C13[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C13),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C13),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C13),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  C14  : virtual A0 , virtual B1 {
+  int fc;
+  ~C14(); // tgen
+  C14(); // tgen
+};
+//SIG(-1 C14) C1{ VBC2{ Fi} VBC3{ v1 Fi} Fi}
+
+
+C14 ::~C14(){ note_dtor("C14", this);} // tgen
+C14 ::C14(){ note_ctor("C14", this);} // tgen
+
+static void Test_C14()
+{
+  extern Class_Descriptor cd_C14;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C14, buf);
+    C14 *dp, &lv = *(dp=new (buf) C14());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C14)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C14)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C14");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C14");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C14.fc");
+    test_class_info(&lv, &cd_C14);
+    dp->~C14();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC14(Test_C14, "C14", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C14C1Ev();
+extern void _ZN3C14D1Ev();
+Name_Map name_map_C14[] = {
+  NSPAIR(_ZN3C14C1Ev),
+  NSPAIR(_ZN3C14D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C14[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C14[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C14[] = {
+  ABISELECT(16,12),
+  ABISELECT(12,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV3C14[];
+static  VTT_ENTRY vtt_C14[] = {
+  {&(_ZTV3C14[4]),  4,8},
+  {&(_ZTV3C14[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+Class_Descriptor cd_C14 = {  "C14", // class name
+  bases_C14, 2,
+  &(vtc_C14[0]), // expected_vtbl_contents
+  &(vtt_C14[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C14),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C14),8, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C14),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  C15  : virtual A1 , virtual B1 {
+  int fc;
+  ~C15(); // tgen
+  C15(); // tgen
+};
+//SIG(-1 C15) C1{ VBC2{ v1 Fi} VBC3{ v2 Fi} Fi}
+
+
+C15 ::~C15(){ note_dtor("C15", this);} // tgen
+C15 ::C15(){ note_ctor("C15", this);} // tgen
+
+static void Test_C15()
+{
+  extern Class_Descriptor cd_C15;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[7];
+    init_test(&cd_C15, buf);
+    C15 *dp, &lv = *(dp=new (buf) C15());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,24), "sizeof(C15)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C15)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,8), "C15");
+    check_base_class_offset(lv, (B1*), ABISELECT(32,16), "C15");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C15.fc");
+    test_class_info(&lv, &cd_C15);
+    dp->~C15();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC15(Test_C15, "C15", ABISELECT(48,24));
+
+#else // __cplusplus
+
+extern void _ZN3C15C1Ev();
+extern void _ZN3C15D1Ev();
+Name_Map name_map_C15[] = {
+  NSPAIR(_ZN3C15C1Ev),
+  NSPAIR(_ZN3C15D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C15[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C15[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_C15[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV3C15[];
+static  VTT_ENTRY vtt_C15[] = {
+  {&(_ZTV3C15[4]),  4,12},
+  {&(_ZTV3C15[7]),  7,12},
+  {&(_ZTV3C15[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+Class_Descriptor cd_C15 = {  "C15", // class name
+  bases_C15, 2,
+  &(vtc_C15[0]), // expected_vtbl_contents
+  &(vtt_C15[0]), // expected_vtt_contents
+  ABISELECT(48,24), // object size
+  NSPAIRA(_ZTI3C15),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C15),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C15),3, //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  C16  : A0 , B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C163fooEv
+  ~C16(); // tgen
+  C16(); // tgen
+};
+//SIG(-1 C16) C1{ BC2{ Fi} BC3{ Fi} v1 Fi}
+
+
+void  C16 ::foo(){vfunc_called(this, "_ZN3C163fooEv");}
+C16 ::~C16(){ note_dtor("C16", this);} // tgen
+C16 ::C16(){ note_ctor("C16", this);} // tgen
+
+static void Test_C16()
+{
+  extern Class_Descriptor cd_C16;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C16, buf);
+    C16 *dp, &lv = *(dp=new (buf) C16());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C16)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C16)");
+    check_base_class_offset(lv, (A0*), ABISELECT(8,4), "C16");
+    check_base_class_offset(lv, (B0*), ABISELECT(12,8), "C16");
+    check_field_offset(lv, fc, ABISELECT(16,12), "C16.fc");
+    test_class_info(&lv, &cd_C16);
+    dp->~C16();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC16(Test_C16, "C16", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C16C1Ev();
+extern void _ZN3C16D1Ev();
+Name_Map name_map_C16[] = {
+  NSPAIR(_ZN3C16C1Ev),
+  NSPAIR(_ZN3C16D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C16[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI3C16[];
+extern void _ZN3C163fooEv();
+static  VTBL_ENTRY vtc_C16[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3C16[0]),
+  (VTBL_ENTRY)&_ZN3C163fooEv,
+};
+extern VTBL_ENTRY _ZTI3C16[];
+extern  VTBL_ENTRY _ZTV3C16[];
+Class_Descriptor cd_C16 = {  "C16", // class name
+  bases_C16, 2,
+  &(vtc_C16[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C16),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C16),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  C17  : A1 , B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C173fooEv
+  ~C17(); // tgen
+  C17(); // tgen
+};
+//SIG(-1 C17) C1{ BC2{ v1 Fi} BC3{ Fi} v1 Fi}
+
+
+void  C17 ::foo(){vfunc_called(this, "_ZN3C173fooEv");}
+C17 ::~C17(){ note_dtor("C17", this);} // tgen
+C17 ::C17(){ note_ctor("C17", this);} // tgen
+
+static void Test_C17()
+{
+  extern Class_Descriptor cd_C17;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C17, buf);
+    C17 *dp, &lv = *(dp=new (buf) C17());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C17)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C17)");
+    check_base_class_offset(lv, (A1*), 0, "C17");
+    check_base_class_offset(lv, (B0*), ABISELECT(12,8), "C17");
+    check_field_offset(lv, fc, ABISELECT(16,12), "C17.fc");
+    test_class_info(&lv, &cd_C17);
+    dp->~C17();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC17(Test_C17, "C17", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C17C1Ev();
+extern void _ZN3C17D1Ev();
+Name_Map name_map_C17[] = {
+  NSPAIR(_ZN3C17C1Ev),
+  NSPAIR(_ZN3C17D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C17[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI3C17[];
+extern void _ZN3C173fooEv();
+static  VTBL_ENTRY vtc_C17[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3C17[0]),
+  (VTBL_ENTRY)&_ZN3C173fooEv,
+};
+extern VTBL_ENTRY _ZTI3C17[];
+extern  VTBL_ENTRY _ZTV3C17[];
+Class_Descriptor cd_C17 = {  "C17", // class name
+  bases_C17, 2,
+  &(vtc_C17[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C17),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C17),3, //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  C18  : virtual A0 , B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C183fooEv
+  ~C18(); // tgen
+  C18(); // tgen
+};
+//SIG(-1 C18) C1{ VBC2{ Fi} BC3{ Fi} v1 Fi}
+
+
+void  C18 ::foo(){vfunc_called(this, "_ZN3C183fooEv");}
+C18 ::~C18(){ note_dtor("C18", this);} // tgen
+C18 ::C18(){ note_ctor("C18", this);} // tgen
+
+static void Test_C18()
+{
+  extern Class_Descriptor cd_C18;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C18, buf);
+    C18 *dp, &lv = *(dp=new (buf) C18());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C18)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C18)");
+    check_base_class_offset(lv, (A0*), ABISELECT(16,12), "C18");
+    check_base_class_offset(lv, (B0*), ABISELECT(8,4), "C18");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C18.fc");
+    test_class_info(&lv, &cd_C18);
+    dp->~C18();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC18(Test_C18, "C18", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C18C1Ev();
+extern void _ZN3C18D1Ev();
+Name_Map name_map_C18[] = {
+  NSPAIR(_ZN3C18C1Ev),
+  NSPAIR(_ZN3C18D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C18[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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 _ZTI3C18[];
+extern void _ZN3C183fooEv();
+static  VTBL_ENTRY vtc_C18[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C18[0]),
+  (VTBL_ENTRY)&_ZN3C183fooEv,
+};
+extern VTBL_ENTRY _ZTV3C18[];
+static  VTT_ENTRY vtt_C18[] = {
+  {&(_ZTV3C18[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI3C18[];
+extern  VTBL_ENTRY _ZTV3C18[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C18[];
+Class_Descriptor cd_C18 = {  "C18", // class name
+  bases_C18, 2,
+  &(vtc_C18[0]), // expected_vtbl_contents
+  &(vtt_C18[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C18),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C18),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C18),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C19  : virtual A1 , B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C193fooEv
+  ~C19(); // tgen
+  C19(); // tgen
+};
+//SIG(-1 C19) C1{ VBC2{ v1 Fi} BC3{ Fi} v1 Fi}
+
+
+void  C19 ::foo(){vfunc_called(this, "_ZN3C193fooEv");}
+C19 ::~C19(){ note_dtor("C19", this);} // tgen
+C19 ::C19(){ note_ctor("C19", this);} // tgen
+
+static void Test_C19()
+{
+  extern Class_Descriptor cd_C19;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C19, buf);
+    C19 *dp, &lv = *(dp=new (buf) C19());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C19)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C19)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,12), "C19");
+    check_base_class_offset(lv, (B0*), ABISELECT(8,4), "C19");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C19.fc");
+    test_class_info(&lv, &cd_C19);
+    dp->~C19();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC19(Test_C19, "C19", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C19C1Ev();
+extern void _ZN3C19D1Ev();
+Name_Map name_map_C19[] = {
+  NSPAIR(_ZN3C19C1Ev),
+  NSPAIR(_ZN3C19D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C19[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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 _ZTI3C19[];
+extern void _ZN3C193fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C193fooEv,_ZTv0_n12_N3C193fooEv)();
+extern void ABISELECT(_ZThn16_N3C193fooEv,_ZThn12_N3C193fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C19[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C19[0]),
+  (VTBL_ENTRY)&_ZN3C193fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C19[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C193fooEv,_ZTv0_n12_N3C193fooEv),
+};
+extern VTBL_ENTRY _ZTV3C19[];
+static  VTT_ENTRY vtt_C19[] = {
+  {&(_ZTV3C19[3]),  3,8},
+  {&(_ZTV3C19[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C19[];
+extern  VTBL_ENTRY _ZTV3C19[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C19[];
+static VTBL_ENTRY alt_thunk_names1[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C193fooEv,_ZTv0_n12_N3C193fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C193fooEv,_ZThn12_N3C193fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C19 = {  "C19", // class name
+  bases_C19, 2,
+  &(vtc_C19[0]), // expected_vtbl_contents
+  &(vtt_C19[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C19),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C19),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C19),2, //virtual table table var
+  1, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names1,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C20  : A0 , B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C203fooEv
+  ~C20(); // tgen
+  C20(); // tgen
+};
+//SIG(-1 C20) C1{ BC2{ Fi} BC3{ v1 Fi} v1 Fi}
+
+
+void  C20 ::foo(){vfunc_called(this, "_ZN3C203fooEv");}
+C20 ::~C20(){ note_dtor("C20", this);} // tgen
+C20 ::C20(){ note_ctor("C20", this);} // tgen
+
+static void Test_C20()
+{
+  extern Class_Descriptor cd_C20;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C20, buf);
+    C20 *dp, &lv = *(dp=new (buf) C20());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C20)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C20)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C20");
+    check_base_class_offset(lv, (B1*), 0, "C20");
+    check_field_offset(lv, fc, ABISELECT(16,12), "C20.fc");
+    test_class_info(&lv, &cd_C20);
+    dp->~C20();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC20(Test_C20, "C20", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C20C1Ev();
+extern void _ZN3C20D1Ev();
+Name_Map name_map_C20[] = {
+  NSPAIR(_ZN3C20C1Ev),
+  NSPAIR(_ZN3C20D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C20[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B1,    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 _ZTI3C20[];
+extern void _ZN3C203fooEv();
+static  VTBL_ENTRY vtc_C20[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3C20[0]),
+  (VTBL_ENTRY)&_ZN3C203fooEv,
+};
+extern VTBL_ENTRY _ZTI3C20[];
+extern  VTBL_ENTRY _ZTV3C20[];
+Class_Descriptor cd_C20 = {  "C20", // class name
+  bases_C20, 2,
+  &(vtc_C20[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C20),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C20),3, //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  C21  : A1 , B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C213fooEv
+  ~C21(); // tgen
+  C21(); // tgen
+};
+//SIG(-1 C21) C1{ BC2{ v1 Fi} BC3{ v1 Fi} v1 Fi}
+
+
+void  C21 ::foo(){vfunc_called(this, "_ZN3C213fooEv");}
+C21 ::~C21(){ note_dtor("C21", this);} // tgen
+C21 ::C21(){ note_ctor("C21", this);} // tgen
+
+static void Test_C21()
+{
+  extern Class_Descriptor cd_C21;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C21, buf);
+    C21 *dp, &lv = *(dp=new (buf) C21());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C21)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C21)");
+    check_base_class_offset(lv, (A1*), 0, "C21");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,8), "C21");
+    check_field_offset(lv, fc, ABISELECT(28,16), "C21.fc");
+    test_class_info(&lv, &cd_C21);
+    dp->~C21();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC21(Test_C21, "C21", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C21C1Ev();
+extern void _ZN3C21D1Ev();
+Name_Map name_map_C21[] = {
+  NSPAIR(_ZN3C21C1Ev),
+  NSPAIR(_ZN3C21D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C21[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B1,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI3C21[];
+extern void _ZN3C213fooEv();
+extern void ABISELECT(_ZThn16_N3C213fooEv,_ZThn8_N3C213fooEv)();
+static  VTBL_ENTRY vtc_C21[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI3C21[0]),
+  (VTBL_ENTRY)&_ZN3C213fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI3C21[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZThn16_N3C213fooEv,_ZThn8_N3C213fooEv),
+};
+extern VTBL_ENTRY _ZTI3C21[];
+extern  VTBL_ENTRY _ZTV3C21[];
+Class_Descriptor cd_C21 = {  "C21", // class name
+  bases_C21, 2,
+  &(vtc_C21[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C21),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C21),6, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  2, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C22  : virtual A0 , B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C223fooEv
+  ~C22(); // tgen
+  C22(); // tgen
+};
+//SIG(-1 C22) C1{ VBC2{ Fi} BC3{ v1 Fi} v1 Fi}
+
+
+void  C22 ::foo(){vfunc_called(this, "_ZN3C223fooEv");}
+C22 ::~C22(){ note_dtor("C22", this);} // tgen
+C22 ::C22(){ note_ctor("C22", this);} // tgen
+
+static void Test_C22()
+{
+  extern Class_Descriptor cd_C22;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C22, buf);
+    C22 *dp, &lv = *(dp=new (buf) C22());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C22)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C22)");
+    check_base_class_offset(lv, (A0*), ABISELECT(16,12), "C22");
+    check_base_class_offset(lv, (B1*), 0, "C22");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C22.fc");
+    test_class_info(&lv, &cd_C22);
+    dp->~C22();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC22(Test_C22, "C22", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C22C1Ev();
+extern void _ZN3C22D1Ev();
+Name_Map name_map_C22[] = {
+  NSPAIR(_ZN3C22C1Ev),
+  NSPAIR(_ZN3C22D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C22[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    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 _ZTI3C22[];
+extern void _ZN3C223fooEv();
+static  VTBL_ENTRY vtc_C22[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C22[0]),
+  (VTBL_ENTRY)&_ZN3C223fooEv,
+};
+extern VTBL_ENTRY _ZTV3C22[];
+static  VTT_ENTRY vtt_C22[] = {
+  {&(_ZTV3C22[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI3C22[];
+extern  VTBL_ENTRY _ZTV3C22[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C22[];
+Class_Descriptor cd_C22 = {  "C22", // class name
+  bases_C22, 2,
+  &(vtc_C22[0]), // expected_vtbl_contents
+  &(vtt_C22[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C22),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C22),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C22),1, //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  C23  : virtual A1 , B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C233fooEv
+  ~C23(); // tgen
+  C23(); // tgen
+};
+//SIG(-1 C23) C1{ VBC2{ v1 Fi} BC3{ v1 Fi} v1 Fi}
+
+
+void  C23 ::foo(){vfunc_called(this, "_ZN3C233fooEv");}
+C23 ::~C23(){ note_dtor("C23", this);} // tgen
+C23 ::C23(){ note_ctor("C23", this);} // tgen
+
+static void Test_C23()
+{
+  extern Class_Descriptor cd_C23;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C23, buf);
+    C23 *dp, &lv = *(dp=new (buf) C23());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C23)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C23)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,12), "C23");
+    check_base_class_offset(lv, (B1*), 0, "C23");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C23.fc");
+    test_class_info(&lv, &cd_C23);
+    dp->~C23();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC23(Test_C23, "C23", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C23C1Ev();
+extern void _ZN3C23D1Ev();
+Name_Map name_map_C23[] = {
+  NSPAIR(_ZN3C23C1Ev),
+  NSPAIR(_ZN3C23D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C23[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    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 _ZTI3C23[];
+extern void _ZN3C233fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C233fooEv,_ZTv0_n12_N3C233fooEv)();
+extern void ABISELECT(_ZThn16_N3C233fooEv,_ZThn12_N3C233fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C23[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C23[0]),
+  (VTBL_ENTRY)&_ZN3C233fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C23[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C233fooEv,_ZTv0_n12_N3C233fooEv),
+};
+extern VTBL_ENTRY _ZTV3C23[];
+static  VTT_ENTRY vtt_C23[] = {
+  {&(_ZTV3C23[3]),  3,8},
+  {&(_ZTV3C23[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C23[];
+extern  VTBL_ENTRY _ZTV3C23[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C23[];
+static VTBL_ENTRY alt_thunk_names2[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C233fooEv,_ZTv0_n12_N3C233fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C233fooEv,_ZThn12_N3C233fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C23 = {  "C23", // class name
+  bases_C23, 2,
+  &(vtc_C23[0]), // expected_vtbl_contents
+  &(vtt_C23[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C23),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C23),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C23),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names2,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C24  : A0 , virtual B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C243fooEv
+  ~C24(); // tgen
+  C24(); // tgen
+};
+//SIG(-1 C24) C1{ BC2{ Fi} VBC3{ Fi} v1 Fi}
+
+
+void  C24 ::foo(){vfunc_called(this, "_ZN3C243fooEv");}
+C24 ::~C24(){ note_dtor("C24", this);} // tgen
+C24 ::C24(){ note_ctor("C24", this);} // tgen
+
+static void Test_C24()
+{
+  extern Class_Descriptor cd_C24;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C24, buf);
+    C24 *dp, &lv = *(dp=new (buf) C24());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C24)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C24)");
+    check_base_class_offset(lv, (A0*), ABISELECT(8,4), "C24");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C24");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C24.fc");
+    test_class_info(&lv, &cd_C24);
+    dp->~C24();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC24(Test_C24, "C24", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C24C1Ev();
+extern void _ZN3C24D1Ev();
+Name_Map name_map_C24[] = {
+  NSPAIR(_ZN3C24C1Ev),
+  NSPAIR(_ZN3C24D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C24[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C24[];
+extern void _ZN3C243fooEv();
+static  VTBL_ENTRY vtc_C24[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C24[0]),
+  (VTBL_ENTRY)&_ZN3C243fooEv,
+};
+extern VTBL_ENTRY _ZTV3C24[];
+static  VTT_ENTRY vtt_C24[] = {
+  {&(_ZTV3C24[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI3C24[];
+extern  VTBL_ENTRY _ZTV3C24[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C24[];
+Class_Descriptor cd_C24 = {  "C24", // class name
+  bases_C24, 2,
+  &(vtc_C24[0]), // expected_vtbl_contents
+  &(vtt_C24[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C24),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C24),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C24),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C25  : A1 , virtual B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C253fooEv
+  ~C25(); // tgen
+  C25(); // tgen
+};
+//SIG(-1 C25) C1{ BC2{ v1 Fi} VBC3{ Fi} v1 Fi}
+
+
+void  C25 ::foo(){vfunc_called(this, "_ZN3C253fooEv");}
+C25 ::~C25(){ note_dtor("C25", this);} // tgen
+C25 ::C25(){ note_ctor("C25", this);} // tgen
+
+static void Test_C25()
+{
+  extern Class_Descriptor cd_C25;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C25, buf);
+    C25 *dp, &lv = *(dp=new (buf) C25());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C25)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C25)");
+    check_base_class_offset(lv, (A1*), 0, "C25");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C25");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C25.fc");
+    test_class_info(&lv, &cd_C25);
+    dp->~C25();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC25(Test_C25, "C25", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C25C1Ev();
+extern void _ZN3C25D1Ev();
+Name_Map name_map_C25[] = {
+  NSPAIR(_ZN3C25C1Ev),
+  NSPAIR(_ZN3C25D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C25[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C25[];
+extern void _ZN3C253fooEv();
+static  VTBL_ENTRY vtc_C25[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C25[0]),
+  (VTBL_ENTRY)&_ZN3C253fooEv,
+};
+extern VTBL_ENTRY _ZTV3C25[];
+static  VTT_ENTRY vtt_C25[] = {
+  {&(_ZTV3C25[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI3C25[];
+extern  VTBL_ENTRY _ZTV3C25[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C25[];
+Class_Descriptor cd_C25 = {  "C25", // class name
+  bases_C25, 2,
+  &(vtc_C25[0]), // expected_vtbl_contents
+  &(vtt_C25[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C25),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C25),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C25),1, //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  C26  : virtual A0 , virtual B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C263fooEv
+  ~C26(); // tgen
+  C26(); // tgen
+};
+//SIG(-1 C26) C1{ VBC2{ Fi} VBC3{ Fi} v1 Fi}
+
+
+void  C26 ::foo(){vfunc_called(this, "_ZN3C263fooEv");}
+C26 ::~C26(){ note_dtor("C26", this);} // tgen
+C26 ::C26(){ note_ctor("C26", this);} // tgen
+
+static void Test_C26()
+{
+  extern Class_Descriptor cd_C26;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(4,5)];
+    init_test(&cd_C26, buf);
+    C26 *dp, &lv = *(dp=new (buf) C26());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(24,16), "sizeof(C26)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C26)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C26");
+    check_base_class_offset(lv, (B0*), ABISELECT(16,12), "C26");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C26.fc");
+    test_class_info(&lv, &cd_C26);
+    dp->~C26();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC26(Test_C26, "C26", ABISELECT(24,16));
+
+#else // __cplusplus
+
+extern void _ZN3C26C1Ev();
+extern void _ZN3C26D1Ev();
+Name_Map name_map_C26[] = {
+  NSPAIR(_ZN3C26C1Ev),
+  NSPAIR(_ZN3C26D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C26[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C26[];
+extern void _ZN3C263fooEv();
+static  VTBL_ENTRY vtc_C26[] = {
+  ABISELECT(16,12),
+  ABISELECT(12,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C26[0]),
+  (VTBL_ENTRY)&_ZN3C263fooEv,
+};
+extern VTBL_ENTRY _ZTV3C26[];
+static  VTT_ENTRY vtt_C26[] = {
+  {&(_ZTV3C26[4]),  4,5},
+};
+extern VTBL_ENTRY _ZTI3C26[];
+extern  VTBL_ENTRY _ZTV3C26[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C26[];
+Class_Descriptor cd_C26 = {  "C26", // class name
+  bases_C26, 2,
+  &(vtc_C26[0]), // expected_vtbl_contents
+  &(vtt_C26[0]), // expected_vtt_contents
+  ABISELECT(24,16), // object size
+  NSPAIRA(_ZTI3C26),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C26),5, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C26),1, //virtual table table var
+  0, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C27  : virtual A1 , virtual B0 {
+  int fc;
+  virtual void  foo(); // _ZN3C273fooEv
+  ~C27(); // tgen
+  C27(); // tgen
+};
+//SIG(-1 C27) C1{ VBC2{ v1 Fi} VBC3{ Fi} v1 Fi}
+
+
+void  C27 ::foo(){vfunc_called(this, "_ZN3C273fooEv");}
+C27 ::~C27(){ note_dtor("C27", this);} // tgen
+C27 ::C27(){ note_ctor("C27", this);} // tgen
+
+static void Test_C27()
+{
+  extern Class_Descriptor cd_C27;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C27, buf);
+    C27 *dp, &lv = *(dp=new (buf) C27());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C27)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C27)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,8), "C27");
+    check_base_class_offset(lv, (B0*), ABISELECT(28,16), "C27");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C27.fc");
+    test_class_info(&lv, &cd_C27);
+    dp->~C27();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC27(Test_C27, "C27", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C27C1Ev();
+extern void _ZN3C27D1Ev();
+Name_Map name_map_C27[] = {
+  NSPAIR(_ZN3C27C1Ev),
+  NSPAIR(_ZN3C27D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+static Base_Class bases_C27[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B0,    ABISELECT(28,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
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C27[];
+extern void _ZN3C273fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C273fooEv,_ZTv0_n12_N3C273fooEv)();
+extern void ABISELECT(_ZThn16_N3C273fooEv,_ZThn8_N3C273fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C27[] = {
+  ABISELECT(28,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C27[0]),
+  (VTBL_ENTRY)&_ZN3C273fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI3C27[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C273fooEv,_ZTv0_n12_N3C273fooEv),
+};
+extern VTBL_ENTRY _ZTV3C27[];
+static  VTT_ENTRY vtt_C27[] = {
+  {&(_ZTV3C27[4]),  4,9},
+  {&(_ZTV3C27[8]),  8,9},
+};
+extern VTBL_ENTRY _ZTI3C27[];
+extern  VTBL_ENTRY _ZTV3C27[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C27[];
+static VTBL_ENTRY alt_thunk_names3[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C273fooEv,_ZTv0_n12_N3C273fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C273fooEv,_ZThn8_N3C273fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C27 = {  "C27", // class name
+  bases_C27, 2,
+  &(vtc_C27[0]), // expected_vtbl_contents
+  &(vtt_C27[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C27),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C27),9, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C27),2, //virtual table table var
+  1, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names3,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C28  : A0 , virtual B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C283fooEv
+  ~C28(); // tgen
+  C28(); // tgen
+};
+//SIG(-1 C28) C1{ BC2{ Fi} VBC3{ v1 Fi} v1 Fi}
+
+
+void  C28 ::foo(){vfunc_called(this, "_ZN3C283fooEv");}
+C28 ::~C28(){ note_dtor("C28", this);} // tgen
+C28 ::C28(){ note_ctor("C28", this);} // tgen
+
+static void Test_C28()
+{
+  extern Class_Descriptor cd_C28;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C28, buf);
+    C28 *dp, &lv = *(dp=new (buf) C28());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C28)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C28)");
+    check_base_class_offset(lv, (A0*), ABISELECT(8,4), "C28");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C28");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C28.fc");
+    test_class_info(&lv, &cd_C28);
+    dp->~C28();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC28(Test_C28, "C28", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C28C1Ev();
+extern void _ZN3C28D1Ev();
+Name_Map name_map_C28[] = {
+  NSPAIR(_ZN3C28C1Ev),
+  NSPAIR(_ZN3C28D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C28[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C28[];
+extern void _ZN3C283fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C283fooEv,_ZTv0_n12_N3C283fooEv)();
+extern void ABISELECT(_ZThn16_N3C283fooEv,_ZThn12_N3C283fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C28[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C28[0]),
+  (VTBL_ENTRY)&_ZN3C283fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C28[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C283fooEv,_ZTv0_n12_N3C283fooEv),
+};
+extern VTBL_ENTRY _ZTV3C28[];
+static  VTT_ENTRY vtt_C28[] = {
+  {&(_ZTV3C28[3]),  3,8},
+  {&(_ZTV3C28[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C28[];
+extern  VTBL_ENTRY _ZTV3C28[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C28[];
+static VTBL_ENTRY alt_thunk_names4[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C283fooEv,_ZTv0_n12_N3C283fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C283fooEv,_ZThn12_N3C283fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C28 = {  "C28", // class name
+  bases_C28, 2,
+  &(vtc_C28[0]), // expected_vtbl_contents
+  &(vtt_C28[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C28),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C28),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C28),2, //virtual table table var
+  1, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names4,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C29  : A1 , virtual B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C293fooEv
+  ~C29(); // tgen
+  C29(); // tgen
+};
+//SIG(-1 C29) C1{ BC2{ v1 Fi} VBC3{ v1 Fi} v1 Fi}
+
+
+void  C29 ::foo(){vfunc_called(this, "_ZN3C293fooEv");}
+C29 ::~C29(){ note_dtor("C29", this);} // tgen
+C29 ::C29(){ note_ctor("C29", this);} // tgen
+
+static void Test_C29()
+{
+  extern Class_Descriptor cd_C29;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C29, buf);
+    C29 *dp, &lv = *(dp=new (buf) C29());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C29)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C29)");
+    check_base_class_offset(lv, (A1*), 0, "C29");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C29");
+    check_field_offset(lv, fc, ABISELECT(12,8), "C29.fc");
+    test_class_info(&lv, &cd_C29);
+    dp->~C29();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC29(Test_C29, "C29", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C29C1Ev();
+extern void _ZN3C29D1Ev();
+Name_Map name_map_C29[] = {
+  NSPAIR(_ZN3C29C1Ev),
+  NSPAIR(_ZN3C29D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C29[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C29[];
+extern void _ZN3C293fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C293fooEv,_ZTv0_n12_N3C293fooEv)();
+extern void ABISELECT(_ZThn16_N3C293fooEv,_ZThn12_N3C293fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C29[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C29[0]),
+  (VTBL_ENTRY)&_ZN3C293fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C29[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C293fooEv,_ZTv0_n12_N3C293fooEv),
+};
+extern VTBL_ENTRY _ZTV3C29[];
+static  VTT_ENTRY vtt_C29[] = {
+  {&(_ZTV3C29[3]),  3,8},
+  {&(_ZTV3C29[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI3C29[];
+extern  VTBL_ENTRY _ZTV3C29[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C29[];
+static VTBL_ENTRY alt_thunk_names5[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C293fooEv,_ZTv0_n12_N3C293fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C293fooEv,_ZThn12_N3C293fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C29 = {  "C29", // class name
+  bases_C29, 2,
+  &(vtc_C29[0]), // expected_vtbl_contents
+  &(vtt_C29[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C29),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C29),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C29),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names5,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C30  : virtual A0 , virtual B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C303fooEv
+  ~C30(); // tgen
+  C30(); // tgen
+};
+//SIG(-1 C30) C1{ VBC2{ Fi} VBC3{ v1 Fi} v1 Fi}
+
+
+void  C30 ::foo(){vfunc_called(this, "_ZN3C303fooEv");}
+C30 ::~C30(){ note_dtor("C30", this);} // tgen
+C30 ::C30(){ note_ctor("C30", this);} // tgen
+
+static void Test_C30()
+{
+  extern Class_Descriptor cd_C30;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd_C30, buf);
+    C30 *dp, &lv = *(dp=new (buf) C30());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(C30)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C30)");
+    check_base_class_offset(lv, (A0*), ABISELECT(12,8), "C30");
+    check_base_class_offset(lv, (B1*), ABISELECT(16,12), "C30");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C30.fc");
+    test_class_info(&lv, &cd_C30);
+    dp->~C30();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC30(Test_C30, "C30", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3C30C1Ev();
+extern void _ZN3C30D1Ev();
+Name_Map name_map_C30[] = {
+  NSPAIR(_ZN3C30C1Ev),
+  NSPAIR(_ZN3C30D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C30[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C30[];
+extern void _ZN3C303fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C303fooEv,_ZTv0_n12_N3C303fooEv)();
+extern void ABISELECT(_ZThn16_N3C303fooEv,_ZThn12_N3C303fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C30[] = {
+  ABISELECT(16,12),
+  ABISELECT(12,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C30[0]),
+  (VTBL_ENTRY)&_ZN3C303fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI3C30[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C303fooEv,_ZTv0_n12_N3C303fooEv),
+};
+extern VTBL_ENTRY _ZTV3C30[];
+static  VTT_ENTRY vtt_C30[] = {
+  {&(_ZTV3C30[4]),  4,9},
+  {&(_ZTV3C30[8]),  8,9},
+};
+extern VTBL_ENTRY _ZTI3C30[];
+extern  VTBL_ENTRY _ZTV3C30[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C30[];
+static VTBL_ENTRY alt_thunk_names6[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C303fooEv,_ZTv0_n12_N3C303fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C303fooEv,_ZThn12_N3C303fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C30 = {  "C30", // class name
+  bases_C30, 2,
+  &(vtc_C30[0]), // expected_vtbl_contents
+  &(vtt_C30[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTI3C30),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C30),9, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C30),2, //virtual table table var
+  1, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names6,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  C31  : virtual A1 , virtual B1 {
+  int fc;
+  virtual void  foo(); // _ZN3C313fooEv
+  ~C31(); // tgen
+  C31(); // tgen
+};
+//SIG(-1 C31) C1{ VBC2{ v1 Fi} VBC3{ v1 Fi} v1 Fi}
+
+
+void  C31 ::foo(){vfunc_called(this, "_ZN3C313fooEv");}
+C31 ::~C31(){ note_dtor("C31", this);} // tgen
+C31 ::C31(){ note_ctor("C31", this);} // tgen
+
+static void Test_C31()
+{
+  extern Class_Descriptor cd_C31;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[7];
+    init_test(&cd_C31, buf);
+    C31 *dp, &lv = *(dp=new (buf) C31());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,24), "sizeof(C31)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(C31)");
+    check_base_class_offset(lv, (A1*), ABISELECT(16,8), "C31");
+    check_base_class_offset(lv, (B1*), ABISELECT(32,16), "C31");
+    check_field_offset(lv, fc, ABISELECT(8,4), "C31.fc");
+    test_class_info(&lv, &cd_C31);
+    dp->~C31();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vC31(Test_C31, "C31", ABISELECT(48,24));
+
+#else // __cplusplus
+
+extern void _ZN3C31C1Ev();
+extern void _ZN3C31D1Ev();
+Name_Map name_map_C31[] = {
+  NSPAIR(_ZN3C31C1Ev),
+  NSPAIR(_ZN3C31D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+static Base_Class bases_C31[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_B1,    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
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI3C31[];
+extern void _ZN3C313fooEv();
+extern void ABISELECT(_ZTv0_n24_N3C313fooEv,_ZTv0_n12_N3C313fooEv)();
+extern void ABISELECT(_ZThn16_N3C313fooEv,_ZThn8_N3C313fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3C313fooEv,_ZTv0_n12_N3C313fooEv)();
+extern void ABISELECT(_ZThn32_N3C313fooEv,_ZThn16_N3C313fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc_C31[] = {
+  ABISELECT(32,16),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C31[0]),
+  (VTBL_ENTRY)&_ZN3C313fooEv,
+  ABISELECT(-16,-8),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI3C31[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C313fooEv,_ZTv0_n12_N3C313fooEv),
+  ABISELECT(-32,-16),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI3C31[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3C313fooEv,_ZTv0_n12_N3C313fooEv),
+};
+extern VTBL_ENTRY _ZTV3C31[];
+static  VTT_ENTRY vtt_C31[] = {
+  {&(_ZTV3C31[4]),  4,13},
+  {&(_ZTV3C31[8]),  8,13},
+  {&(_ZTV3C31[12]),  12,13},
+};
+extern VTBL_ENTRY _ZTI3C31[];
+extern  VTBL_ENTRY _ZTV3C31[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C31[];
+static VTBL_ENTRY alt_thunk_names7[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3C313fooEv,_ZTv0_n12_N3C313fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn32_N3C313fooEv,_ZThn16_N3C313fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3C313fooEv,_ZThn8_N3C313fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd_C31 = {  "C31", // class name
+  bases_C31, 2,
+  &(vtc_C31[0]), // expected_vtbl_contents
+  &(vtt_C31[0]), // expected_vtt_contents
+  ABISELECT(48,24), // object size
+  NSPAIRA(_ZTI3C31),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV3C31),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT3C31),3, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names7,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E0x0  : C0 , D1 {
+  int fd;
+  ~E0x0(); // tgen
+  E0x0(); // tgen
+};
+//SIG(-1 E0x0) C1{ BC2{ BC3{ Fi} BC4{ Fi} Fi} BC5{ v1 Fi} Fi}
+
+
+E0x0 ::~E0x0(){ note_dtor("E0x0", this);} // tgen
+E0x0 ::E0x0(){ note_ctor("E0x0", this);} // tgen
+
+static void Test_E0x0()
+{
+  extern Class_Descriptor cd_E0x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,7)];
+    init_test(&cd_E0x0, buf);
+    E0x0 *dp, &lv = *(dp=new (buf) E0x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,24), "sizeof(E0x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E0x0)");
+    check_base_class_offset(lv, (A0*)(C0*), ABISELECT(12,8), "E0x0");
+    check_base_class_offset(lv, (B0*)(C0*), ABISELECT(16,12), "E0x0");
+    check_base_class_offset(lv, (C0*), ABISELECT(12,8), "E0x0");
+    check_base_class_offset(lv, (D1*), 0, "E0x0");
+    check_field_offset(lv, fd, ABISELECT(24,20), "E0x0.fd");
+    test_class_info(&lv, &cd_E0x0);
+    dp->~E0x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE0x0(Test_E0x0, "E0x0", ABISELECT(32,24));
+
+#else // __cplusplus
+
+extern void _ZN4E0x0C1Ev();
+extern void _ZN4E0x0D1Ev();
+Name_Map name_map_E0x0[] = {
+  NSPAIR(_ZN4E0x0C1Ev),
+  NSPAIR(_ZN4E0x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E0x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B0,    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_C0,    ABISELECT(12,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    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 _ZTI4E0x0[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E0x0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI4E0x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+Class_Descriptor cd_E0x0 = {  "E0x0", // class name
+  bases_E0x0, 4,
+  &(vtc_E0x0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(32,24), // object size
+  NSPAIRA(_ZTI4E0x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E0x0),3, //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  G0x0y0  : E0x0 , F1 {
+  int ff;
+  ~G0x0y0(); // tgen
+  G0x0y0(); // tgen
+};
+//SIG(1 G0x0y0) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G0x0y0 ::~G0x0y0(){ note_dtor("G0x0y0", this);} // tgen
+G0x0y0 ::G0x0y0(){ note_ctor("G0x0y0", this);} // tgen
+
+static void Test_G0x0y0()
+{
+  extern Class_Descriptor cd_G0x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G0x0y0, buf);
+    G0x0y0 *dp, &lv = *(dp=new (buf) G0x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G0x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y0)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(12,8), "G0x0y0");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(16,12), "G0x0y0");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(12,8), "G0x0y0");
+    check_base_class_offset(lv, (D1*)(E0x0*), 0, "G0x0y0");
+    check_base_class_offset(lv, (E0x0*), 0, "G0x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G0x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G0x0y0.ff");
+    test_class_info(&lv, &cd_G0x0y0);
+    dp->~G0x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y0(Test_G0x0y0, "G0x0y0", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y0C1Ev();
+extern void _ZN6G0x0y0D1Ev();
+Name_Map name_map_G0x0y0[] = {
+  NSPAIR(_ZN6G0x0y0C1Ev),
+  NSPAIR(_ZN6G0x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G0x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B0,    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_C0,    ABISELECT(12,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    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},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI6G0x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G0x0y0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G0x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G0x0y0[];
+extern  VTBL_ENTRY _ZTV6G0x0y0[];
+Class_Descriptor cd_G0x0y0 = {  "G0x0y0", // class name
+  bases_G0x0y0, 6,
+  &(vtc_G0x0y0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G0x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y0),6, //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  G0x0y1  : virtual E0x0 , F1 {
+  int ff;
+  ~G0x0y1(); // tgen
+  G0x0y1(); // tgen
+};
+//SIG(1 G0x0y1) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G0x0y1 ::~G0x0y1(){ note_dtor("G0x0y1", this);} // tgen
+G0x0y1 ::G0x0y1(){ note_ctor("G0x0y1", this);} // tgen
+
+static void Test_G0x0y1()
+{
+  extern Class_Descriptor cd_G0x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G0x0y1, buf);
+    G0x0y1 *dp, &lv = *(dp=new (buf) G0x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G0x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y1)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(28,20), "G0x0y1");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(32,24), "G0x0y1");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(28,20), "G0x0y1");
+    check_base_class_offset(lv, (D1*)(E0x0*), ABISELECT(16,12), "G0x0y1");
+    check_base_class_offset(lv, (E0x0*), ABISELECT(16,12), "G0x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G0x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G0x0y1.ff");
+    test_class_info(&lv, &cd_G0x0y1);
+    dp->~G0x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y1(Test_G0x0y1, "G0x0y1", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y1C1Ev();
+extern void _ZN6G0x0y1D1Ev();
+Name_Map name_map_G0x0y1[] = {
+  NSPAIR(_ZN6G0x0y1C1Ev),
+  NSPAIR(_ZN6G0x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G0x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C0,    ABISELECT(28,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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 _ZTI6G0x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G0x0y1[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G0x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y1[];
+static  VTT_ENTRY vtt_G0x0y1[] = {
+  {&(_ZTV6G0x0y1[3]),  3,8},
+  {&(_ZTV6G0x0y1[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI6G0x0y1[];
+extern  VTBL_ENTRY _ZTV6G0x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y1[];
+Class_Descriptor cd_G0x0y1 = {  "G0x0y1", // class name
+  bases_G0x0y1, 6,
+  &(vtc_G0x0y1[0]), // expected_vtbl_contents
+  &(vtt_G0x0y1[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G0x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y1),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y1),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  G0x0y2  : E0x0 , virtual F1 {
+  int ff;
+  ~G0x0y2(); // tgen
+  G0x0y2(); // tgen
+};
+//SIG(1 G0x0y2) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G0x0y2 ::~G0x0y2(){ note_dtor("G0x0y2", this);} // tgen
+G0x0y2 ::G0x0y2(){ note_ctor("G0x0y2", this);} // tgen
+
+static void Test_G0x0y2()
+{
+  extern Class_Descriptor cd_G0x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G0x0y2, buf);
+    G0x0y2 *dp, &lv = *(dp=new (buf) G0x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G0x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y2)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(12,8), "G0x0y2");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(16,12), "G0x0y2");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(12,8), "G0x0y2");
+    check_base_class_offset(lv, (D1*)(E0x0*), 0, "G0x0y2");
+    check_base_class_offset(lv, (E0x0*), 0, "G0x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,28), "G0x0y2");
+    check_field_offset(lv, ff, ABISELECT(28,24), "G0x0y2.ff");
+    test_class_info(&lv, &cd_G0x0y2);
+    dp->~G0x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y2(Test_G0x0y2, "G0x0y2", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y2C1Ev();
+extern void _ZN6G0x0y2D1Ev();
+Name_Map name_map_G0x0y2[] = {
+  NSPAIR(_ZN6G0x0y2C1Ev),
+  NSPAIR(_ZN6G0x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G0x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B0,    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_C0,    ABISELECT(12,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    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},
+  {&cd_F1,    ABISELECT(32,28), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G0x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G0x0y2[] = {
+  ABISELECT(32,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-28),
+  (VTBL_ENTRY)&(_ZTI6G0x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y2[];
+static  VTT_ENTRY vtt_G0x0y2[] = {
+  {&(_ZTV6G0x0y2[3]),  3,8},
+  {&(_ZTV6G0x0y2[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI6G0x0y2[];
+extern  VTBL_ENTRY _ZTV6G0x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y2[];
+Class_Descriptor cd_G0x0y2 = {  "G0x0y2", // class name
+  bases_G0x0y2, 6,
+  &(vtc_G0x0y2[0]), // expected_vtbl_contents
+  &(vtt_G0x0y2[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G0x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y2),8, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y2),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  G0x0y3  : virtual E0x0 , virtual F1 {
+  int ff;
+  ~G0x0y3(); // tgen
+  G0x0y3(); // tgen
+};
+//SIG(1 G0x0y3) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G0x0y3 ::~G0x0y3(){ note_dtor("G0x0y3", this);} // tgen
+G0x0y3 ::G0x0y3(){ note_ctor("G0x0y3", this);} // tgen
+
+static void Test_G0x0y3()
+{
+  extern Class_Descriptor cd_G0x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G0x0y3, buf);
+    G0x0y3 *dp, &lv = *(dp=new (buf) G0x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G0x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y3)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(28,16), "G0x0y3");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(32,20), "G0x0y3");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(28,16), "G0x0y3");
+    check_base_class_offset(lv, (D1*)(E0x0*), ABISELECT(16,8), "G0x0y3");
+    check_base_class_offset(lv, (E0x0*), ABISELECT(16,8), "G0x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G0x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G0x0y3.ff");
+    test_class_info(&lv, &cd_G0x0y3);
+    dp->~G0x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y3(Test_G0x0y3, "G0x0y3", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y3C1Ev();
+extern void _ZN6G0x0y3D1Ev();
+Name_Map name_map_G0x0y3[] = {
+  NSPAIR(_ZN6G0x0y3C1Ev),
+  NSPAIR(_ZN6G0x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G0x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C0,    ABISELECT(28,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(48,32), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    3, //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 _ZTI6G0x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G0x0y3[] = {
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y3[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G0x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G0x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y3[];
+static  VTT_ENTRY vtt_G0x0y3[] = {
+  {&(_ZTV6G0x0y3[4]),  4,12},
+  {&(_ZTV6G0x0y3[7]),  7,12},
+  {&(_ZTV6G0x0y3[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI6G0x0y3[];
+extern  VTBL_ENTRY _ZTV6G0x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y3[];
+Class_Descriptor cd_G0x0y3 = {  "G0x0y3", // class name
+  bases_G0x0y3, 6,
+  &(vtc_G0x0y3[0]), // expected_vtbl_contents
+  &(vtt_G0x0y3[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI6G0x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y3),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y3),3, //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  G0x0y4  : E0x0 , F0 {
+  int ff;
+  ~G0x0y4(); // tgen
+  G0x0y4(); // tgen
+};
+//SIG(1 G0x0y4) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G0x0y4 ::~G0x0y4(){ note_dtor("G0x0y4", this);} // tgen
+G0x0y4 ::G0x0y4(){ note_ctor("G0x0y4", this);} // tgen
+
+static void Test_G0x0y4()
+{
+  extern Class_Descriptor cd_G0x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,9)];
+    init_test(&cd_G0x0y4, buf);
+    G0x0y4 *dp, &lv = *(dp=new (buf) G0x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,32), "sizeof(G0x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y4)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(12,8), "G0x0y4");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(16,12), "G0x0y4");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(12,8), "G0x0y4");
+    check_base_class_offset(lv, (D1*)(E0x0*), 0, "G0x0y4");
+    check_base_class_offset(lv, (E0x0*), 0, "G0x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(28,24), "G0x0y4");
+    check_field_offset(lv, ff, ABISELECT(32,28), "G0x0y4.ff");
+    test_class_info(&lv, &cd_G0x0y4);
+    dp->~G0x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y4(Test_G0x0y4, "G0x0y4", ABISELECT(40,32));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y4C1Ev();
+extern void _ZN6G0x0y4D1Ev();
+Name_Map name_map_G0x0y4[] = {
+  NSPAIR(_ZN6G0x0y4C1Ev),
+  NSPAIR(_ZN6G0x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G0x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B0,    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_C0,    ABISELECT(12,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    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},
+  {&cd_F0,    ABISELECT(28,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G0x0y4[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G0x0y4[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G0x0y4[];
+extern  VTBL_ENTRY _ZTV6G0x0y4[];
+Class_Descriptor cd_G0x0y4 = {  "G0x0y4", // class name
+  bases_G0x0y4, 6,
+  &(vtc_G0x0y4[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(40,32), // object size
+  NSPAIRA(_ZTI6G0x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y4),3, //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  G0x0y5  : virtual E0x0 , F0 {
+  int ff;
+  ~G0x0y5(); // tgen
+  G0x0y5(); // tgen
+};
+//SIG(1 G0x0y5) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G0x0y5 ::~G0x0y5(){ note_dtor("G0x0y5", this);} // tgen
+G0x0y5 ::G0x0y5(){ note_ctor("G0x0y5", this);} // tgen
+
+static void Test_G0x0y5()
+{
+  extern Class_Descriptor cd_G0x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G0x0y5, buf);
+    G0x0y5 *dp, &lv = *(dp=new (buf) G0x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G0x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y5)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(28,20), "G0x0y5");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(32,24), "G0x0y5");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(28,20), "G0x0y5");
+    check_base_class_offset(lv, (D1*)(E0x0*), ABISELECT(16,12), "G0x0y5");
+    check_base_class_offset(lv, (E0x0*), ABISELECT(16,12), "G0x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G0x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G0x0y5.ff");
+    test_class_info(&lv, &cd_G0x0y5);
+    dp->~G0x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y5(Test_G0x0y5, "G0x0y5", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y5C1Ev();
+extern void _ZN6G0x0y5D1Ev();
+Name_Map name_map_G0x0y5[] = {
+  NSPAIR(_ZN6G0x0y5C1Ev),
+  NSPAIR(_ZN6G0x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G0x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C0,    ABISELECT(28,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G0x0y5[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G0x0y5[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y5[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G0x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y5[];
+static  VTT_ENTRY vtt_G0x0y5[] = {
+  {&(_ZTV6G0x0y5[3]),  3,7},
+  {&(_ZTV6G0x0y5[6]),  6,7},
+};
+extern VTBL_ENTRY _ZTI6G0x0y5[];
+extern  VTBL_ENTRY _ZTV6G0x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y5[];
+Class_Descriptor cd_G0x0y5 = {  "G0x0y5", // class name
+  bases_G0x0y5, 6,
+  &(vtc_G0x0y5[0]), // expected_vtbl_contents
+  &(vtt_G0x0y5[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G0x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y5),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y5),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  G0x0y6  : E0x0 , virtual F0 {
+  int ff;
+  ~G0x0y6(); // tgen
+  G0x0y6(); // tgen
+};
+//SIG(1 G0x0y6) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G0x0y6 ::~G0x0y6(){ note_dtor("G0x0y6", this);} // tgen
+G0x0y6 ::G0x0y6(){ note_ctor("G0x0y6", this);} // tgen
+
+static void Test_G0x0y6()
+{
+  extern Class_Descriptor cd_G0x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,9)];
+    init_test(&cd_G0x0y6, buf);
+    G0x0y6 *dp, &lv = *(dp=new (buf) G0x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,32), "sizeof(G0x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y6)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(12,8), "G0x0y6");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(16,12), "G0x0y6");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(12,8), "G0x0y6");
+    check_base_class_offset(lv, (D1*)(E0x0*), 0, "G0x0y6");
+    check_base_class_offset(lv, (E0x0*), 0, "G0x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,28), "G0x0y6");
+    check_field_offset(lv, ff, ABISELECT(28,24), "G0x0y6.ff");
+    test_class_info(&lv, &cd_G0x0y6);
+    dp->~G0x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y6(Test_G0x0y6, "G0x0y6", ABISELECT(40,32));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y6C1Ev();
+extern void _ZN6G0x0y6D1Ev();
+Name_Map name_map_G0x0y6[] = {
+  NSPAIR(_ZN6G0x0y6C1Ev),
+  NSPAIR(_ZN6G0x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G0x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B0,    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_C0,    ABISELECT(12,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    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},
+  {&cd_F0,    ABISELECT(32,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
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G0x0y6[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G0x0y6[] = {
+  ABISELECT(32,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y6[];
+static  VTT_ENTRY vtt_G0x0y6[] = {
+  {&(_ZTV6G0x0y6[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G0x0y6[];
+extern  VTBL_ENTRY _ZTV6G0x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y6[];
+Class_Descriptor cd_G0x0y6 = {  "G0x0y6", // class name
+  bases_G0x0y6, 6,
+  &(vtc_G0x0y6[0]), // expected_vtbl_contents
+  &(vtt_G0x0y6[0]), // expected_vtt_contents
+  ABISELECT(40,32), // object size
+  NSPAIRA(_ZTI6G0x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y6),4, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y6),1, //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  G0x0y7  : virtual E0x0 , virtual F0 {
+  int ff;
+  ~G0x0y7(); // tgen
+  G0x0y7(); // tgen
+};
+//SIG(1 G0x0y7) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G0x0y7 ::~G0x0y7(){ note_dtor("G0x0y7", this);} // tgen
+G0x0y7 ::G0x0y7(){ note_ctor("G0x0y7", this);} // tgen
+
+static void Test_G0x0y7()
+{
+  extern Class_Descriptor cd_G0x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G0x0y7, buf);
+    G0x0y7 *dp, &lv = *(dp=new (buf) G0x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G0x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G0x0y7)");
+    check_base_class_offset(lv, (A0*)(C0*)(E0x0*), ABISELECT(28,16), "G0x0y7");
+    check_base_class_offset(lv, (B0*)(C0*)(E0x0*), ABISELECT(32,20), "G0x0y7");
+    check_base_class_offset(lv, (C0*)(E0x0*), ABISELECT(28,16), "G0x0y7");
+    check_base_class_offset(lv, (D1*)(E0x0*), ABISELECT(16,8), "G0x0y7");
+    check_base_class_offset(lv, (E0x0*), ABISELECT(16,8), "G0x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(44,32), "G0x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G0x0y7.ff");
+    test_class_info(&lv, &cd_G0x0y7);
+    dp->~G0x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG0x0y7(Test_G0x0y7, "G0x0y7", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G0x0y7C1Ev();
+extern void _ZN6G0x0y7D1Ev();
+Name_Map name_map_G0x0y7[] = {
+  NSPAIR(_ZN6G0x0y7C1Ev),
+  NSPAIR(_ZN6G0x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C0;
+extern VTBL_ENTRY _ZTI2C0[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E0x0;
+extern VTBL_ENTRY _ZTI4E0x0[];
+extern  VTBL_ENTRY _ZTV4E0x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G0x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C0,    ABISELECT(28,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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E0x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(44,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G0x0y7[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G0x0y7[] = {
+  ABISELECT(44,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G0x0y7[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G0x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G0x0y7[];
+static  VTT_ENTRY vtt_G0x0y7[] = {
+  {&(_ZTV6G0x0y7[4]),  4,8},
+  {&(_ZTV6G0x0y7[7]),  7,8},
+};
+extern VTBL_ENTRY _ZTI6G0x0y7[];
+extern  VTBL_ENTRY _ZTV6G0x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G0x0y7[];
+Class_Descriptor cd_G0x0y7 = {  "G0x0y7", // class name
+  bases_G0x0y7, 6,
+  &(vtc_G0x0y7[0]), // expected_vtbl_contents
+  &(vtt_G0x0y7[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G0x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G0x0y7),8, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G0x0y7),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  E1x0  : C1 , D1 {
+  int fd;
+  ~E1x0(); // tgen
+  E1x0(); // tgen
+};
+//SIG(-1 E1x0) C1{ BC2{ BC3{ v1 Fi} BC4{ Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E1x0 ::~E1x0(){ note_dtor("E1x0", this);} // tgen
+E1x0 ::E1x0(){ note_ctor("E1x0", this);} // tgen
+
+static void Test_E1x0()
+{
+  extern Class_Descriptor cd_E1x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E1x0, buf);
+    E1x0 *dp, &lv = *(dp=new (buf) E1x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E1x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E1x0)");
+    check_base_class_offset(lv, (A1*)(C1*), 0, "E1x0");
+    check_base_class_offset(lv, (B0*)(C1*), ABISELECT(12,8), "E1x0");
+    check_base_class_offset(lv, (C1*), 0, "E1x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(24,16), "E1x0");
+    check_field_offset(lv, fd, ABISELECT(36,24), "E1x0.fd");
+    test_class_info(&lv, &cd_E1x0);
+    dp->~E1x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE1x0(Test_E1x0, "E1x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E1x0C1Ev();
+extern void _ZN4E1x0D1Ev();
+Name_Map name_map_E1x0[] = {
+  NSPAIR(_ZN4E1x0C1Ev),
+  NSPAIR(_ZN4E1x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E1x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(12,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_C1,    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},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI4E1x0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E1x0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI4E1x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI4E1x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+Class_Descriptor cd_E1x0 = {  "E1x0", // class name
+  bases_E1x0, 4,
+  &(vtc_E1x0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E1x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E1x0),6, //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  G1x0y0  : E1x0 , F1 {
+  int ff;
+  ~G1x0y0(); // tgen
+  G1x0y0(); // tgen
+};
+//SIG(1 G1x0y0) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G1x0y0 ::~G1x0y0(){ note_dtor("G1x0y0", this);} // tgen
+G1x0y0 ::G1x0y0(){ note_ctor("G1x0y0", this);} // tgen
+
+static void Test_G1x0y0()
+{
+  extern Class_Descriptor cd_G1x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G1x0y0, buf);
+    G1x0y0 *dp, &lv = *(dp=new (buf) G1x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G1x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y0)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), 0, "G1x0y0");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(12,8), "G1x0y0");
+    check_base_class_offset(lv, (C1*)(E1x0*), 0, "G1x0y0");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(24,16), "G1x0y0");
+    check_base_class_offset(lv, (E1x0*), 0, "G1x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,28), "G1x0y0");
+    check_field_offset(lv, ff, ABISELECT(52,36), "G1x0y0.ff");
+    test_class_info(&lv, &cd_G1x0y0);
+    dp->~G1x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y0(Test_G1x0y0, "G1x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y0C1Ev();
+extern void _ZN6G1x0y0D1Ev();
+Name_Map name_map_G1x0y0[] = {
+  NSPAIR(_ZN6G1x0y0C1Ev),
+  NSPAIR(_ZN6G1x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G1x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(12,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,28), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G1x0y0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G1x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G1x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G1x0y0[];
+extern  VTBL_ENTRY _ZTV6G1x0y0[];
+Class_Descriptor cd_G1x0y0 = {  "G1x0y0", // class name
+  bases_G1x0y0, 6,
+  &(vtc_G1x0y0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G1x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y0),9, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  5, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y1  : virtual E1x0 , F1 {
+  int ff;
+  ~G1x0y1(); // tgen
+  G1x0y1(); // tgen
+};
+//SIG(1 G1x0y1) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G1x0y1 ::~G1x0y1(){ note_dtor("G1x0y1", this);} // tgen
+G1x0y1 ::G1x0y1(){ note_ctor("G1x0y1", this);} // tgen
+
+static void Test_G1x0y1()
+{
+  extern Class_Descriptor cd_G1x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G1x0y1, buf);
+    G1x0y1 *dp, &lv = *(dp=new (buf) G1x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G1x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y1)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), ABISELECT(16,12), "G1x0y1");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(28,20), "G1x0y1");
+    check_base_class_offset(lv, (C1*)(E1x0*), ABISELECT(16,12), "G1x0y1");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(40,28), "G1x0y1");
+    check_base_class_offset(lv, (E1x0*), ABISELECT(16,12), "G1x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G1x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G1x0y1.ff");
+    test_class_info(&lv, &cd_G1x0y1);
+    dp->~G1x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y1(Test_G1x0y1, "G1x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y1C1Ev();
+extern void _ZN6G1x0y1D1Ev();
+Name_Map name_map_G1x0y1[] = {
+  NSPAIR(_ZN6G1x0y1C1Ev),
+  NSPAIR(_ZN6G1x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G1x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C1,    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
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G1x0y1[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G1x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G1x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y1[];
+static  VTT_ENTRY vtt_G1x0y1[] = {
+  {&(_ZTV6G1x0y1[3]),  3,11},
+  {&(_ZTV6G1x0y1[7]),  7,11},
+  {&(_ZTV6G1x0y1[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G1x0y1[];
+extern  VTBL_ENTRY _ZTV6G1x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y1[];
+Class_Descriptor cd_G1x0y1 = {  "G1x0y1", // class name
+  bases_G1x0y1, 6,
+  &(vtc_G1x0y1[0]), // expected_vtbl_contents
+  &(vtt_G1x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G1x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y1),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y1),3, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y2  : E1x0 , virtual F1 {
+  int ff;
+  ~G1x0y2(); // tgen
+  G1x0y2(); // tgen
+};
+//SIG(1 G1x0y2) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G1x0y2 ::~G1x0y2(){ note_dtor("G1x0y2", this);} // tgen
+G1x0y2 ::G1x0y2(){ note_ctor("G1x0y2", this);} // tgen
+
+static void Test_G1x0y2()
+{
+  extern Class_Descriptor cd_G1x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G1x0y2, buf);
+    G1x0y2 *dp, &lv = *(dp=new (buf) G1x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G1x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y2)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), 0, "G1x0y2");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(12,8), "G1x0y2");
+    check_base_class_offset(lv, (C1*)(E1x0*), 0, "G1x0y2");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(24,16), "G1x0y2");
+    check_base_class_offset(lv, (E1x0*), 0, "G1x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G1x0y2");
+    check_field_offset(lv, ff, ABISELECT(40,28), "G1x0y2.ff");
+    test_class_info(&lv, &cd_G1x0y2);
+    dp->~G1x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y2(Test_G1x0y2, "G1x0y2", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y2C1Ev();
+extern void _ZN6G1x0y2D1Ev();
+Name_Map name_map_G1x0y2[] = {
+  NSPAIR(_ZN6G1x0y2C1Ev),
+  NSPAIR(_ZN6G1x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G1x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(12,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(48,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y2[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G1x0y2[] = {
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G1x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G1x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y2[];
+static  VTT_ENTRY vtt_G1x0y2[] = {
+  {&(_ZTV6G1x0y2[3]),  3,11},
+  {&(_ZTV6G1x0y2[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G1x0y2[];
+extern  VTBL_ENTRY _ZTV6G1x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y2[];
+Class_Descriptor cd_G1x0y2 = {  "G1x0y2", // class name
+  bases_G1x0y2, 6,
+  &(vtc_G1x0y2[0]), // expected_vtbl_contents
+  &(vtt_G1x0y2[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI6G1x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y2),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y2),2, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y3  : virtual E1x0 , virtual F1 {
+  int ff;
+  ~G1x0y3(); // tgen
+  G1x0y3(); // tgen
+};
+//SIG(1 G1x0y3) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G1x0y3 ::~G1x0y3(){ note_dtor("G1x0y3", this);} // tgen
+G1x0y3 ::G1x0y3(){ note_ctor("G1x0y3", this);} // tgen
+
+static void Test_G1x0y3()
+{
+  extern Class_Descriptor cd_G1x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G1x0y3, buf);
+    G1x0y3 *dp, &lv = *(dp=new (buf) G1x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G1x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y3)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), ABISELECT(16,8), "G1x0y3");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(28,16), "G1x0y3");
+    check_base_class_offset(lv, (C1*)(E1x0*), ABISELECT(16,8), "G1x0y3");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(40,24), "G1x0y3");
+    check_base_class_offset(lv, (E1x0*), ABISELECT(16,8), "G1x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G1x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G1x0y3.ff");
+    test_class_info(&lv, &cd_G1x0y3);
+    dp->~G1x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y3(Test_G1x0y3, "G1x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y3C1Ev();
+extern void _ZN6G1x0y3D1Ev();
+Name_Map name_map_G1x0y3[] = {
+  NSPAIR(_ZN6G1x0y3C1Ev),
+  NSPAIR(_ZN6G1x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G1x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B0,    ABISELECT(28,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y3[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G1x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y3[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G1x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI6G1x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G1x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y3[];
+static  VTT_ENTRY vtt_G1x0y3[] = {
+  {&(_ZTV6G1x0y3[4]),  4,15},
+  {&(_ZTV6G1x0y3[7]),  7,15},
+  {&(_ZTV6G1x0y3[10]),  10,15},
+  {&(_ZTV6G1x0y3[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI6G1x0y3[];
+extern  VTBL_ENTRY _ZTV6G1x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y3[];
+Class_Descriptor cd_G1x0y3 = {  "G1x0y3", // class name
+  bases_G1x0y3, 6,
+  &(vtc_G1x0y3[0]), // expected_vtbl_contents
+  &(vtt_G1x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G1x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y3),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y3),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y4  : E1x0 , F0 {
+  int ff;
+  ~G1x0y4(); // tgen
+  G1x0y4(); // tgen
+};
+//SIG(1 G1x0y4) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G1x0y4 ::~G1x0y4(){ note_dtor("G1x0y4", this);} // tgen
+G1x0y4 ::G1x0y4(){ note_ctor("G1x0y4", this);} // tgen
+
+static void Test_G1x0y4()
+{
+  extern Class_Descriptor cd_G1x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G1x0y4, buf);
+    G1x0y4 *dp, &lv = *(dp=new (buf) G1x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G1x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y4)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), 0, "G1x0y4");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(12,8), "G1x0y4");
+    check_base_class_offset(lv, (C1*)(E1x0*), 0, "G1x0y4");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(24,16), "G1x0y4");
+    check_base_class_offset(lv, (E1x0*), 0, "G1x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,28), "G1x0y4");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G1x0y4.ff");
+    test_class_info(&lv, &cd_G1x0y4);
+    dp->~G1x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y4(Test_G1x0y4, "G1x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y4C1Ev();
+extern void _ZN6G1x0y4D1Ev();
+Name_Map name_map_G1x0y4[] = {
+  NSPAIR(_ZN6G1x0y4C1Ev),
+  NSPAIR(_ZN6G1x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G1x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(12,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(40,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y4[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G1x0y4[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G1x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G1x0y4[];
+extern  VTBL_ENTRY _ZTV6G1x0y4[];
+Class_Descriptor cd_G1x0y4 = {  "G1x0y4", // class name
+  bases_G1x0y4, 6,
+  &(vtc_G1x0y4[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G1x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y4),6, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  4, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y5  : virtual E1x0 , F0 {
+  int ff;
+  ~G1x0y5(); // tgen
+  G1x0y5(); // tgen
+};
+//SIG(1 G1x0y5) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G1x0y5 ::~G1x0y5(){ note_dtor("G1x0y5", this);} // tgen
+G1x0y5 ::G1x0y5(){ note_ctor("G1x0y5", this);} // tgen
+
+static void Test_G1x0y5()
+{
+  extern Class_Descriptor cd_G1x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G1x0y5, buf);
+    G1x0y5 *dp, &lv = *(dp=new (buf) G1x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G1x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y5)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), ABISELECT(16,12), "G1x0y5");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(28,20), "G1x0y5");
+    check_base_class_offset(lv, (C1*)(E1x0*), ABISELECT(16,12), "G1x0y5");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(40,28), "G1x0y5");
+    check_base_class_offset(lv, (E1x0*), ABISELECT(16,12), "G1x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G1x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G1x0y5.ff");
+    test_class_info(&lv, &cd_G1x0y5);
+    dp->~G1x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y5(Test_G1x0y5, "G1x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y5C1Ev();
+extern void _ZN6G1x0y5D1Ev();
+Name_Map name_map_G1x0y5[] = {
+  NSPAIR(_ZN6G1x0y5C1Ev),
+  NSPAIR(_ZN6G1x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G1x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_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_B0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C1,    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
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G1x0y5[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G1x0y5[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y5[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G1x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G1x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y5[];
+static  VTT_ENTRY vtt_G1x0y5[] = {
+  {&(_ZTV6G1x0y5[3]),  3,10},
+  {&(_ZTV6G1x0y5[6]),  6,10},
+  {&(_ZTV6G1x0y5[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI6G1x0y5[];
+extern  VTBL_ENTRY _ZTV6G1x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y5[];
+Class_Descriptor cd_G1x0y5 = {  "G1x0y5", // class name
+  bases_G1x0y5, 6,
+  &(vtc_G1x0y5[0]), // expected_vtbl_contents
+  &(vtt_G1x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G1x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y5),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y5),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y6  : E1x0 , virtual F0 {
+  int ff;
+  ~G1x0y6(); // tgen
+  G1x0y6(); // tgen
+};
+//SIG(1 G1x0y6) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G1x0y6 ::~G1x0y6(){ note_dtor("G1x0y6", this);} // tgen
+G1x0y6 ::G1x0y6(){ note_ctor("G1x0y6", this);} // tgen
+
+static void Test_G1x0y6()
+{
+  extern Class_Descriptor cd_G1x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G1x0y6, buf);
+    G1x0y6 *dp, &lv = *(dp=new (buf) G1x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G1x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y6)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), 0, "G1x0y6");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(12,8), "G1x0y6");
+    check_base_class_offset(lv, (C1*)(E1x0*), 0, "G1x0y6");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(24,16), "G1x0y6");
+    check_base_class_offset(lv, (E1x0*), 0, "G1x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(44,32), "G1x0y6");
+    check_field_offset(lv, ff, ABISELECT(40,28), "G1x0y6.ff");
+    test_class_info(&lv, &cd_G1x0y6);
+    dp->~G1x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y6(Test_G1x0y6, "G1x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y6C1Ev();
+extern void _ZN6G1x0y6D1Ev();
+Name_Map name_map_G1x0y6[] = {
+  NSPAIR(_ZN6G1x0y6C1Ev),
+  NSPAIR(_ZN6G1x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G1x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(12,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(44,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y6[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G1x0y6[] = {
+  ABISELECT(44,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G1x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y6[];
+static  VTT_ENTRY vtt_G1x0y6[] = {
+  {&(_ZTV6G1x0y6[3]),  3,7},
+};
+extern VTBL_ENTRY _ZTI6G1x0y6[];
+extern  VTBL_ENTRY _ZTV6G1x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y6[];
+Class_Descriptor cd_G1x0y6 = {  "G1x0y6", // class name
+  bases_G1x0y6, 6,
+  &(vtc_G1x0y6[0]), // expected_vtbl_contents
+  &(vtt_G1x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G1x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y6),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y6),1, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G1x0y7  : virtual E1x0 , virtual F0 {
+  int ff;
+  ~G1x0y7(); // tgen
+  G1x0y7(); // tgen
+};
+//SIG(1 G1x0y7) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G1x0y7 ::~G1x0y7(){ note_dtor("G1x0y7", this);} // tgen
+G1x0y7 ::G1x0y7(){ note_ctor("G1x0y7", this);} // tgen
+
+static void Test_G1x0y7()
+{
+  extern Class_Descriptor cd_G1x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G1x0y7, buf);
+    G1x0y7 *dp, &lv = *(dp=new (buf) G1x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G1x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G1x0y7)");
+    check_base_class_offset(lv, (A1*)(C1*)(E1x0*), ABISELECT(16,8), "G1x0y7");
+    check_base_class_offset(lv, (B0*)(C1*)(E1x0*), ABISELECT(28,16), "G1x0y7");
+    check_base_class_offset(lv, (C1*)(E1x0*), ABISELECT(16,8), "G1x0y7");
+    check_base_class_offset(lv, (D1*)(E1x0*), ABISELECT(40,24), "G1x0y7");
+    check_base_class_offset(lv, (E1x0*), ABISELECT(16,8), "G1x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(56,36), "G1x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G1x0y7.ff");
+    test_class_info(&lv, &cd_G1x0y7);
+    dp->~G1x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG1x0y7(Test_G1x0y7, "G1x0y7", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN6G1x0y7C1Ev();
+extern void _ZN6G1x0y7D1Ev();
+Name_Map name_map_G1x0y7[] = {
+  NSPAIR(_ZN6G1x0y7C1Ev),
+  NSPAIR(_ZN6G1x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C1;
+extern VTBL_ENTRY _ZTI2C1[];
+extern  VTBL_ENTRY _ZTV2C1[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E1x0;
+extern VTBL_ENTRY _ZTI4E1x0[];
+extern  VTBL_ENTRY _ZTV4E1x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G1x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B0,    ABISELECT(28,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_C1,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E1x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(56,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G1x0y7[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G1x0y7[] = {
+  ABISELECT(56,36),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G1x0y7[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G1x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI6G1x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G1x0y7[];
+static  VTT_ENTRY vtt_G1x0y7[] = {
+  {&(_ZTV6G1x0y7[4]),  4,11},
+  {&(_ZTV6G1x0y7[7]),  7,11},
+  {&(_ZTV6G1x0y7[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G1x0y7[];
+extern  VTBL_ENTRY _ZTV6G1x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G1x0y7[];
+Class_Descriptor cd_G1x0y7 = {  "G1x0y7", // class name
+  bases_G1x0y7, 6,
+  &(vtc_G1x0y7[0]), // expected_vtbl_contents
+  &(vtt_G1x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI6G1x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G1x0y7),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G1x0y7),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E2x0  : C2 , D1 {
+  int fd;
+  ~E2x0(); // tgen
+  E2x0(); // tgen
+};
+//SIG(-1 E2x0) C1{ BC2{ VBC3{ Fi} BC4{ Fi} Fi} BC5{ v1 Fi} Fi}
+
+
+E2x0 ::~E2x0(){ note_dtor("E2x0", this);} // tgen
+E2x0 ::E2x0(){ note_ctor("E2x0", this);} // tgen
+
+static void Test_E2x0()
+{
+  extern Class_Descriptor cd_E2x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E2x0, buf);
+    E2x0 *dp, &lv = *(dp=new (buf) E2x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E2x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E2x0)");
+    check_base_class_offset(lv, (A0*)(C2*), ABISELECT(32,24), "E2x0");
+    check_base_class_offset(lv, (B0*)(C2*), ABISELECT(8,4), "E2x0");
+    check_base_class_offset(lv, (C2*), 0, "E2x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E2x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E2x0.fd");
+    test_class_info(&lv, &cd_E2x0);
+    dp->~E2x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE2x0(Test_E2x0, "E2x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E2x0C1Ev();
+extern void _ZN4E2x0D1Ev();
+Name_Map name_map_E2x0[] = {
+  NSPAIR(_ZN4E2x0C1Ev),
+  NSPAIR(_ZN4E2x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E2x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI4E2x0[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E2x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E2x0[];
+static  VTBL_ENTRY _tg__ZTV2C2__4E2x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_E2x0[] = {
+  {&(_ZTV4E2x0[3]),  3,6},
+  {&(_tg__ZTV2C2__4E2x0[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+Class_Descriptor cd_E2x0 = {  "E2x0", // class name
+  bases_E2x0, 4,
+  &(vtc_E2x0[0]), // expected_vtbl_contents
+  &(vtt_E2x0[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E2x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E2x0),6, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E2x0),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  G2x0y0  : E2x0 , F1 {
+  int ff;
+  ~G2x0y0(); // tgen
+  G2x0y0(); // tgen
+};
+//SIG(1 G2x0y0) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G2x0y0 ::~G2x0y0(){ note_dtor("G2x0y0", this);} // tgen
+G2x0y0 ::G2x0y0(){ note_ctor("G2x0y0", this);} // tgen
+
+static void Test_G2x0y0()
+{
+  extern Class_Descriptor cd_G2x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G2x0y0, buf);
+    G2x0y0 *dp, &lv = *(dp=new (buf) G2x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G2x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y0)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(48,36), "G2x0y0");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(8,4), "G2x0y0");
+    check_base_class_offset(lv, (C2*)(E2x0*), 0, "G2x0y0");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(16,12), "G2x0y0");
+    check_base_class_offset(lv, (E2x0*), 0, "G2x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G2x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G2x0y0.ff");
+    test_class_info(&lv, &cd_G2x0y0);
+    dp->~G2x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y0(Test_G2x0y0, "G2x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y0C1Ev();
+extern void _ZN6G2x0y0D1Ev();
+Name_Map name_map_G2x0y0[] = {
+  NSPAIR(_ZN6G2x0y0C1Ev),
+  NSPAIR(_ZN6G2x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G2x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G2x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G2x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y0[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y0[] = {
+  {&(_ZTV6G2x0y0[3]),  3,9},
+  {&(_tg__ZTV4E2x0__6G2x0y0[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y0[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y0[];
+extern  VTBL_ENTRY _ZTV6G2x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y0[];
+Class_Descriptor cd_G2x0y0 = {  "G2x0y0", // class name
+  bases_G2x0y0, 6,
+  &(vtc_G2x0y0[0]), // expected_vtbl_contents
+  &(vtt_G2x0y0[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G2x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y0),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y0),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G2x0y1  : virtual E2x0 , F1 {
+  int ff;
+  ~G2x0y1(); // tgen
+  G2x0y1(); // tgen
+};
+//SIG(1 G2x0y1) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G2x0y1 ::~G2x0y1(){ note_dtor("G2x0y1", this);} // tgen
+G2x0y1 ::G2x0y1(){ note_ctor("G2x0y1", this);} // tgen
+
+static void Test_G2x0y1()
+{
+  extern Class_Descriptor cd_G2x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G2x0y1, buf);
+    G2x0y1 *dp, &lv = *(dp=new (buf) G2x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G2x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y1)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(48,36), "G2x0y1");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(24,16), "G2x0y1");
+    check_base_class_offset(lv, (C2*)(E2x0*), ABISELECT(16,12), "G2x0y1");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(32,24), "G2x0y1");
+    check_base_class_offset(lv, (E2x0*), ABISELECT(16,12), "G2x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G2x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G2x0y1.ff");
+    test_class_info(&lv, &cd_G2x0y1);
+    dp->~G2x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y1(Test_G2x0y1, "G2x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y1C1Ev();
+extern void _ZN6G2x0y1D1Ev();
+Name_Map name_map_G2x0y1[] = {
+  NSPAIR(_ZN6G2x0y1C1Ev),
+  NSPAIR(_ZN6G2x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G2x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    ABISELECT(16,12), //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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    ABISELECT(16,12), //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},
+  {&cd_F1,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G2x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y1[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G2x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y1[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y1[] = {
+  {&(_ZTV6G2x0y1[4]),  4,12},
+  {&(_ZTV6G2x0y1[9]),  9,12},
+  {&(_ZTV6G2x0y1[11]),  11,12},
+  {&(_tg__ZTV4E2x0__6G2x0y1[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y1[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y1[];
+extern  VTBL_ENTRY _ZTV6G2x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y1[];
+Class_Descriptor cd_G2x0y1 = {  "G2x0y1", // class name
+  bases_G2x0y1, 6,
+  &(vtc_G2x0y1[0]), // expected_vtbl_contents
+  &(vtt_G2x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G2x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y1),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y1),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G2x0y2  : E2x0 , virtual F1 {
+  int ff;
+  ~G2x0y2(); // tgen
+  G2x0y2(); // tgen
+};
+//SIG(1 G2x0y2) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G2x0y2 ::~G2x0y2(){ note_dtor("G2x0y2", this);} // tgen
+G2x0y2 ::G2x0y2(){ note_ctor("G2x0y2", this);} // tgen
+
+static void Test_G2x0y2()
+{
+  extern Class_Descriptor cd_G2x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G2x0y2, buf);
+    G2x0y2 *dp, &lv = *(dp=new (buf) G2x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G2x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y2)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(36,28), "G2x0y2");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(8,4), "G2x0y2");
+    check_base_class_offset(lv, (C2*)(E2x0*), 0, "G2x0y2");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(16,12), "G2x0y2");
+    check_base_class_offset(lv, (E2x0*), 0, "G2x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,32), "G2x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G2x0y2.ff");
+    test_class_info(&lv, &cd_G2x0y2);
+    dp->~G2x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y2(Test_G2x0y2, "G2x0y2", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y2C1Ev();
+extern void _ZN6G2x0y2D1Ev();
+Name_Map name_map_G2x0y2[] = {
+  NSPAIR(_ZN6G2x0y2C1Ev),
+  NSPAIR(_ZN6G2x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G2x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G2x0y2[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y2[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G2x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y2[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y2[] = {
+  {&(_ZTV6G2x0y2[4]),  4,11},
+  {&(_tg__ZTV4E2x0__6G2x0y2[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y2[3]),  3,3},
+  {&(_ZTV6G2x0y2[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G2x0y2[];
+extern  VTBL_ENTRY _ZTV6G2x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y2[];
+Class_Descriptor cd_G2x0y2 = {  "G2x0y2", // class name
+  bases_G2x0y2, 6,
+  &(vtc_G2x0y2[0]), // expected_vtbl_contents
+  &(vtt_G2x0y2[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G2x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y2),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y2),4, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G2x0y3  : virtual E2x0 , virtual F1 {
+  int ff;
+  ~G2x0y3(); // tgen
+  G2x0y3(); // tgen
+};
+//SIG(1 G2x0y3) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G2x0y3 ::~G2x0y3(){ note_dtor("G2x0y3", this);} // tgen
+G2x0y3 ::G2x0y3(){ note_ctor("G2x0y3", this);} // tgen
+
+static void Test_G2x0y3()
+{
+  extern Class_Descriptor cd_G2x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G2x0y3, buf);
+    G2x0y3 *dp, &lv = *(dp=new (buf) G2x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G2x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y3)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(48,32), "G2x0y3");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(24,12), "G2x0y3");
+    check_base_class_offset(lv, (C2*)(E2x0*), ABISELECT(16,8), "G2x0y3");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(32,20), "G2x0y3");
+    check_base_class_offset(lv, (E2x0*), ABISELECT(16,8), "G2x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G2x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G2x0y3.ff");
+    test_class_info(&lv, &cd_G2x0y3);
+    dp->~G2x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y3(Test_G2x0y3, "G2x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y3C1Ev();
+extern void _ZN6G2x0y3D1Ev();
+Name_Map name_map_G2x0y3[] = {
+  NSPAIR(_ZN6G2x0y3C1Ev),
+  NSPAIR(_ZN6G2x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G2x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G2x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y3[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G2x0y3[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G2x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G2x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y3[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y3[] = {
+  {&(_ZTV6G2x0y3[5]),  5,16},
+  {&(_ZTV6G2x0y3[9]),  9,16},
+  {&(_ZTV6G2x0y3[11]),  11,16},
+  {&(_ZTV6G2x0y3[15]),  15,16},
+  {&(_tg__ZTV4E2x0__6G2x0y3[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y3[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y3[];
+extern  VTBL_ENTRY _ZTV6G2x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y3[];
+Class_Descriptor cd_G2x0y3 = {  "G2x0y3", // class name
+  bases_G2x0y3, 6,
+  &(vtc_G2x0y3[0]), // expected_vtbl_contents
+  &(vtt_G2x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G2x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y3),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y3),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G2x0y4  : E2x0 , F0 {
+  int ff;
+  ~G2x0y4(); // tgen
+  G2x0y4(); // tgen
+};
+//SIG(1 G2x0y4) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G2x0y4 ::~G2x0y4(){ note_dtor("G2x0y4", this);} // tgen
+G2x0y4 ::G2x0y4(){ note_ctor("G2x0y4", this);} // tgen
+
+static void Test_G2x0y4()
+{
+  extern Class_Descriptor cd_G2x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G2x0y4, buf);
+    G2x0y4 *dp, &lv = *(dp=new (buf) G2x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G2x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y4)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(40,32), "G2x0y4");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(8,4), "G2x0y4");
+    check_base_class_offset(lv, (C2*)(E2x0*), 0, "G2x0y4");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(16,12), "G2x0y4");
+    check_base_class_offset(lv, (E2x0*), 0, "G2x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G2x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G2x0y4.ff");
+    test_class_info(&lv, &cd_G2x0y4);
+    dp->~G2x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y4(Test_G2x0y4, "G2x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y4C1Ev();
+extern void _ZN6G2x0y4D1Ev();
+Name_Map name_map_G2x0y4[] = {
+  NSPAIR(_ZN6G2x0y4C1Ev),
+  NSPAIR(_ZN6G2x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G2x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y4[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G2x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y4[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y4[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y4[] = {
+  {&(_ZTV6G2x0y4[3]),  3,6},
+  {&(_tg__ZTV4E2x0__6G2x0y4[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y4[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y4[];
+extern  VTBL_ENTRY _ZTV6G2x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y4[];
+Class_Descriptor cd_G2x0y4 = {  "G2x0y4", // class name
+  bases_G2x0y4, 6,
+  &(vtc_G2x0y4[0]), // expected_vtbl_contents
+  &(vtt_G2x0y4[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G2x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y4),6, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y4),3, //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  G2x0y5  : virtual E2x0 , F0 {
+  int ff;
+  ~G2x0y5(); // tgen
+  G2x0y5(); // tgen
+};
+//SIG(1 G2x0y5) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G2x0y5 ::~G2x0y5(){ note_dtor("G2x0y5", this);} // tgen
+G2x0y5 ::G2x0y5(){ note_ctor("G2x0y5", this);} // tgen
+
+static void Test_G2x0y5()
+{
+  extern Class_Descriptor cd_G2x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G2x0y5, buf);
+    G2x0y5 *dp, &lv = *(dp=new (buf) G2x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G2x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y5)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(48,36), "G2x0y5");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(24,16), "G2x0y5");
+    check_base_class_offset(lv, (C2*)(E2x0*), ABISELECT(16,12), "G2x0y5");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(32,24), "G2x0y5");
+    check_base_class_offset(lv, (E2x0*), ABISELECT(16,12), "G2x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G2x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G2x0y5.ff");
+    test_class_info(&lv, &cd_G2x0y5);
+    dp->~G2x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y5(Test_G2x0y5, "G2x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y5C1Ev();
+extern void _ZN6G2x0y5D1Ev();
+Name_Map name_map_G2x0y5[] = {
+  NSPAIR(_ZN6G2x0y5C1Ev),
+  NSPAIR(_ZN6G2x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G2x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    ABISELECT(16,12), //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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    ABISELECT(16,12), //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},
+  {&cd_F0,    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 _ZTI6G2x0y5[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G2x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y5[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y5[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G2x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y5[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y5[] = {
+  {&(_ZTV6G2x0y5[4]),  4,11},
+  {&(_ZTV6G2x0y5[8]),  8,11},
+  {&(_ZTV6G2x0y5[10]),  10,11},
+  {&(_tg__ZTV4E2x0__6G2x0y5[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y5[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y5[];
+extern  VTBL_ENTRY _ZTV6G2x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y5[];
+Class_Descriptor cd_G2x0y5 = {  "G2x0y5", // class name
+  bases_G2x0y5, 6,
+  &(vtc_G2x0y5[0]), // expected_vtbl_contents
+  &(vtt_G2x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G2x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y5),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y5),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  G2x0y6  : E2x0 , virtual F0 {
+  int ff;
+  ~G2x0y6(); // tgen
+  G2x0y6(); // tgen
+};
+//SIG(1 G2x0y6) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G2x0y6 ::~G2x0y6(){ note_dtor("G2x0y6", this);} // tgen
+G2x0y6 ::G2x0y6(){ note_ctor("G2x0y6", this);} // tgen
+
+static void Test_G2x0y6()
+{
+  extern Class_Descriptor cd_G2x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G2x0y6, buf);
+    G2x0y6 *dp, &lv = *(dp=new (buf) G2x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G2x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y6)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(36,28), "G2x0y6");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(8,4), "G2x0y6");
+    check_base_class_offset(lv, (C2*)(E2x0*), 0, "G2x0y6");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(16,12), "G2x0y6");
+    check_base_class_offset(lv, (E2x0*), 0, "G2x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,32), "G2x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G2x0y6.ff");
+    test_class_info(&lv, &cd_G2x0y6);
+    dp->~G2x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y6(Test_G2x0y6, "G2x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y6C1Ev();
+extern void _ZN6G2x0y6D1Ev();
+Name_Map name_map_G2x0y6[] = {
+  NSPAIR(_ZN6G2x0y6C1Ev),
+  NSPAIR(_ZN6G2x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G2x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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},
+  {&cd_F0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y6[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G2x0y6[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y6[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G2x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y6[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y6[] = {
+  {&(_ZTV6G2x0y6[4]),  4,7},
+  {&(_tg__ZTV4E2x0__6G2x0y6[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y6[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y6[];
+extern  VTBL_ENTRY _ZTV6G2x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y6[];
+Class_Descriptor cd_G2x0y6 = {  "G2x0y6", // class name
+  bases_G2x0y6, 6,
+  &(vtc_G2x0y6[0]), // expected_vtbl_contents
+  &(vtt_G2x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G2x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y6),7, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y6),3, //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  G2x0y7  : virtual E2x0 , virtual F0 {
+  int ff;
+  ~G2x0y7(); // tgen
+  G2x0y7(); // tgen
+};
+//SIG(1 G2x0y7) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G2x0y7 ::~G2x0y7(){ note_dtor("G2x0y7", this);} // tgen
+G2x0y7 ::G2x0y7(){ note_ctor("G2x0y7", this);} // tgen
+
+static void Test_G2x0y7()
+{
+  extern Class_Descriptor cd_G2x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G2x0y7, buf);
+    G2x0y7 *dp, &lv = *(dp=new (buf) G2x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G2x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G2x0y7)");
+    check_base_class_offset(lv, (A0*)(C2*)(E2x0*), ABISELECT(48,32), "G2x0y7");
+    check_base_class_offset(lv, (B0*)(C2*)(E2x0*), ABISELECT(24,12), "G2x0y7");
+    check_base_class_offset(lv, (C2*)(E2x0*), ABISELECT(16,8), "G2x0y7");
+    check_base_class_offset(lv, (D1*)(E2x0*), ABISELECT(32,20), "G2x0y7");
+    check_base_class_offset(lv, (E2x0*), ABISELECT(16,8), "G2x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G2x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G2x0y7.ff");
+    test_class_info(&lv, &cd_G2x0y7);
+    dp->~G2x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG2x0y7(Test_G2x0y7, "G2x0y7", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G2x0y7C1Ev();
+extern void _ZN6G2x0y7D1Ev();
+Name_Map name_map_G2x0y7[] = {
+  NSPAIR(_ZN6G2x0y7C1Ev),
+  NSPAIR(_ZN6G2x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C2;
+extern VTBL_ENTRY _ZTI2C2[];
+extern  VTBL_ENTRY _ZTV2C2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C2[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E2x0;
+extern VTBL_ENTRY _ZTI4E2x0[];
+extern  VTBL_ENTRY _ZTV4E2x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E2x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G2x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C2,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E2x0,    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},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G2x0y7[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G2x0y7[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G2x0y7[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G2x0y7[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G2x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G2x0y7[];
+static  VTBL_ENTRY _tg__ZTV4E2x0__6G2x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E2x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C24E2x0__6G2x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C2[0]),
+};
+static  VTT_ENTRY vtt_G2x0y7[] = {
+  {&(_ZTV6G2x0y7[5]),  5,12},
+  {&(_ZTV6G2x0y7[9]),  9,12},
+  {&(_ZTV6G2x0y7[11]),  11,12},
+  {&(_tg__ZTV4E2x0__6G2x0y7[3]),  3,3},
+  {&(_tg__ZTV2C24E2x0__6G2x0y7[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G2x0y7[];
+extern  VTBL_ENTRY _ZTV6G2x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G2x0y7[];
+Class_Descriptor cd_G2x0y7 = {  "G2x0y7", // class name
+  bases_G2x0y7, 6,
+  &(vtc_G2x0y7[0]), // expected_vtbl_contents
+  &(vtt_G2x0y7[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G2x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G2x0y7),12, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G2x0y7),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  E3x0  : C3 , D1 {
+  int fd;
+  ~E3x0(); // tgen
+  E3x0(); // tgen
+};
+//SIG(-1 E3x0) C1{ BC2{ VBC3{ v1 Fi} BC4{ Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E3x0 ::~E3x0(){ note_dtor("E3x0", this);} // tgen
+E3x0 ::E3x0(){ note_ctor("E3x0", this);} // tgen
+
+static void Test_E3x0()
+{
+  extern Class_Descriptor cd_E3x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E3x0, buf);
+    E3x0 *dp, &lv = *(dp=new (buf) E3x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E3x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E3x0)");
+    check_base_class_offset(lv, (A1*)(C3*), ABISELECT(32,24), "E3x0");
+    check_base_class_offset(lv, (B0*)(C3*), ABISELECT(8,4), "E3x0");
+    check_base_class_offset(lv, (C3*), 0, "E3x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E3x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E3x0.fd");
+    test_class_info(&lv, &cd_E3x0);
+    dp->~E3x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE3x0(Test_E3x0, "E3x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN4E3x0C1Ev();
+extern void _ZN4E3x0D1Ev();
+Name_Map name_map_E3x0[] = {
+  NSPAIR(_ZN4E3x0C1Ev),
+  NSPAIR(_ZN4E3x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E3x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI4E3x0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_E3x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E3x0[];
+static  VTBL_ENTRY _tg__ZTV2C3__4E3x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C3__4E3x0[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_E3x0[] = {
+  {&(_ZTV4E3x0[3]),  3,10},
+  {&(_tg__ZTV2C3__4E3x0[3]),  3,3},
+  {&(_tg__ZTV2A1__2C3__4E3x0[3]),  3,4},
+  {&(_ZTV4E3x0[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+Class_Descriptor cd_E3x0 = {  "E3x0", // class name
+  bases_E3x0, 4,
+  &(vtc_E3x0[0]), // expected_vtbl_contents
+  &(vtt_E3x0[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI4E3x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E3x0),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E3x0),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  G3x0y0  : E3x0 , F1 {
+  int ff;
+  ~G3x0y0(); // tgen
+  G3x0y0(); // tgen
+};
+//SIG(1 G3x0y0) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G3x0y0 ::~G3x0y0(){ note_dtor("G3x0y0", this);} // tgen
+G3x0y0 ::G3x0y0(){ note_ctor("G3x0y0", this);} // tgen
+
+static void Test_G3x0y0()
+{
+  extern Class_Descriptor cd_G3x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G3x0y0, buf);
+    G3x0y0 *dp, &lv = *(dp=new (buf) G3x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G3x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y0)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(48,36), "G3x0y0");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(8,4), "G3x0y0");
+    check_base_class_offset(lv, (C3*)(E3x0*), 0, "G3x0y0");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(16,12), "G3x0y0");
+    check_base_class_offset(lv, (E3x0*), 0, "G3x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G3x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G3x0y0.ff");
+    test_class_info(&lv, &cd_G3x0y0);
+    dp->~G3x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y0(Test_G3x0y0, "G3x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y0C1Ev();
+extern void _ZN6G3x0y0D1Ev();
+Name_Map name_map_G3x0y0[] = {
+  NSPAIR(_ZN6G3x0y0C1Ev),
+  NSPAIR(_ZN6G3x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G3x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G3x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G3x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y0[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y0[] = {
+  {&(_ZTV6G3x0y0[3]),  3,13},
+  {&(_tg__ZTV4E3x0__6G3x0y0[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y0[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y0[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y0[3]),  3,4},
+  {&(_ZTV6G3x0y0[12]),  12,13},
+};
+extern VTBL_ENTRY _ZTI6G3x0y0[];
+extern  VTBL_ENTRY _ZTV6G3x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y0[];
+Class_Descriptor cd_G3x0y0 = {  "G3x0y0", // class name
+  bases_G3x0y0, 6,
+  &(vtc_G3x0y0[0]), // expected_vtbl_contents
+  &(vtt_G3x0y0[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G3x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y0),13, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y0),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y1  : virtual E3x0 , F1 {
+  int ff;
+  ~G3x0y1(); // tgen
+  G3x0y1(); // tgen
+};
+//SIG(1 G3x0y1) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G3x0y1 ::~G3x0y1(){ note_dtor("G3x0y1", this);} // tgen
+G3x0y1 ::G3x0y1(){ note_ctor("G3x0y1", this);} // tgen
+
+static void Test_G3x0y1()
+{
+  extern Class_Descriptor cd_G3x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G3x0y1, buf);
+    G3x0y1 *dp, &lv = *(dp=new (buf) G3x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G3x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y1)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(48,36), "G3x0y1");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(24,16), "G3x0y1");
+    check_base_class_offset(lv, (C3*)(E3x0*), ABISELECT(16,12), "G3x0y1");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(32,24), "G3x0y1");
+    check_base_class_offset(lv, (E3x0*), ABISELECT(16,12), "G3x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G3x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G3x0y1.ff");
+    test_class_info(&lv, &cd_G3x0y1);
+    dp->~G3x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y1(Test_G3x0y1, "G3x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y1C1Ev();
+extern void _ZN6G3x0y1D1Ev();
+Name_Map name_map_G3x0y1[] = {
+  NSPAIR(_ZN6G3x0y1C1Ev),
+  NSPAIR(_ZN6G3x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G3x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y1[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G3x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G3x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y1[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y1[] = {
+  {&(_ZTV6G3x0y1[4]),  4,16},
+  {&(_ZTV6G3x0y1[9]),  9,16},
+  {&(_ZTV6G3x0y1[15]),  15,16},
+  {&(_ZTV6G3x0y1[11]),  11,16},
+  {&(_tg__ZTV4E3x0__6G3x0y1[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y1[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y1[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G3x0y1[];
+extern  VTBL_ENTRY _ZTV6G3x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y1[];
+Class_Descriptor cd_G3x0y1 = {  "G3x0y1", // class name
+  bases_G3x0y1, 6,
+  &(vtc_G3x0y1[0]), // expected_vtbl_contents
+  &(vtt_G3x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G3x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y1),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y1),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y2  : E3x0 , virtual F1 {
+  int ff;
+  ~G3x0y2(); // tgen
+  G3x0y2(); // tgen
+};
+//SIG(1 G3x0y2) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G3x0y2 ::~G3x0y2(){ note_dtor("G3x0y2", this);} // tgen
+G3x0y2 ::G3x0y2(){ note_ctor("G3x0y2", this);} // tgen
+
+static void Test_G3x0y2()
+{
+  extern Class_Descriptor cd_G3x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G3x0y2, buf);
+    G3x0y2 *dp, &lv = *(dp=new (buf) G3x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G3x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y2)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(40,28), "G3x0y2");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(8,4), "G3x0y2");
+    check_base_class_offset(lv, (C3*)(E3x0*), 0, "G3x0y2");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(16,12), "G3x0y2");
+    check_base_class_offset(lv, (E3x0*), 0, "G3x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G3x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G3x0y2.ff");
+    test_class_info(&lv, &cd_G3x0y2);
+    dp->~G3x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y2(Test_G3x0y2, "G3x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y2C1Ev();
+extern void _ZN6G3x0y2D1Ev();
+Name_Map name_map_G3x0y2[] = {
+  NSPAIR(_ZN6G3x0y2C1Ev),
+  NSPAIR(_ZN6G3x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G3x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI6G3x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G3x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y2[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G3x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G3x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y2[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y2[] = {
+  {&(_ZTV6G3x0y2[4]),  4,15},
+  {&(_tg__ZTV4E3x0__6G3x0y2[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y2[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y2[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y2[3]),  3,4},
+  {&(_ZTV6G3x0y2[10]),  10,15},
+  {&(_ZTV6G3x0y2[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI6G3x0y2[];
+extern  VTBL_ENTRY _ZTV6G3x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y2[];
+Class_Descriptor cd_G3x0y2 = {  "G3x0y2", // class name
+  bases_G3x0y2, 6,
+  &(vtc_G3x0y2[0]), // expected_vtbl_contents
+  &(vtt_G3x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G3x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y2),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y2),7, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y3  : virtual E3x0 , virtual F1 {
+  int ff;
+  ~G3x0y3(); // tgen
+  G3x0y3(); // tgen
+};
+//SIG(1 G3x0y3) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G3x0y3 ::~G3x0y3(){ note_dtor("G3x0y3", this);} // tgen
+G3x0y3 ::G3x0y3(){ note_ctor("G3x0y3", this);} // tgen
+
+static void Test_G3x0y3()
+{
+  extern Class_Descriptor cd_G3x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G3x0y3, buf);
+    G3x0y3 *dp, &lv = *(dp=new (buf) G3x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G3x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y3)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(48,32), "G3x0y3");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(24,12), "G3x0y3");
+    check_base_class_offset(lv, (C3*)(E3x0*), ABISELECT(16,8), "G3x0y3");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(32,20), "G3x0y3");
+    check_base_class_offset(lv, (E3x0*), ABISELECT(16,8), "G3x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G3x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G3x0y3.ff");
+    test_class_info(&lv, &cd_G3x0y3);
+    dp->~G3x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y3(Test_G3x0y3, "G3x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y3C1Ev();
+extern void _ZN6G3x0y3D1Ev();
+Name_Map name_map_G3x0y3[] = {
+  NSPAIR(_ZN6G3x0y3C1Ev),
+  NSPAIR(_ZN6G3x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G3x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G3x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y3[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G3x0y3[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G3x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G3x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI6G3x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y3[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y3[] = {
+  {&(_ZTV6G3x0y3[5]),  5,20},
+  {&(_ZTV6G3x0y3[9]),  9,20},
+  {&(_ZTV6G3x0y3[15]),  15,20},
+  {&(_ZTV6G3x0y3[11]),  11,20},
+  {&(_ZTV6G3x0y3[19]),  19,20},
+  {&(_tg__ZTV4E3x0__6G3x0y3[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y3[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y3[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G3x0y3[];
+extern  VTBL_ENTRY _ZTV6G3x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y3[];
+Class_Descriptor cd_G3x0y3 = {  "G3x0y3", // class name
+  bases_G3x0y3, 6,
+  &(vtc_G3x0y3[0]), // expected_vtbl_contents
+  &(vtt_G3x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI6G3x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y3),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y3),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y4  : E3x0 , F0 {
+  int ff;
+  ~G3x0y4(); // tgen
+  G3x0y4(); // tgen
+};
+//SIG(1 G3x0y4) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G3x0y4 ::~G3x0y4(){ note_dtor("G3x0y4", this);} // tgen
+G3x0y4 ::G3x0y4(){ note_ctor("G3x0y4", this);} // tgen
+
+static void Test_G3x0y4()
+{
+  extern Class_Descriptor cd_G3x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G3x0y4, buf);
+    G3x0y4 *dp, &lv = *(dp=new (buf) G3x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G3x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y4)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(40,32), "G3x0y4");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(8,4), "G3x0y4");
+    check_base_class_offset(lv, (C3*)(E3x0*), 0, "G3x0y4");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(16,12), "G3x0y4");
+    check_base_class_offset(lv, (E3x0*), 0, "G3x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G3x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G3x0y4.ff");
+    test_class_info(&lv, &cd_G3x0y4);
+    dp->~G3x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y4(Test_G3x0y4, "G3x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y4C1Ev();
+extern void _ZN6G3x0y4D1Ev();
+Name_Map name_map_G3x0y4[] = {
+  NSPAIR(_ZN6G3x0y4C1Ev),
+  NSPAIR(_ZN6G3x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G3x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,32), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y4[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y4[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G3x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y4[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y4[] = {
+  {&(_ZTV6G3x0y4[3]),  3,10},
+  {&(_tg__ZTV4E3x0__6G3x0y4[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y4[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y4[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y4[3]),  3,4},
+  {&(_ZTV6G3x0y4[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI6G3x0y4[];
+extern  VTBL_ENTRY _ZTV6G3x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y4[];
+Class_Descriptor cd_G3x0y4 = {  "G3x0y4", // class name
+  bases_G3x0y4, 6,
+  &(vtc_G3x0y4[0]), // expected_vtbl_contents
+  &(vtt_G3x0y4[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G3x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y4),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y4),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y5  : virtual E3x0 , F0 {
+  int ff;
+  ~G3x0y5(); // tgen
+  G3x0y5(); // tgen
+};
+//SIG(1 G3x0y5) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G3x0y5 ::~G3x0y5(){ note_dtor("G3x0y5", this);} // tgen
+G3x0y5 ::G3x0y5(){ note_ctor("G3x0y5", this);} // tgen
+
+static void Test_G3x0y5()
+{
+  extern Class_Descriptor cd_G3x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G3x0y5, buf);
+    G3x0y5 *dp, &lv = *(dp=new (buf) G3x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G3x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y5)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(48,36), "G3x0y5");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(24,16), "G3x0y5");
+    check_base_class_offset(lv, (C3*)(E3x0*), ABISELECT(16,12), "G3x0y5");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(32,24), "G3x0y5");
+    check_base_class_offset(lv, (E3x0*), ABISELECT(16,12), "G3x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G3x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G3x0y5.ff");
+    test_class_info(&lv, &cd_G3x0y5);
+    dp->~G3x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y5(Test_G3x0y5, "G3x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y5C1Ev();
+extern void _ZN6G3x0y5D1Ev();
+Name_Map name_map_G3x0y5[] = {
+  NSPAIR(_ZN6G3x0y5C1Ev),
+  NSPAIR(_ZN6G3x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G3x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    ABISELECT(16,12), //bcp->offset
+    4, //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G3x0y5[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y5[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y5[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G3x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G3x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y5[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y5[] = {
+  {&(_ZTV6G3x0y5[4]),  4,15},
+  {&(_ZTV6G3x0y5[8]),  8,15},
+  {&(_ZTV6G3x0y5[14]),  14,15},
+  {&(_ZTV6G3x0y5[10]),  10,15},
+  {&(_tg__ZTV4E3x0__6G3x0y5[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y5[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y5[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G3x0y5[];
+extern  VTBL_ENTRY _ZTV6G3x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y5[];
+Class_Descriptor cd_G3x0y5 = {  "G3x0y5", // class name
+  bases_G3x0y5, 6,
+  &(vtc_G3x0y5[0]), // expected_vtbl_contents
+  &(vtt_G3x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G3x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y5),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y5),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y6  : E3x0 , virtual F0 {
+  int ff;
+  ~G3x0y6(); // tgen
+  G3x0y6(); // tgen
+};
+//SIG(1 G3x0y6) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G3x0y6 ::~G3x0y6(){ note_dtor("G3x0y6", this);} // tgen
+G3x0y6 ::G3x0y6(){ note_ctor("G3x0y6", this);} // tgen
+
+static void Test_G3x0y6()
+{
+  extern Class_Descriptor cd_G3x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G3x0y6, buf);
+    G3x0y6 *dp, &lv = *(dp=new (buf) G3x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G3x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y6)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(40,28), "G3x0y6");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(8,4), "G3x0y6");
+    check_base_class_offset(lv, (C3*)(E3x0*), 0, "G3x0y6");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(16,12), "G3x0y6");
+    check_base_class_offset(lv, (E3x0*), 0, "G3x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G3x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G3x0y6.ff");
+    test_class_info(&lv, &cd_G3x0y6);
+    dp->~G3x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y6(Test_G3x0y6, "G3x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y6C1Ev();
+extern void _ZN6G3x0y6D1Ev();
+Name_Map name_map_G3x0y6[] = {
+  NSPAIR(_ZN6G3x0y6C1Ev),
+  NSPAIR(_ZN6G3x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G3x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y6[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y6[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y6[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G3x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G3x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y6[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y6[] = {
+  {&(_ZTV6G3x0y6[4]),  4,11},
+  {&(_tg__ZTV4E3x0__6G3x0y6[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y6[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y6[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y6[3]),  3,4},
+  {&(_ZTV6G3x0y6[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G3x0y6[];
+extern  VTBL_ENTRY _ZTV6G3x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y6[];
+Class_Descriptor cd_G3x0y6 = {  "G3x0y6", // class name
+  bases_G3x0y6, 6,
+  &(vtc_G3x0y6[0]), // expected_vtbl_contents
+  &(vtt_G3x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G3x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y6),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y6),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G3x0y7  : virtual E3x0 , virtual F0 {
+  int ff;
+  ~G3x0y7(); // tgen
+  G3x0y7(); // tgen
+};
+//SIG(1 G3x0y7) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G3x0y7 ::~G3x0y7(){ note_dtor("G3x0y7", this);} // tgen
+G3x0y7 ::G3x0y7(){ note_ctor("G3x0y7", this);} // tgen
+
+static void Test_G3x0y7()
+{
+  extern Class_Descriptor cd_G3x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G3x0y7, buf);
+    G3x0y7 *dp, &lv = *(dp=new (buf) G3x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G3x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G3x0y7)");
+    check_base_class_offset(lv, (A1*)(C3*)(E3x0*), ABISELECT(48,32), "G3x0y7");
+    check_base_class_offset(lv, (B0*)(C3*)(E3x0*), ABISELECT(24,12), "G3x0y7");
+    check_base_class_offset(lv, (C3*)(E3x0*), ABISELECT(16,8), "G3x0y7");
+    check_base_class_offset(lv, (D1*)(E3x0*), ABISELECT(32,20), "G3x0y7");
+    check_base_class_offset(lv, (E3x0*), ABISELECT(16,8), "G3x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(60,40), "G3x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G3x0y7.ff");
+    test_class_info(&lv, &cd_G3x0y7);
+    dp->~G3x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG3x0y7(Test_G3x0y7, "G3x0y7", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G3x0y7C1Ev();
+extern void _ZN6G3x0y7D1Ev();
+Name_Map name_map_G3x0y7[] = {
+  NSPAIR(_ZN6G3x0y7C1Ev),
+  NSPAIR(_ZN6G3x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C3;
+extern VTBL_ENTRY _ZTI2C3[];
+extern  VTBL_ENTRY _ZTV2C3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C3[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E3x0;
+extern VTBL_ENTRY _ZTI4E3x0[];
+extern  VTBL_ENTRY _ZTV4E3x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E3x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G3x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_B0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C3,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E3x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G3x0y7[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G3x0y7[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G3x0y7[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G3x0y7[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G3x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G3x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G3x0y7[];
+static  VTBL_ENTRY _tg__ZTV4E3x0__6G3x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C34E3x0__6G3x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C34E3x0__6G3x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E3x0__6G3x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E3x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G3x0y7[] = {
+  {&(_ZTV6G3x0y7[5]),  5,16},
+  {&(_ZTV6G3x0y7[9]),  9,16},
+  {&(_ZTV6G3x0y7[15]),  15,16},
+  {&(_ZTV6G3x0y7[11]),  11,16},
+  {&(_tg__ZTV4E3x0__6G3x0y7[3]),  3,3},
+  {&(_tg__ZTV2C34E3x0__6G3x0y7[3]),  3,3},
+  {&(_tg__ZTV2A1__2C34E3x0__6G3x0y7[3]),  3,4},
+  {&(_tg__ZTV2A1__4E3x0__6G3x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G3x0y7[];
+extern  VTBL_ENTRY _ZTV6G3x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G3x0y7[];
+Class_Descriptor cd_G3x0y7 = {  "G3x0y7", // class name
+  bases_G3x0y7, 6,
+  &(vtc_G3x0y7[0]), // expected_vtbl_contents
+  &(vtt_G3x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G3x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G3x0y7),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G3x0y7),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E4x0  : C4 , D1 {
+  int fd;
+  ~E4x0(); // tgen
+  E4x0(); // tgen
+};
+//SIG(-1 E4x0) C1{ BC2{ BC3{ Fi} BC4{ v1 Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E4x0 ::~E4x0(){ note_dtor("E4x0", this);} // tgen
+E4x0 ::E4x0(){ note_ctor("E4x0", this);} // tgen
+
+static void Test_E4x0()
+{
+  extern Class_Descriptor cd_E4x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E4x0, buf);
+    E4x0 *dp, &lv = *(dp=new (buf) E4x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E4x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E4x0)");
+    check_base_class_offset(lv, (A0*)(C4*), ABISELECT(12,8), "E4x0");
+    check_base_class_offset(lv, (B1*)(C4*), 0, "E4x0");
+    check_base_class_offset(lv, (C4*), 0, "E4x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(24,16), "E4x0");
+    check_field_offset(lv, fd, ABISELECT(36,24), "E4x0.fd");
+    test_class_info(&lv, &cd_E4x0);
+    dp->~E4x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE4x0(Test_E4x0, "E4x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E4x0C1Ev();
+extern void _ZN4E4x0D1Ev();
+Name_Map name_map_E4x0[] = {
+  NSPAIR(_ZN4E4x0C1Ev),
+  NSPAIR(_ZN4E4x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E4x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B1,    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_C4,    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},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI4E4x0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E4x0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI4E4x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI4E4x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+Class_Descriptor cd_E4x0 = {  "E4x0", // class name
+  bases_E4x0, 4,
+  &(vtc_E4x0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E4x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E4x0),6, //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  G4x0y0  : E4x0 , F1 {
+  int ff;
+  ~G4x0y0(); // tgen
+  G4x0y0(); // tgen
+};
+//SIG(1 G4x0y0) C1{ BC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G4x0y0 ::~G4x0y0(){ note_dtor("G4x0y0", this);} // tgen
+G4x0y0 ::G4x0y0(){ note_ctor("G4x0y0", this);} // tgen
+
+static void Test_G4x0y0()
+{
+  extern Class_Descriptor cd_G4x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G4x0y0, buf);
+    G4x0y0 *dp, &lv = *(dp=new (buf) G4x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G4x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y0)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(12,8), "G4x0y0");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), 0, "G4x0y0");
+    check_base_class_offset(lv, (C4*)(E4x0*), 0, "G4x0y0");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(24,16), "G4x0y0");
+    check_base_class_offset(lv, (E4x0*), 0, "G4x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,28), "G4x0y0");
+    check_field_offset(lv, ff, ABISELECT(52,36), "G4x0y0.ff");
+    test_class_info(&lv, &cd_G4x0y0);
+    dp->~G4x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y0(Test_G4x0y0, "G4x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y0C1Ev();
+extern void _ZN6G4x0y0D1Ev();
+Name_Map name_map_G4x0y0[] = {
+  NSPAIR(_ZN6G4x0y0C1Ev),
+  NSPAIR(_ZN6G4x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G4x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B1,    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_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,28), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G4x0y0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G4x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G4x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G4x0y0[];
+extern  VTBL_ENTRY _ZTV6G4x0y0[];
+Class_Descriptor cd_G4x0y0 = {  "G4x0y0", // class name
+  bases_G4x0y0, 6,
+  &(vtc_G4x0y0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G4x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y0),9, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  5, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y1  : virtual E4x0 , F1 {
+  int ff;
+  ~G4x0y1(); // tgen
+  G4x0y1(); // tgen
+};
+//SIG(1 G4x0y1) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G4x0y1 ::~G4x0y1(){ note_dtor("G4x0y1", this);} // tgen
+G4x0y1 ::G4x0y1(){ note_ctor("G4x0y1", this);} // tgen
+
+static void Test_G4x0y1()
+{
+  extern Class_Descriptor cd_G4x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G4x0y1, buf);
+    G4x0y1 *dp, &lv = *(dp=new (buf) G4x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G4x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y1)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(28,20), "G4x0y1");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), ABISELECT(16,12), "G4x0y1");
+    check_base_class_offset(lv, (C4*)(E4x0*), ABISELECT(16,12), "G4x0y1");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(40,28), "G4x0y1");
+    check_base_class_offset(lv, (E4x0*), ABISELECT(16,12), "G4x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G4x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G4x0y1.ff");
+    test_class_info(&lv, &cd_G4x0y1);
+    dp->~G4x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y1(Test_G4x0y1, "G4x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y1C1Ev();
+extern void _ZN6G4x0y1D1Ev();
+Name_Map name_map_G4x0y1[] = {
+  NSPAIR(_ZN6G4x0y1C1Ev),
+  NSPAIR(_ZN6G4x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G4x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_C4,    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
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G4x0y1[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G4x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G4x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y1[];
+static  VTT_ENTRY vtt_G4x0y1[] = {
+  {&(_ZTV6G4x0y1[3]),  3,11},
+  {&(_ZTV6G4x0y1[7]),  7,11},
+  {&(_ZTV6G4x0y1[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G4x0y1[];
+extern  VTBL_ENTRY _ZTV6G4x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y1[];
+Class_Descriptor cd_G4x0y1 = {  "G4x0y1", // class name
+  bases_G4x0y1, 6,
+  &(vtc_G4x0y1[0]), // expected_vtbl_contents
+  &(vtt_G4x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G4x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y1),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y1),3, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y2  : E4x0 , virtual F1 {
+  int ff;
+  ~G4x0y2(); // tgen
+  G4x0y2(); // tgen
+};
+//SIG(1 G4x0y2) C1{ BC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G4x0y2 ::~G4x0y2(){ note_dtor("G4x0y2", this);} // tgen
+G4x0y2 ::G4x0y2(){ note_ctor("G4x0y2", this);} // tgen
+
+static void Test_G4x0y2()
+{
+  extern Class_Descriptor cd_G4x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G4x0y2, buf);
+    G4x0y2 *dp, &lv = *(dp=new (buf) G4x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G4x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y2)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(12,8), "G4x0y2");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), 0, "G4x0y2");
+    check_base_class_offset(lv, (C4*)(E4x0*), 0, "G4x0y2");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(24,16), "G4x0y2");
+    check_base_class_offset(lv, (E4x0*), 0, "G4x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G4x0y2");
+    check_field_offset(lv, ff, ABISELECT(40,28), "G4x0y2.ff");
+    test_class_info(&lv, &cd_G4x0y2);
+    dp->~G4x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y2(Test_G4x0y2, "G4x0y2", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y2C1Ev();
+extern void _ZN6G4x0y2D1Ev();
+Name_Map name_map_G4x0y2[] = {
+  NSPAIR(_ZN6G4x0y2C1Ev),
+  NSPAIR(_ZN6G4x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G4x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(48,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y2[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G4x0y2[] = {
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G4x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G4x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y2[];
+static  VTT_ENTRY vtt_G4x0y2[] = {
+  {&(_ZTV6G4x0y2[3]),  3,11},
+  {&(_ZTV6G4x0y2[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G4x0y2[];
+extern  VTBL_ENTRY _ZTV6G4x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y2[];
+Class_Descriptor cd_G4x0y2 = {  "G4x0y2", // class name
+  bases_G4x0y2, 6,
+  &(vtc_G4x0y2[0]), // expected_vtbl_contents
+  &(vtt_G4x0y2[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI6G4x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y2),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y2),2, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y3  : virtual E4x0 , virtual F1 {
+  int ff;
+  ~G4x0y3(); // tgen
+  G4x0y3(); // tgen
+};
+//SIG(1 G4x0y3) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G4x0y3 ::~G4x0y3(){ note_dtor("G4x0y3", this);} // tgen
+G4x0y3 ::G4x0y3(){ note_ctor("G4x0y3", this);} // tgen
+
+static void Test_G4x0y3()
+{
+  extern Class_Descriptor cd_G4x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G4x0y3, buf);
+    G4x0y3 *dp, &lv = *(dp=new (buf) G4x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G4x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y3)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(28,16), "G4x0y3");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), ABISELECT(16,8), "G4x0y3");
+    check_base_class_offset(lv, (C4*)(E4x0*), ABISELECT(16,8), "G4x0y3");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(40,24), "G4x0y3");
+    check_base_class_offset(lv, (E4x0*), ABISELECT(16,8), "G4x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G4x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G4x0y3.ff");
+    test_class_info(&lv, &cd_G4x0y3);
+    dp->~G4x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y3(Test_G4x0y3, "G4x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y3C1Ev();
+extern void _ZN6G4x0y3D1Ev();
+Name_Map name_map_G4x0y3[] = {
+  NSPAIR(_ZN6G4x0y3C1Ev),
+  NSPAIR(_ZN6G4x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G4x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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_B1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y3[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G4x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y3[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G4x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI6G4x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G4x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y3[];
+static  VTT_ENTRY vtt_G4x0y3[] = {
+  {&(_ZTV6G4x0y3[4]),  4,15},
+  {&(_ZTV6G4x0y3[7]),  7,15},
+  {&(_ZTV6G4x0y3[10]),  10,15},
+  {&(_ZTV6G4x0y3[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI6G4x0y3[];
+extern  VTBL_ENTRY _ZTV6G4x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y3[];
+Class_Descriptor cd_G4x0y3 = {  "G4x0y3", // class name
+  bases_G4x0y3, 6,
+  &(vtc_G4x0y3[0]), // expected_vtbl_contents
+  &(vtt_G4x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G4x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y3),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y3),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y4  : E4x0 , F0 {
+  int ff;
+  ~G4x0y4(); // tgen
+  G4x0y4(); // tgen
+};
+//SIG(1 G4x0y4) C1{ BC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G4x0y4 ::~G4x0y4(){ note_dtor("G4x0y4", this);} // tgen
+G4x0y4 ::G4x0y4(){ note_ctor("G4x0y4", this);} // tgen
+
+static void Test_G4x0y4()
+{
+  extern Class_Descriptor cd_G4x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G4x0y4, buf);
+    G4x0y4 *dp, &lv = *(dp=new (buf) G4x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G4x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y4)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(12,8), "G4x0y4");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), 0, "G4x0y4");
+    check_base_class_offset(lv, (C4*)(E4x0*), 0, "G4x0y4");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(24,16), "G4x0y4");
+    check_base_class_offset(lv, (E4x0*), 0, "G4x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,28), "G4x0y4");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G4x0y4.ff");
+    test_class_info(&lv, &cd_G4x0y4);
+    dp->~G4x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y4(Test_G4x0y4, "G4x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y4C1Ev();
+extern void _ZN6G4x0y4D1Ev();
+Name_Map name_map_G4x0y4[] = {
+  NSPAIR(_ZN6G4x0y4C1Ev),
+  NSPAIR(_ZN6G4x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G4x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B1,    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_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(40,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y4[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G4x0y4[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G4x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G4x0y4[];
+extern  VTBL_ENTRY _ZTV6G4x0y4[];
+Class_Descriptor cd_G4x0y4 = {  "G4x0y4", // class name
+  bases_G4x0y4, 6,
+  &(vtc_G4x0y4[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G4x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y4),6, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  4, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y5  : virtual E4x0 , F0 {
+  int ff;
+  ~G4x0y5(); // tgen
+  G4x0y5(); // tgen
+};
+//SIG(1 G4x0y5) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G4x0y5 ::~G4x0y5(){ note_dtor("G4x0y5", this);} // tgen
+G4x0y5 ::G4x0y5(){ note_ctor("G4x0y5", this);} // tgen
+
+static void Test_G4x0y5()
+{
+  extern Class_Descriptor cd_G4x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G4x0y5, buf);
+    G4x0y5 *dp, &lv = *(dp=new (buf) G4x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G4x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y5)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(28,20), "G4x0y5");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), ABISELECT(16,12), "G4x0y5");
+    check_base_class_offset(lv, (C4*)(E4x0*), ABISELECT(16,12), "G4x0y5");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(40,28), "G4x0y5");
+    check_base_class_offset(lv, (E4x0*), ABISELECT(16,12), "G4x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G4x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G4x0y5.ff");
+    test_class_info(&lv, &cd_G4x0y5);
+    dp->~G4x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y5(Test_G4x0y5, "G4x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y5C1Ev();
+extern void _ZN6G4x0y5D1Ev();
+Name_Map name_map_G4x0y5[] = {
+  NSPAIR(_ZN6G4x0y5C1Ev),
+  NSPAIR(_ZN6G4x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G4x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_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_C4,    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
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G4x0y5[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G4x0y5[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y5[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G4x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G4x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y5[];
+static  VTT_ENTRY vtt_G4x0y5[] = {
+  {&(_ZTV6G4x0y5[3]),  3,10},
+  {&(_ZTV6G4x0y5[6]),  6,10},
+  {&(_ZTV6G4x0y5[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI6G4x0y5[];
+extern  VTBL_ENTRY _ZTV6G4x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y5[];
+Class_Descriptor cd_G4x0y5 = {  "G4x0y5", // class name
+  bases_G4x0y5, 6,
+  &(vtc_G4x0y5[0]), // expected_vtbl_contents
+  &(vtt_G4x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G4x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y5),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y5),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y6  : E4x0 , virtual F0 {
+  int ff;
+  ~G4x0y6(); // tgen
+  G4x0y6(); // tgen
+};
+//SIG(1 G4x0y6) C1{ BC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G4x0y6 ::~G4x0y6(){ note_dtor("G4x0y6", this);} // tgen
+G4x0y6 ::G4x0y6(){ note_ctor("G4x0y6", this);} // tgen
+
+static void Test_G4x0y6()
+{
+  extern Class_Descriptor cd_G4x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G4x0y6, buf);
+    G4x0y6 *dp, &lv = *(dp=new (buf) G4x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G4x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y6)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(12,8), "G4x0y6");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), 0, "G4x0y6");
+    check_base_class_offset(lv, (C4*)(E4x0*), 0, "G4x0y6");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(24,16), "G4x0y6");
+    check_base_class_offset(lv, (E4x0*), 0, "G4x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(44,32), "G4x0y6");
+    check_field_offset(lv, ff, ABISELECT(40,28), "G4x0y6.ff");
+    test_class_info(&lv, &cd_G4x0y6);
+    dp->~G4x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y6(Test_G4x0y6, "G4x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y6C1Ev();
+extern void _ZN6G4x0y6D1Ev();
+Name_Map name_map_G4x0y6[] = {
+  NSPAIR(_ZN6G4x0y6C1Ev),
+  NSPAIR(_ZN6G4x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G4x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(12,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_B1,    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_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(44,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y6[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G4x0y6[] = {
+  ABISELECT(44,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI6G4x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y6[];
+static  VTT_ENTRY vtt_G4x0y6[] = {
+  {&(_ZTV6G4x0y6[3]),  3,7},
+};
+extern VTBL_ENTRY _ZTI6G4x0y6[];
+extern  VTBL_ENTRY _ZTV6G4x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y6[];
+Class_Descriptor cd_G4x0y6 = {  "G4x0y6", // class name
+  bases_G4x0y6, 6,
+  &(vtc_G4x0y6[0]), // expected_vtbl_contents
+  &(vtt_G4x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G4x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y6),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y6),1, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G4x0y7  : virtual E4x0 , virtual F0 {
+  int ff;
+  ~G4x0y7(); // tgen
+  G4x0y7(); // tgen
+};
+//SIG(1 G4x0y7) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G4x0y7 ::~G4x0y7(){ note_dtor("G4x0y7", this);} // tgen
+G4x0y7 ::G4x0y7(){ note_ctor("G4x0y7", this);} // tgen
+
+static void Test_G4x0y7()
+{
+  extern Class_Descriptor cd_G4x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G4x0y7, buf);
+    G4x0y7 *dp, &lv = *(dp=new (buf) G4x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G4x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G4x0y7)");
+    check_base_class_offset(lv, (A0*)(C4*)(E4x0*), ABISELECT(28,16), "G4x0y7");
+    check_base_class_offset(lv, (B1*)(C4*)(E4x0*), ABISELECT(16,8), "G4x0y7");
+    check_base_class_offset(lv, (C4*)(E4x0*), ABISELECT(16,8), "G4x0y7");
+    check_base_class_offset(lv, (D1*)(E4x0*), ABISELECT(40,24), "G4x0y7");
+    check_base_class_offset(lv, (E4x0*), ABISELECT(16,8), "G4x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(56,36), "G4x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G4x0y7.ff");
+    test_class_info(&lv, &cd_G4x0y7);
+    dp->~G4x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG4x0y7(Test_G4x0y7, "G4x0y7", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN6G4x0y7C1Ev();
+extern void _ZN6G4x0y7D1Ev();
+Name_Map name_map_G4x0y7[] = {
+  NSPAIR(_ZN6G4x0y7C1Ev),
+  NSPAIR(_ZN6G4x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C4;
+extern VTBL_ENTRY _ZTI2C4[];
+extern  VTBL_ENTRY _ZTV2C4[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E4x0;
+extern VTBL_ENTRY _ZTI4E4x0[];
+extern  VTBL_ENTRY _ZTV4E4x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G4x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(28,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_B1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_C4,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E4x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(56,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G4x0y7[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G4x0y7[] = {
+  ABISELECT(56,36),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G4x0y7[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G4x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI6G4x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G4x0y7[];
+static  VTT_ENTRY vtt_G4x0y7[] = {
+  {&(_ZTV6G4x0y7[4]),  4,11},
+  {&(_ZTV6G4x0y7[7]),  7,11},
+  {&(_ZTV6G4x0y7[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G4x0y7[];
+extern  VTBL_ENTRY _ZTV6G4x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G4x0y7[];
+Class_Descriptor cd_G4x0y7 = {  "G4x0y7", // class name
+  bases_G4x0y7, 6,
+  &(vtc_G4x0y7[0]), // expected_vtbl_contents
+  &(vtt_G4x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI6G4x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G4x0y7),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G4x0y7),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E5x0  : C5 , D1 {
+  int fd;
+  ~E5x0(); // tgen
+  E5x0(); // tgen
+};
+//SIG(-1 E5x0) C1{ BC2{ BC3{ v1 Fi} BC4{ v2 Fi} Fi} BC5{ v3 Fi} Fi}
+
+
+E5x0 ::~E5x0(){ note_dtor("E5x0", this);} // tgen
+E5x0 ::E5x0(){ note_ctor("E5x0", this);} // tgen
+
+static void Test_E5x0()
+{
+  extern Class_Descriptor cd_E5x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E5x0, buf);
+    E5x0 *dp, &lv = *(dp=new (buf) E5x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E5x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E5x0)");
+    check_base_class_offset(lv, (A1*)(C5*), 0, "E5x0");
+    check_base_class_offset(lv, (B1*)(C5*), ABISELECT(16,8), "E5x0");
+    check_base_class_offset(lv, (C5*), 0, "E5x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(32,20), "E5x0");
+    check_field_offset(lv, fd, ABISELECT(44,28), "E5x0.fd");
+    test_class_info(&lv, &cd_E5x0);
+    dp->~E5x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE5x0(Test_E5x0, "E5x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN4E5x0C1Ev();
+extern void _ZN4E5x0D1Ev();
+Name_Map name_map_E5x0[] = {
+  NSPAIR(_ZN4E5x0C1Ev),
+  NSPAIR(_ZN4E5x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E5x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B1,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E5x0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI4E5x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI4E5x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI4E5x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+Class_Descriptor cd_E5x0 = {  "E5x0", // class name
+  bases_E5x0, 4,
+  &(vtc_E5x0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI4E5x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E5x0),9, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  4, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y0  : E5x0 , F1 {
+  int ff;
+  ~G5x0y0(); // tgen
+  G5x0y0(); // tgen
+};
+//SIG(1 G5x0y0) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G5x0y0 ::~G5x0y0(){ note_dtor("G5x0y0", this);} // tgen
+G5x0y0 ::G5x0y0(){ note_ctor("G5x0y0", this);} // tgen
+
+static void Test_G5x0y0()
+{
+  extern Class_Descriptor cd_G5x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G5x0y0, buf);
+    G5x0y0 *dp, &lv = *(dp=new (buf) G5x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G5x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y0)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), 0, "G5x0y0");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y0");
+    check_base_class_offset(lv, (C5*)(E5x0*), 0, "G5x0y0");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(32,20), "G5x0y0");
+    check_base_class_offset(lv, (E5x0*), 0, "G5x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G5x0y0");
+    check_field_offset(lv, ff, ABISELECT(60,40), "G5x0y0.ff");
+    test_class_info(&lv, &cd_G5x0y0);
+    dp->~G5x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y0(Test_G5x0y0, "G5x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y0C1Ev();
+extern void _ZN6G5x0y0D1Ev();
+Name_Map name_map_G5x0y0[] = {
+  NSPAIR(_ZN6G5x0y0C1Ev),
+  NSPAIR(_ZN6G5x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G5x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B1,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(48,32), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G5x0y0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G5x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G5x0y0[];
+extern  VTBL_ENTRY _ZTV6G5x0y0[];
+Class_Descriptor cd_G5x0y0 = {  "G5x0y0", // class name
+  bases_G5x0y0, 6,
+  &(vtc_G5x0y0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G5x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y0),12, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  6, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y1  : virtual E5x0 , F1 {
+  int ff;
+  ~G5x0y1(); // tgen
+  G5x0y1(); // tgen
+};
+//SIG(1 G5x0y1) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G5x0y1 ::~G5x0y1(){ note_dtor("G5x0y1", this);} // tgen
+G5x0y1 ::G5x0y1(){ note_ctor("G5x0y1", this);} // tgen
+
+static void Test_G5x0y1()
+{
+  extern Class_Descriptor cd_G5x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G5x0y1, buf);
+    G5x0y1 *dp, &lv = *(dp=new (buf) G5x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G5x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y1)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), ABISELECT(16,12), "G5x0y1");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(32,20), "G5x0y1");
+    check_base_class_offset(lv, (C5*)(E5x0*), ABISELECT(16,12), "G5x0y1");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(48,32), "G5x0y1");
+    check_base_class_offset(lv, (E5x0*), ABISELECT(16,12), "G5x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G5x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G5x0y1.ff");
+    test_class_info(&lv, &cd_G5x0y1);
+    dp->~G5x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y1(Test_G5x0y1, "G5x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y1C1Ev();
+extern void _ZN6G5x0y1D1Ev();
+Name_Map name_map_G5x0y1[] = {
+  NSPAIR(_ZN6G5x0y1C1Ev),
+  NSPAIR(_ZN6G5x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G5x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B1,    ABISELECT(32,20), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(48,32), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G5x0y1[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G5x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G5x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y1[];
+static  VTT_ENTRY vtt_G5x0y1[] = {
+  {&(_ZTV6G5x0y1[3]),  3,14},
+  {&(_ZTV6G5x0y1[7]),  7,14},
+  {&(_ZTV6G5x0y1[10]),  10,14},
+  {&(_ZTV6G5x0y1[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI6G5x0y1[];
+extern  VTBL_ENTRY _ZTV6G5x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y1[];
+Class_Descriptor cd_G5x0y1 = {  "G5x0y1", // class name
+  bases_G5x0y1, 6,
+  &(vtc_G5x0y1[0]), // expected_vtbl_contents
+  &(vtt_G5x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G5x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y1),14, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y1),4, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y2  : E5x0 , virtual F1 {
+  int ff;
+  ~G5x0y2(); // tgen
+  G5x0y2(); // tgen
+};
+//SIG(1 G5x0y2) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G5x0y2 ::~G5x0y2(){ note_dtor("G5x0y2", this);} // tgen
+G5x0y2 ::G5x0y2(){ note_ctor("G5x0y2", this);} // tgen
+
+static void Test_G5x0y2()
+{
+  extern Class_Descriptor cd_G5x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G5x0y2, buf);
+    G5x0y2 *dp, &lv = *(dp=new (buf) G5x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G5x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y2)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), 0, "G5x0y2");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y2");
+    check_base_class_offset(lv, (C5*)(E5x0*), 0, "G5x0y2");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(32,20), "G5x0y2");
+    check_base_class_offset(lv, (E5x0*), 0, "G5x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G5x0y2");
+    check_field_offset(lv, ff, ABISELECT(48,32), "G5x0y2.ff");
+    test_class_info(&lv, &cd_G5x0y2);
+    dp->~G5x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y2(Test_G5x0y2, "G5x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y2C1Ev();
+extern void _ZN6G5x0y2D1Ev();
+Name_Map name_map_G5x0y2[] = {
+  NSPAIR(_ZN6G5x0y2C1Ev),
+  NSPAIR(_ZN6G5x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G5x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y2[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G5x0y2[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G5x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y2[];
+static  VTT_ENTRY vtt_G5x0y2[] = {
+  {&(_ZTV6G5x0y2[3]),  3,14},
+  {&(_ZTV6G5x0y2[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI6G5x0y2[];
+extern  VTBL_ENTRY _ZTV6G5x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y2[];
+Class_Descriptor cd_G5x0y2 = {  "G5x0y2", // class name
+  bases_G5x0y2, 6,
+  &(vtc_G5x0y2[0]), // expected_vtbl_contents
+  &(vtt_G5x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G5x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y2),14, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y2),2, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y3  : virtual E5x0 , virtual F1 {
+  int ff;
+  ~G5x0y3(); // tgen
+  G5x0y3(); // tgen
+};
+//SIG(1 G5x0y3) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G5x0y3 ::~G5x0y3(){ note_dtor("G5x0y3", this);} // tgen
+G5x0y3 ::G5x0y3(){ note_ctor("G5x0y3", this);} // tgen
+
+static void Test_G5x0y3()
+{
+  extern Class_Descriptor cd_G5x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G5x0y3, buf);
+    G5x0y3 *dp, &lv = *(dp=new (buf) G5x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G5x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y3)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y3");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(32,16), "G5x0y3");
+    check_base_class_offset(lv, (C5*)(E5x0*), ABISELECT(16,8), "G5x0y3");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(48,28), "G5x0y3");
+    check_base_class_offset(lv, (E5x0*), ABISELECT(16,8), "G5x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G5x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G5x0y3.ff");
+    test_class_info(&lv, &cd_G5x0y3);
+    dp->~G5x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y3(Test_G5x0y3, "G5x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y3C1Ev();
+extern void _ZN6G5x0y3D1Ev();
+Name_Map name_map_G5x0y3[] = {
+  NSPAIR(_ZN6G5x0y3C1Ev),
+  NSPAIR(_ZN6G5x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G5x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B1,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(48,28), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y3[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G5x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y3[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6G5x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI6G5x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI6G5x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y3[];
+static  VTT_ENTRY vtt_G5x0y3[] = {
+  {&(_ZTV6G5x0y3[4]),  4,18},
+  {&(_ZTV6G5x0y3[7]),  7,18},
+  {&(_ZTV6G5x0y3[10]),  10,18},
+  {&(_ZTV6G5x0y3[13]),  13,18},
+  {&(_ZTV6G5x0y3[17]),  17,18},
+};
+extern VTBL_ENTRY _ZTI6G5x0y3[];
+extern  VTBL_ENTRY _ZTV6G5x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y3[];
+Class_Descriptor cd_G5x0y3 = {  "G5x0y3", // class name
+  bases_G5x0y3, 6,
+  &(vtc_G5x0y3[0]), // expected_vtbl_contents
+  &(vtt_G5x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI6G5x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y3),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y3),5, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y4  : E5x0 , F0 {
+  int ff;
+  ~G5x0y4(); // tgen
+  G5x0y4(); // tgen
+};
+//SIG(1 G5x0y4) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G5x0y4 ::~G5x0y4(){ note_dtor("G5x0y4", this);} // tgen
+G5x0y4 ::G5x0y4(){ note_ctor("G5x0y4", this);} // tgen
+
+static void Test_G5x0y4()
+{
+  extern Class_Descriptor cd_G5x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G5x0y4, buf);
+    G5x0y4 *dp, &lv = *(dp=new (buf) G5x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G5x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y4)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), 0, "G5x0y4");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y4");
+    check_base_class_offset(lv, (C5*)(E5x0*), 0, "G5x0y4");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(32,20), "G5x0y4");
+    check_base_class_offset(lv, (E5x0*), 0, "G5x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(48,32), "G5x0y4");
+    check_field_offset(lv, ff, ABISELECT(52,36), "G5x0y4.ff");
+    test_class_info(&lv, &cd_G5x0y4);
+    dp->~G5x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y4(Test_G5x0y4, "G5x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y4C1Ev();
+extern void _ZN6G5x0y4D1Ev();
+Name_Map name_map_G5x0y4[] = {
+  NSPAIR(_ZN6G5x0y4C1Ev),
+  NSPAIR(_ZN6G5x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G5x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B1,    ABISELECT(16,8), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_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 _ZTI6G5x0y4[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G5x0y4[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI6G5x0y4[];
+extern  VTBL_ENTRY _ZTV6G5x0y4[];
+Class_Descriptor cd_G5x0y4 = {  "G5x0y4", // class name
+  bases_G5x0y4, 6,
+  &(vtc_G5x0y4[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G5x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y4),9, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  5, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y5  : virtual E5x0 , F0 {
+  int ff;
+  ~G5x0y5(); // tgen
+  G5x0y5(); // tgen
+};
+//SIG(1 G5x0y5) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G5x0y5 ::~G5x0y5(){ note_dtor("G5x0y5", this);} // tgen
+G5x0y5 ::G5x0y5(){ note_ctor("G5x0y5", this);} // tgen
+
+static void Test_G5x0y5()
+{
+  extern Class_Descriptor cd_G5x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G5x0y5, buf);
+    G5x0y5 *dp, &lv = *(dp=new (buf) G5x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G5x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y5)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), ABISELECT(16,12), "G5x0y5");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(32,20), "G5x0y5");
+    check_base_class_offset(lv, (C5*)(E5x0*), ABISELECT(16,12), "G5x0y5");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(48,32), "G5x0y5");
+    check_base_class_offset(lv, (E5x0*), ABISELECT(16,12), "G5x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G5x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G5x0y5.ff");
+    test_class_info(&lv, &cd_G5x0y5);
+    dp->~G5x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y5(Test_G5x0y5, "G5x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y5C1Ev();
+extern void _ZN6G5x0y5D1Ev();
+Name_Map name_map_G5x0y5[] = {
+  NSPAIR(_ZN6G5x0y5C1Ev),
+  NSPAIR(_ZN6G5x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G5x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_offset
+    3, //num_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_B1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(48,32), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G5x0y5[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G5x0y5[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y5[0]),
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G5x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G5x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y5[];
+static  VTT_ENTRY vtt_G5x0y5[] = {
+  {&(_ZTV6G5x0y5[3]),  3,13},
+  {&(_ZTV6G5x0y5[6]),  6,13},
+  {&(_ZTV6G5x0y5[9]),  9,13},
+  {&(_ZTV6G5x0y5[12]),  12,13},
+};
+extern VTBL_ENTRY _ZTI6G5x0y5[];
+extern  VTBL_ENTRY _ZTV6G5x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y5[];
+Class_Descriptor cd_G5x0y5 = {  "G5x0y5", // class name
+  bases_G5x0y5, 6,
+  &(vtc_G5x0y5[0]), // expected_vtbl_contents
+  &(vtt_G5x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G5x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y5),13, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y5),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y6  : E5x0 , virtual F0 {
+  int ff;
+  ~G5x0y6(); // tgen
+  G5x0y6(); // tgen
+};
+//SIG(1 G5x0y6) C1{ BC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G5x0y6 ::~G5x0y6(){ note_dtor("G5x0y6", this);} // tgen
+G5x0y6 ::G5x0y6(){ note_ctor("G5x0y6", this);} // tgen
+
+static void Test_G5x0y6()
+{
+  extern Class_Descriptor cd_G5x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G5x0y6, buf);
+    G5x0y6 *dp, &lv = *(dp=new (buf) G5x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G5x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y6)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), 0, "G5x0y6");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y6");
+    check_base_class_offset(lv, (C5*)(E5x0*), 0, "G5x0y6");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(32,20), "G5x0y6");
+    check_base_class_offset(lv, (E5x0*), 0, "G5x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G5x0y6");
+    check_field_offset(lv, ff, ABISELECT(48,32), "G5x0y6.ff");
+    test_class_info(&lv, &cd_G5x0y6);
+    dp->~G5x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y6(Test_G5x0y6, "G5x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y6C1Ev();
+extern void _ZN6G5x0y6D1Ev();
+Name_Map name_map_G5x0y6[] = {
+  NSPAIR(_ZN6G5x0y6C1Ev),
+  NSPAIR(_ZN6G5x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G5x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y6[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G5x0y6[] = {
+  ABISELECT(52,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G5x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y6[];
+static  VTT_ENTRY vtt_G5x0y6[] = {
+  {&(_ZTV6G5x0y6[3]),  3,10},
+};
+extern VTBL_ENTRY _ZTI6G5x0y6[];
+extern  VTBL_ENTRY _ZTV6G5x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y6[];
+Class_Descriptor cd_G5x0y6 = {  "G5x0y6", // class name
+  bases_G5x0y6, 6,
+  &(vtc_G5x0y6[0]), // expected_vtbl_contents
+  &(vtt_G5x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G5x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y6),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y6),1, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G5x0y7  : virtual E5x0 , virtual F0 {
+  int ff;
+  ~G5x0y7(); // tgen
+  G5x0y7(); // tgen
+};
+//SIG(1 G5x0y7) C1{ VBC2{ BC3{ BC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G5x0y7 ::~G5x0y7(){ note_dtor("G5x0y7", this);} // tgen
+G5x0y7 ::G5x0y7(){ note_ctor("G5x0y7", this);} // tgen
+
+static void Test_G5x0y7()
+{
+  extern Class_Descriptor cd_G5x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G5x0y7, buf);
+    G5x0y7 *dp, &lv = *(dp=new (buf) G5x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G5x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G5x0y7)");
+    check_base_class_offset(lv, (A1*)(C5*)(E5x0*), ABISELECT(16,8), "G5x0y7");
+    check_base_class_offset(lv, (B1*)(C5*)(E5x0*), ABISELECT(32,16), "G5x0y7");
+    check_base_class_offset(lv, (C5*)(E5x0*), ABISELECT(16,8), "G5x0y7");
+    check_base_class_offset(lv, (D1*)(E5x0*), ABISELECT(48,28), "G5x0y7");
+    check_base_class_offset(lv, (E5x0*), ABISELECT(16,8), "G5x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(64,40), "G5x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G5x0y7.ff");
+    test_class_info(&lv, &cd_G5x0y7);
+    dp->~G5x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG5x0y7(Test_G5x0y7, "G5x0y7", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G5x0y7C1Ev();
+extern void _ZN6G5x0y7D1Ev();
+Name_Map name_map_G5x0y7[] = {
+  NSPAIR(_ZN6G5x0y7C1Ev),
+  NSPAIR(_ZN6G5x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C5;
+extern VTBL_ENTRY _ZTI2C5[];
+extern  VTBL_ENTRY _ZTV2C5[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E5x0;
+extern VTBL_ENTRY _ZTI4E5x0[];
+extern  VTBL_ENTRY _ZTV4E5x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G5x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_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_B1,    ABISELECT(32,16), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C5,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(48,28), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E5x0,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(64,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G5x0y7[];
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G5x0y7[] = {
+  ABISELECT(64,40),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G5x0y7[0]),
+  0,
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G5x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI6G5x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI6G5x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G5x0y7[];
+static  VTT_ENTRY vtt_G5x0y7[] = {
+  {&(_ZTV6G5x0y7[4]),  4,14},
+  {&(_ZTV6G5x0y7[7]),  7,14},
+  {&(_ZTV6G5x0y7[10]),  10,14},
+  {&(_ZTV6G5x0y7[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI6G5x0y7[];
+extern  VTBL_ENTRY _ZTV6G5x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G5x0y7[];
+Class_Descriptor cd_G5x0y7 = {  "G5x0y7", // class name
+  bases_G5x0y7, 6,
+  &(vtc_G5x0y7[0]), // expected_vtbl_contents
+  &(vtt_G5x0y7[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G5x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G5x0y7),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G5x0y7),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E6x0  : C6 , D1 {
+  int fd;
+  ~E6x0(); // tgen
+  E6x0(); // tgen
+};
+//SIG(-1 E6x0) C1{ BC2{ VBC3{ Fi} BC4{ v1 Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E6x0 ::~E6x0(){ note_dtor("E6x0", this);} // tgen
+E6x0 ::E6x0(){ note_ctor("E6x0", this);} // tgen
+
+static void Test_E6x0()
+{
+  extern Class_Descriptor cd_E6x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E6x0, buf);
+    E6x0 *dp, &lv = *(dp=new (buf) E6x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E6x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E6x0)");
+    check_base_class_offset(lv, (A0*)(C6*), ABISELECT(32,24), "E6x0");
+    check_base_class_offset(lv, (B1*)(C6*), 0, "E6x0");
+    check_base_class_offset(lv, (C6*), 0, "E6x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E6x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E6x0.fd");
+    test_class_info(&lv, &cd_E6x0);
+    dp->~E6x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE6x0(Test_E6x0, "E6x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E6x0C1Ev();
+extern void _ZN4E6x0D1Ev();
+Name_Map name_map_E6x0[] = {
+  NSPAIR(_ZN4E6x0C1Ev),
+  NSPAIR(_ZN4E6x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E6x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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 _ZTI4E6x0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E6x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E6x0[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C6__4E6x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_E6x0[] = {
+  {&(_ZTV4E6x0[3]),  3,7},
+  {&(_tg__ZTV2C6__4E6x0[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+Class_Descriptor cd_E6x0 = {  "E6x0", // class name
+  bases_E6x0, 4,
+  &(vtc_E6x0[0]), // expected_vtbl_contents
+  &(vtt_E6x0[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E6x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E6x0),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E6x0),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  G6x0y0  : E6x0 , F1 {
+  int ff;
+  ~G6x0y0(); // tgen
+  G6x0y0(); // tgen
+};
+//SIG(1 G6x0y0) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G6x0y0 ::~G6x0y0(){ note_dtor("G6x0y0", this);} // tgen
+G6x0y0 ::G6x0y0(){ note_ctor("G6x0y0", this);} // tgen
+
+static void Test_G6x0y0()
+{
+  extern Class_Descriptor cd_G6x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G6x0y0, buf);
+    G6x0y0 *dp, &lv = *(dp=new (buf) G6x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G6x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y0)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(48,36), "G6x0y0");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), 0, "G6x0y0");
+    check_base_class_offset(lv, (C6*)(E6x0*), 0, "G6x0y0");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(16,12), "G6x0y0");
+    check_base_class_offset(lv, (E6x0*), 0, "G6x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G6x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G6x0y0.ff");
+    test_class_info(&lv, &cd_G6x0y0);
+    dp->~G6x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y0(Test_G6x0y0, "G6x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y0C1Ev();
+extern void _ZN6G6x0y0D1Ev();
+Name_Map name_map_G6x0y0[] = {
+  NSPAIR(_ZN6G6x0y0C1Ev),
+  NSPAIR(_ZN6G6x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G6x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G6x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G6x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y0[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y0[] = {
+  {&(_ZTV6G6x0y0[3]),  3,10},
+  {&(_tg__ZTV4E6x0__6G6x0y0[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y0[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y0[];
+extern  VTBL_ENTRY _ZTV6G6x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y0[];
+Class_Descriptor cd_G6x0y0 = {  "G6x0y0", // class name
+  bases_G6x0y0, 6,
+  &(vtc_G6x0y0[0]), // expected_vtbl_contents
+  &(vtt_G6x0y0[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G6x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y0),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y0),3, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y1  : virtual E6x0 , F1 {
+  int ff;
+  ~G6x0y1(); // tgen
+  G6x0y1(); // tgen
+};
+//SIG(1 G6x0y1) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G6x0y1 ::~G6x0y1(){ note_dtor("G6x0y1", this);} // tgen
+G6x0y1 ::G6x0y1(){ note_ctor("G6x0y1", this);} // tgen
+
+static void Test_G6x0y1()
+{
+  extern Class_Descriptor cd_G6x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G6x0y1, buf);
+    G6x0y1 *dp, &lv = *(dp=new (buf) G6x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G6x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y1)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(48,36), "G6x0y1");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), ABISELECT(16,12), "G6x0y1");
+    check_base_class_offset(lv, (C6*)(E6x0*), ABISELECT(16,12), "G6x0y1");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(32,24), "G6x0y1");
+    check_base_class_offset(lv, (E6x0*), ABISELECT(16,12), "G6x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G6x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G6x0y1.ff");
+    test_class_info(&lv, &cd_G6x0y1);
+    dp->~G6x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y1(Test_G6x0y1, "G6x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y1C1Ev();
+extern void _ZN6G6x0y1D1Ev();
+Name_Map name_map_G6x0y1[] = {
+  NSPAIR(_ZN6G6x0y1C1Ev),
+  NSPAIR(_ZN6G6x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G6x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    ABISELECT(16,12), //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G6x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G6x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y1[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y1[] = {
+  {&(_ZTV6G6x0y1[4]),  4,13},
+  {&(_ZTV6G6x0y1[9]),  9,13},
+  {&(_ZTV6G6x0y1[12]),  12,13},
+  {&(_tg__ZTV4E6x0__6G6x0y1[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y1[];
+extern  VTBL_ENTRY _ZTV6G6x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y1[];
+Class_Descriptor cd_G6x0y1 = {  "G6x0y1", // class name
+  bases_G6x0y1, 6,
+  &(vtc_G6x0y1[0]), // expected_vtbl_contents
+  &(vtt_G6x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G6x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y1),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y1),5, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y2  : E6x0 , virtual F1 {
+  int ff;
+  ~G6x0y2(); // tgen
+  G6x0y2(); // tgen
+};
+//SIG(1 G6x0y2) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G6x0y2 ::~G6x0y2(){ note_dtor("G6x0y2", this);} // tgen
+G6x0y2 ::G6x0y2(){ note_ctor("G6x0y2", this);} // tgen
+
+static void Test_G6x0y2()
+{
+  extern Class_Descriptor cd_G6x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G6x0y2, buf);
+    G6x0y2 *dp, &lv = *(dp=new (buf) G6x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G6x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y2)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(36,28), "G6x0y2");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), 0, "G6x0y2");
+    check_base_class_offset(lv, (C6*)(E6x0*), 0, "G6x0y2");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(16,12), "G6x0y2");
+    check_base_class_offset(lv, (E6x0*), 0, "G6x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,32), "G6x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G6x0y2.ff");
+    test_class_info(&lv, &cd_G6x0y2);
+    dp->~G6x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y2(Test_G6x0y2, "G6x0y2", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y2C1Ev();
+extern void _ZN6G6x0y2D1Ev();
+Name_Map name_map_G6x0y2[] = {
+  NSPAIR(_ZN6G6x0y2C1Ev),
+  NSPAIR(_ZN6G6x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G6x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C6,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,32), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y2[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G6x0y2[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G6x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y2[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y2[] = {
+  {&(_ZTV6G6x0y2[4]),  4,12},
+  {&(_tg__ZTV4E6x0__6G6x0y2[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y2[3]),  3,4},
+  {&(_ZTV6G6x0y2[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI6G6x0y2[];
+extern  VTBL_ENTRY _ZTV6G6x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y2[];
+Class_Descriptor cd_G6x0y2 = {  "G6x0y2", // class name
+  bases_G6x0y2, 6,
+  &(vtc_G6x0y2[0]), // expected_vtbl_contents
+  &(vtt_G6x0y2[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G6x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y2),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y2),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y3  : virtual E6x0 , virtual F1 {
+  int ff;
+  ~G6x0y3(); // tgen
+  G6x0y3(); // tgen
+};
+//SIG(1 G6x0y3) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G6x0y3 ::~G6x0y3(){ note_dtor("G6x0y3", this);} // tgen
+G6x0y3 ::G6x0y3(){ note_ctor("G6x0y3", this);} // tgen
+
+static void Test_G6x0y3()
+{
+  extern Class_Descriptor cd_G6x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G6x0y3, buf);
+    G6x0y3 *dp, &lv = *(dp=new (buf) G6x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G6x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y3)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(48,32), "G6x0y3");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), ABISELECT(16,8), "G6x0y3");
+    check_base_class_offset(lv, (C6*)(E6x0*), ABISELECT(16,8), "G6x0y3");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(32,20), "G6x0y3");
+    check_base_class_offset(lv, (E6x0*), ABISELECT(16,8), "G6x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G6x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G6x0y3.ff");
+    test_class_info(&lv, &cd_G6x0y3);
+    dp->~G6x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y3(Test_G6x0y3, "G6x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y3C1Ev();
+extern void _ZN6G6x0y3D1Ev();
+Name_Map name_map_G6x0y3[] = {
+  NSPAIR(_ZN6G6x0y3C1Ev),
+  NSPAIR(_ZN6G6x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G6x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y3[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G6x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y3[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G6x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G6x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G6x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y3[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y3[] = {
+  {&(_ZTV6G6x0y3[5]),  5,17},
+  {&(_ZTV6G6x0y3[9]),  9,17},
+  {&(_ZTV6G6x0y3[12]),  12,17},
+  {&(_ZTV6G6x0y3[16]),  16,17},
+  {&(_tg__ZTV4E6x0__6G6x0y3[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y3[];
+extern  VTBL_ENTRY _ZTV6G6x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y3[];
+Class_Descriptor cd_G6x0y3 = {  "G6x0y3", // class name
+  bases_G6x0y3, 6,
+  &(vtc_G6x0y3[0]), // expected_vtbl_contents
+  &(vtt_G6x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G6x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y3),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y3),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y4  : E6x0 , F0 {
+  int ff;
+  ~G6x0y4(); // tgen
+  G6x0y4(); // tgen
+};
+//SIG(1 G6x0y4) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G6x0y4 ::~G6x0y4(){ note_dtor("G6x0y4", this);} // tgen
+G6x0y4 ::G6x0y4(){ note_ctor("G6x0y4", this);} // tgen
+
+static void Test_G6x0y4()
+{
+  extern Class_Descriptor cd_G6x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G6x0y4, buf);
+    G6x0y4 *dp, &lv = *(dp=new (buf) G6x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G6x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y4)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(40,32), "G6x0y4");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), 0, "G6x0y4");
+    check_base_class_offset(lv, (C6*)(E6x0*), 0, "G6x0y4");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(16,12), "G6x0y4");
+    check_base_class_offset(lv, (E6x0*), 0, "G6x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G6x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G6x0y4.ff");
+    test_class_info(&lv, &cd_G6x0y4);
+    dp->~G6x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y4(Test_G6x0y4, "G6x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y4C1Ev();
+extern void _ZN6G6x0y4D1Ev();
+Name_Map name_map_G6x0y4[] = {
+  NSPAIR(_ZN6G6x0y4C1Ev),
+  NSPAIR(_ZN6G6x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G6x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y4[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G6x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y4[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y4[] = {
+  {&(_ZTV6G6x0y4[3]),  3,7},
+  {&(_tg__ZTV4E6x0__6G6x0y4[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y4[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y4[];
+extern  VTBL_ENTRY _ZTV6G6x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y4[];
+Class_Descriptor cd_G6x0y4 = {  "G6x0y4", // class name
+  bases_G6x0y4, 6,
+  &(vtc_G6x0y4[0]), // expected_vtbl_contents
+  &(vtt_G6x0y4[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G6x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y4),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y4),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y5  : virtual E6x0 , F0 {
+  int ff;
+  ~G6x0y5(); // tgen
+  G6x0y5(); // tgen
+};
+//SIG(1 G6x0y5) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G6x0y5 ::~G6x0y5(){ note_dtor("G6x0y5", this);} // tgen
+G6x0y5 ::G6x0y5(){ note_ctor("G6x0y5", this);} // tgen
+
+static void Test_G6x0y5()
+{
+  extern Class_Descriptor cd_G6x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G6x0y5, buf);
+    G6x0y5 *dp, &lv = *(dp=new (buf) G6x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G6x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y5)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(48,36), "G6x0y5");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), ABISELECT(16,12), "G6x0y5");
+    check_base_class_offset(lv, (C6*)(E6x0*), ABISELECT(16,12), "G6x0y5");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(32,24), "G6x0y5");
+    check_base_class_offset(lv, (E6x0*), ABISELECT(16,12), "G6x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G6x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G6x0y5.ff");
+    test_class_info(&lv, &cd_G6x0y5);
+    dp->~G6x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y5(Test_G6x0y5, "G6x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y5C1Ev();
+extern void _ZN6G6x0y5D1Ev();
+Name_Map name_map_G6x0y5[] = {
+  NSPAIR(_ZN6G6x0y5C1Ev),
+  NSPAIR(_ZN6G6x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G6x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    ABISELECT(16,12), //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G6x0y5[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G6x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y5[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G6x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y5[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y5[] = {
+  {&(_ZTV6G6x0y5[4]),  4,12},
+  {&(_ZTV6G6x0y5[8]),  8,12},
+  {&(_ZTV6G6x0y5[11]),  11,12},
+  {&(_tg__ZTV4E6x0__6G6x0y5[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y5[];
+extern  VTBL_ENTRY _ZTV6G6x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y5[];
+Class_Descriptor cd_G6x0y5 = {  "G6x0y5", // class name
+  bases_G6x0y5, 6,
+  &(vtc_G6x0y5[0]), // expected_vtbl_contents
+  &(vtt_G6x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G6x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y5),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y5),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y6  : E6x0 , virtual F0 {
+  int ff;
+  ~G6x0y6(); // tgen
+  G6x0y6(); // tgen
+};
+//SIG(1 G6x0y6) C1{ BC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G6x0y6 ::~G6x0y6(){ note_dtor("G6x0y6", this);} // tgen
+G6x0y6 ::G6x0y6(){ note_ctor("G6x0y6", this);} // tgen
+
+static void Test_G6x0y6()
+{
+  extern Class_Descriptor cd_G6x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G6x0y6, buf);
+    G6x0y6 *dp, &lv = *(dp=new (buf) G6x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G6x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y6)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(36,28), "G6x0y6");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), 0, "G6x0y6");
+    check_base_class_offset(lv, (C6*)(E6x0*), 0, "G6x0y6");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(16,12), "G6x0y6");
+    check_base_class_offset(lv, (E6x0*), 0, "G6x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,32), "G6x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G6x0y6.ff");
+    test_class_info(&lv, &cd_G6x0y6);
+    dp->~G6x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y6(Test_G6x0y6, "G6x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y6C1Ev();
+extern void _ZN6G6x0y6D1Ev();
+Name_Map name_map_G6x0y6[] = {
+  NSPAIR(_ZN6G6x0y6C1Ev),
+  NSPAIR(_ZN6G6x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G6x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y6[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G6x0y6[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G6x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y6[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y6[] = {
+  {&(_ZTV6G6x0y6[4]),  4,8},
+  {&(_tg__ZTV4E6x0__6G6x0y6[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y6[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y6[];
+extern  VTBL_ENTRY _ZTV6G6x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y6[];
+Class_Descriptor cd_G6x0y6 = {  "G6x0y6", // class name
+  bases_G6x0y6, 6,
+  &(vtc_G6x0y6[0]), // expected_vtbl_contents
+  &(vtt_G6x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G6x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y6),8, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y6),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G6x0y7  : virtual E6x0 , virtual F0 {
+  int ff;
+  ~G6x0y7(); // tgen
+  G6x0y7(); // tgen
+};
+//SIG(1 G6x0y7) C1{ VBC2{ BC3{ VBC4{ Fi} BC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G6x0y7 ::~G6x0y7(){ note_dtor("G6x0y7", this);} // tgen
+G6x0y7 ::G6x0y7(){ note_ctor("G6x0y7", this);} // tgen
+
+static void Test_G6x0y7()
+{
+  extern Class_Descriptor cd_G6x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G6x0y7, buf);
+    G6x0y7 *dp, &lv = *(dp=new (buf) G6x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G6x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G6x0y7)");
+    check_base_class_offset(lv, (A0*)(C6*)(E6x0*), ABISELECT(48,32), "G6x0y7");
+    check_base_class_offset(lv, (B1*)(C6*)(E6x0*), ABISELECT(16,8), "G6x0y7");
+    check_base_class_offset(lv, (C6*)(E6x0*), ABISELECT(16,8), "G6x0y7");
+    check_base_class_offset(lv, (D1*)(E6x0*), ABISELECT(32,20), "G6x0y7");
+    check_base_class_offset(lv, (E6x0*), ABISELECT(16,8), "G6x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G6x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G6x0y7.ff");
+    test_class_info(&lv, &cd_G6x0y7);
+    dp->~G6x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG6x0y7(Test_G6x0y7, "G6x0y7", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G6x0y7C1Ev();
+extern void _ZN6G6x0y7D1Ev();
+Name_Map name_map_G6x0y7[] = {
+  NSPAIR(_ZN6G6x0y7C1Ev),
+  NSPAIR(_ZN6G6x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C6;
+extern VTBL_ENTRY _ZTI2C6[];
+extern  VTBL_ENTRY _ZTV2C6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C6[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E6x0;
+extern VTBL_ENTRY _ZTI4E6x0[];
+extern  VTBL_ENTRY _ZTV4E6x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E6x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G6x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    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_C6,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E6x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G6x0y7[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G6x0y7[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G6x0y7[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G6x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G6x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G6x0y7[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E6x0__6G6x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E6x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C64E6x0__6G6x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G6x0y7[] = {
+  {&(_ZTV6G6x0y7[5]),  5,13},
+  {&(_ZTV6G6x0y7[9]),  9,13},
+  {&(_ZTV6G6x0y7[12]),  12,13},
+  {&(_tg__ZTV4E6x0__6G6x0y7[3]),  3,4},
+  {&(_tg__ZTV2C64E6x0__6G6x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G6x0y7[];
+extern  VTBL_ENTRY _ZTV6G6x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G6x0y7[];
+Class_Descriptor cd_G6x0y7 = {  "G6x0y7", // class name
+  bases_G6x0y7, 6,
+  &(vtc_G6x0y7[0]), // expected_vtbl_contents
+  &(vtt_G6x0y7[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G6x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G6x0y7),13, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G6x0y7),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E7x0  : C7 , D1 {
+  int fd;
+  ~E7x0(); // tgen
+  E7x0(); // tgen
+};
+//SIG(-1 E7x0) C1{ BC2{ VBC3{ v1 Fi} BC4{ v2 Fi} Fi} BC5{ v3 Fi} Fi}
+
+
+E7x0 ::~E7x0(){ note_dtor("E7x0", this);} // tgen
+E7x0 ::E7x0(){ note_ctor("E7x0", this);} // tgen
+
+static void Test_E7x0()
+{
+  extern Class_Descriptor cd_E7x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E7x0, buf);
+    E7x0 *dp, &lv = *(dp=new (buf) E7x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E7x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E7x0)");
+    check_base_class_offset(lv, (A1*)(C7*), ABISELECT(32,24), "E7x0");
+    check_base_class_offset(lv, (B1*)(C7*), 0, "E7x0");
+    check_base_class_offset(lv, (C7*), 0, "E7x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E7x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E7x0.fd");
+    test_class_info(&lv, &cd_E7x0);
+    dp->~E7x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE7x0(Test_E7x0, "E7x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN4E7x0C1Ev();
+extern void _ZN4E7x0D1Ev();
+Name_Map name_map_E7x0[] = {
+  NSPAIR(_ZN4E7x0C1Ev),
+  NSPAIR(_ZN4E7x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E7x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_E7x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E7x0[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C7__4E7x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C7__4E7x0[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_E7x0[] = {
+  {&(_ZTV4E7x0[3]),  3,11},
+  {&(_tg__ZTV2C7__4E7x0[3]),  3,4},
+  {&(_tg__ZTV2A1__2C7__4E7x0[3]),  3,4},
+  {&(_ZTV4E7x0[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+Class_Descriptor cd_E7x0 = {  "E7x0", // class name
+  bases_E7x0, 4,
+  &(vtc_E7x0[0]), // expected_vtbl_contents
+  &(vtt_E7x0[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI4E7x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E7x0),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E7x0),4, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y0  : E7x0 , F1 {
+  int ff;
+  ~G7x0y0(); // tgen
+  G7x0y0(); // tgen
+};
+//SIG(1 G7x0y0) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G7x0y0 ::~G7x0y0(){ note_dtor("G7x0y0", this);} // tgen
+G7x0y0 ::G7x0y0(){ note_ctor("G7x0y0", this);} // tgen
+
+static void Test_G7x0y0()
+{
+  extern Class_Descriptor cd_G7x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G7x0y0, buf);
+    G7x0y0 *dp, &lv = *(dp=new (buf) G7x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G7x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y0)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(48,36), "G7x0y0");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), 0, "G7x0y0");
+    check_base_class_offset(lv, (C7*)(E7x0*), 0, "G7x0y0");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(16,12), "G7x0y0");
+    check_base_class_offset(lv, (E7x0*), 0, "G7x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G7x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G7x0y0.ff");
+    test_class_info(&lv, &cd_G7x0y0);
+    dp->~G7x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y0(Test_G7x0y0, "G7x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y0C1Ev();
+extern void _ZN6G7x0y0D1Ev();
+Name_Map name_map_G7x0y0[] = {
+  NSPAIR(_ZN6G7x0y0C1Ev),
+  NSPAIR(_ZN6G7x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G7x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y0[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G7x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G7x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y0[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y0[] = {
+  {&(_ZTV6G7x0y0[3]),  3,14},
+  {&(_tg__ZTV4E7x0__6G7x0y0[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y0[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y0[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y0[3]),  3,4},
+  {&(_ZTV6G7x0y0[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI6G7x0y0[];
+extern  VTBL_ENTRY _ZTV6G7x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y0[];
+Class_Descriptor cd_G7x0y0 = {  "G7x0y0", // class name
+  bases_G7x0y0, 6,
+  &(vtc_G7x0y0[0]), // expected_vtbl_contents
+  &(vtt_G7x0y0[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G7x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y0),14, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y0),6, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y1  : virtual E7x0 , F1 {
+  int ff;
+  ~G7x0y1(); // tgen
+  G7x0y1(); // tgen
+};
+//SIG(1 G7x0y1) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G7x0y1 ::~G7x0y1(){ note_dtor("G7x0y1", this);} // tgen
+G7x0y1 ::G7x0y1(){ note_ctor("G7x0y1", this);} // tgen
+
+static void Test_G7x0y1()
+{
+  extern Class_Descriptor cd_G7x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G7x0y1, buf);
+    G7x0y1 *dp, &lv = *(dp=new (buf) G7x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G7x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y1)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(48,36), "G7x0y1");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), ABISELECT(16,12), "G7x0y1");
+    check_base_class_offset(lv, (C7*)(E7x0*), ABISELECT(16,12), "G7x0y1");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(32,24), "G7x0y1");
+    check_base_class_offset(lv, (E7x0*), ABISELECT(16,12), "G7x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G7x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G7x0y1.ff");
+    test_class_info(&lv, &cd_G7x0y1);
+    dp->~G7x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y1(Test_G7x0y1, "G7x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y1C1Ev();
+extern void _ZN6G7x0y1D1Ev();
+Name_Map name_map_G7x0y1[] = {
+  NSPAIR(_ZN6G7x0y1C1Ev),
+  NSPAIR(_ZN6G7x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G7x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    ABISELECT(16,12), //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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G7x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G7x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y1[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y1[] = {
+  {&(_ZTV6G7x0y1[4]),  4,17},
+  {&(_ZTV6G7x0y1[9]),  9,17},
+  {&(_ZTV6G7x0y1[16]),  16,17},
+  {&(_ZTV6G7x0y1[12]),  12,17},
+  {&(_tg__ZTV4E7x0__6G7x0y1[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y1[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y1[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G7x0y1[];
+extern  VTBL_ENTRY _ZTV6G7x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y1[];
+Class_Descriptor cd_G7x0y1 = {  "G7x0y1", // class name
+  bases_G7x0y1, 6,
+  &(vtc_G7x0y1[0]), // expected_vtbl_contents
+  &(vtt_G7x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G7x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y1),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y1),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y2  : E7x0 , virtual F1 {
+  int ff;
+  ~G7x0y2(); // tgen
+  G7x0y2(); // tgen
+};
+//SIG(1 G7x0y2) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G7x0y2 ::~G7x0y2(){ note_dtor("G7x0y2", this);} // tgen
+G7x0y2 ::G7x0y2(){ note_ctor("G7x0y2", this);} // tgen
+
+static void Test_G7x0y2()
+{
+  extern Class_Descriptor cd_G7x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G7x0y2, buf);
+    G7x0y2 *dp, &lv = *(dp=new (buf) G7x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G7x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y2)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(40,28), "G7x0y2");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), 0, "G7x0y2");
+    check_base_class_offset(lv, (C7*)(E7x0*), 0, "G7x0y2");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(16,12), "G7x0y2");
+    check_base_class_offset(lv, (E7x0*), 0, "G7x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G7x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G7x0y2.ff");
+    test_class_info(&lv, &cd_G7x0y2);
+    dp->~G7x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y2(Test_G7x0y2, "G7x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y2C1Ev();
+extern void _ZN6G7x0y2D1Ev();
+Name_Map name_map_G7x0y2[] = {
+  NSPAIR(_ZN6G7x0y2C1Ev),
+  NSPAIR(_ZN6G7x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G7x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI6G7x0y2[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G7x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G7x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G7x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y2[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y2[] = {
+  {&(_ZTV6G7x0y2[4]),  4,16},
+  {&(_tg__ZTV4E7x0__6G7x0y2[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y2[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y2[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y2[3]),  3,4},
+  {&(_ZTV6G7x0y2[11]),  11,16},
+  {&(_ZTV6G7x0y2[15]),  15,16},
+};
+extern VTBL_ENTRY _ZTI6G7x0y2[];
+extern  VTBL_ENTRY _ZTV6G7x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y2[];
+Class_Descriptor cd_G7x0y2 = {  "G7x0y2", // class name
+  bases_G7x0y2, 6,
+  &(vtc_G7x0y2[0]), // expected_vtbl_contents
+  &(vtt_G7x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G7x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y2),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y2),7, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y3  : virtual E7x0 , virtual F1 {
+  int ff;
+  ~G7x0y3(); // tgen
+  G7x0y3(); // tgen
+};
+//SIG(1 G7x0y3) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G7x0y3 ::~G7x0y3(){ note_dtor("G7x0y3", this);} // tgen
+G7x0y3 ::G7x0y3(){ note_ctor("G7x0y3", this);} // tgen
+
+static void Test_G7x0y3()
+{
+  extern Class_Descriptor cd_G7x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G7x0y3, buf);
+    G7x0y3 *dp, &lv = *(dp=new (buf) G7x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G7x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y3)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(48,32), "G7x0y3");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), ABISELECT(16,8), "G7x0y3");
+    check_base_class_offset(lv, (C7*)(E7x0*), ABISELECT(16,8), "G7x0y3");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(32,20), "G7x0y3");
+    check_base_class_offset(lv, (E7x0*), ABISELECT(16,8), "G7x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G7x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G7x0y3.ff");
+    test_class_info(&lv, &cd_G7x0y3);
+    dp->~G7x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y3(Test_G7x0y3, "G7x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y3C1Ev();
+extern void _ZN6G7x0y3D1Ev();
+Name_Map name_map_G7x0y3[] = {
+  NSPAIR(_ZN6G7x0y3C1Ev),
+  NSPAIR(_ZN6G7x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G7x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    17, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y3[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G7x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y3[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G7x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G7x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G7x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI6G7x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y3[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y3[] = {
+  {&(_ZTV6G7x0y3[5]),  5,21},
+  {&(_ZTV6G7x0y3[9]),  9,21},
+  {&(_ZTV6G7x0y3[16]),  16,21},
+  {&(_ZTV6G7x0y3[12]),  12,21},
+  {&(_ZTV6G7x0y3[20]),  20,21},
+  {&(_tg__ZTV4E7x0__6G7x0y3[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y3[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y3[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G7x0y3[];
+extern  VTBL_ENTRY _ZTV6G7x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y3[];
+Class_Descriptor cd_G7x0y3 = {  "G7x0y3", // class name
+  bases_G7x0y3, 6,
+  &(vtc_G7x0y3[0]), // expected_vtbl_contents
+  &(vtt_G7x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI6G7x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y3),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y3),9, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y4  : E7x0 , F0 {
+  int ff;
+  ~G7x0y4(); // tgen
+  G7x0y4(); // tgen
+};
+//SIG(1 G7x0y4) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G7x0y4 ::~G7x0y4(){ note_dtor("G7x0y4", this);} // tgen
+G7x0y4 ::G7x0y4(){ note_ctor("G7x0y4", this);} // tgen
+
+static void Test_G7x0y4()
+{
+  extern Class_Descriptor cd_G7x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G7x0y4, buf);
+    G7x0y4 *dp, &lv = *(dp=new (buf) G7x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G7x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y4)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(40,32), "G7x0y4");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), 0, "G7x0y4");
+    check_base_class_offset(lv, (C7*)(E7x0*), 0, "G7x0y4");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(16,12), "G7x0y4");
+    check_base_class_offset(lv, (E7x0*), 0, "G7x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G7x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G7x0y4.ff");
+    test_class_info(&lv, &cd_G7x0y4);
+    dp->~G7x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y4(Test_G7x0y4, "G7x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y4C1Ev();
+extern void _ZN6G7x0y4D1Ev();
+Name_Map name_map_G7x0y4[] = {
+  NSPAIR(_ZN6G7x0y4C1Ev),
+  NSPAIR(_ZN6G7x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G7x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y4[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G7x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y4[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y4[] = {
+  {&(_ZTV6G7x0y4[3]),  3,11},
+  {&(_tg__ZTV4E7x0__6G7x0y4[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y4[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y4[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y4[3]),  3,4},
+  {&(_ZTV6G7x0y4[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G7x0y4[];
+extern  VTBL_ENTRY _ZTV6G7x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y4[];
+Class_Descriptor cd_G7x0y4 = {  "G7x0y4", // class name
+  bases_G7x0y4, 6,
+  &(vtc_G7x0y4[0]), // expected_vtbl_contents
+  &(vtt_G7x0y4[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G7x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y4),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y4),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y5  : virtual E7x0 , F0 {
+  int ff;
+  ~G7x0y5(); // tgen
+  G7x0y5(); // tgen
+};
+//SIG(1 G7x0y5) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G7x0y5 ::~G7x0y5(){ note_dtor("G7x0y5", this);} // tgen
+G7x0y5 ::G7x0y5(){ note_ctor("G7x0y5", this);} // tgen
+
+static void Test_G7x0y5()
+{
+  extern Class_Descriptor cd_G7x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G7x0y5, buf);
+    G7x0y5 *dp, &lv = *(dp=new (buf) G7x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G7x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y5)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(48,36), "G7x0y5");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), ABISELECT(16,12), "G7x0y5");
+    check_base_class_offset(lv, (C7*)(E7x0*), ABISELECT(16,12), "G7x0y5");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(32,24), "G7x0y5");
+    check_base_class_offset(lv, (E7x0*), ABISELECT(16,12), "G7x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G7x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G7x0y5.ff");
+    test_class_info(&lv, &cd_G7x0y5);
+    dp->~G7x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y5(Test_G7x0y5, "G7x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y5C1Ev();
+extern void _ZN6G7x0y5D1Ev();
+Name_Map name_map_G7x0y5[] = {
+  NSPAIR(_ZN6G7x0y5C1Ev),
+  NSPAIR(_ZN6G7x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G7x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    ABISELECT(16,12), //bcp->offset
+    4, //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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G7x0y5[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y5[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G7x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI6G7x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y5[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y5[] = {
+  {&(_ZTV6G7x0y5[4]),  4,16},
+  {&(_ZTV6G7x0y5[8]),  8,16},
+  {&(_ZTV6G7x0y5[15]),  15,16},
+  {&(_ZTV6G7x0y5[11]),  11,16},
+  {&(_tg__ZTV4E7x0__6G7x0y5[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y5[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y5[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G7x0y5[];
+extern  VTBL_ENTRY _ZTV6G7x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y5[];
+Class_Descriptor cd_G7x0y5 = {  "G7x0y5", // class name
+  bases_G7x0y5, 6,
+  &(vtc_G7x0y5[0]), // expected_vtbl_contents
+  &(vtt_G7x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G7x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y5),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y5),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y6  : E7x0 , virtual F0 {
+  int ff;
+  ~G7x0y6(); // tgen
+  G7x0y6(); // tgen
+};
+//SIG(1 G7x0y6) C1{ BC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G7x0y6 ::~G7x0y6(){ note_dtor("G7x0y6", this);} // tgen
+G7x0y6 ::G7x0y6(){ note_ctor("G7x0y6", this);} // tgen
+
+static void Test_G7x0y6()
+{
+  extern Class_Descriptor cd_G7x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G7x0y6, buf);
+    G7x0y6 *dp, &lv = *(dp=new (buf) G7x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G7x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y6)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(40,28), "G7x0y6");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), 0, "G7x0y6");
+    check_base_class_offset(lv, (C7*)(E7x0*), 0, "G7x0y6");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(16,12), "G7x0y6");
+    check_base_class_offset(lv, (E7x0*), 0, "G7x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G7x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G7x0y6.ff");
+    test_class_info(&lv, &cd_G7x0y6);
+    dp->~G7x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y6(Test_G7x0y6, "G7x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y6C1Ev();
+extern void _ZN6G7x0y6D1Ev();
+Name_Map name_map_G7x0y6[] = {
+  NSPAIR(_ZN6G7x0y6C1Ev),
+  NSPAIR(_ZN6G7x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G7x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y6[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y6[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G7x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI6G7x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y6[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y6[] = {
+  {&(_ZTV6G7x0y6[4]),  4,12},
+  {&(_tg__ZTV4E7x0__6G7x0y6[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y6[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y6[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y6[3]),  3,4},
+  {&(_ZTV6G7x0y6[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI6G7x0y6[];
+extern  VTBL_ENTRY _ZTV6G7x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y6[];
+Class_Descriptor cd_G7x0y6 = {  "G7x0y6", // class name
+  bases_G7x0y6, 6,
+  &(vtc_G7x0y6[0]), // expected_vtbl_contents
+  &(vtt_G7x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G7x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y6),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y6),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G7x0y7  : virtual E7x0 , virtual F0 {
+  int ff;
+  ~G7x0y7(); // tgen
+  G7x0y7(); // tgen
+};
+//SIG(1 G7x0y7) C1{ VBC2{ BC3{ VBC4{ v1 Fi} BC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G7x0y7 ::~G7x0y7(){ note_dtor("G7x0y7", this);} // tgen
+G7x0y7 ::G7x0y7(){ note_ctor("G7x0y7", this);} // tgen
+
+static void Test_G7x0y7()
+{
+  extern Class_Descriptor cd_G7x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G7x0y7, buf);
+    G7x0y7 *dp, &lv = *(dp=new (buf) G7x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G7x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G7x0y7)");
+    check_base_class_offset(lv, (A1*)(C7*)(E7x0*), ABISELECT(48,32), "G7x0y7");
+    check_base_class_offset(lv, (B1*)(C7*)(E7x0*), ABISELECT(16,8), "G7x0y7");
+    check_base_class_offset(lv, (C7*)(E7x0*), ABISELECT(16,8), "G7x0y7");
+    check_base_class_offset(lv, (D1*)(E7x0*), ABISELECT(32,20), "G7x0y7");
+    check_base_class_offset(lv, (E7x0*), ABISELECT(16,8), "G7x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(60,40), "G7x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G7x0y7.ff");
+    test_class_info(&lv, &cd_G7x0y7);
+    dp->~G7x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG7x0y7(Test_G7x0y7, "G7x0y7", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN6G7x0y7C1Ev();
+extern void _ZN6G7x0y7D1Ev();
+Name_Map name_map_G7x0y7[] = {
+  NSPAIR(_ZN6G7x0y7C1Ev),
+  NSPAIR(_ZN6G7x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C7;
+extern VTBL_ENTRY _ZTI2C7[];
+extern  VTBL_ENTRY _ZTV2C7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C7[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E7x0;
+extern VTBL_ENTRY _ZTI4E7x0[];
+extern  VTBL_ENTRY _ZTV4E7x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E7x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G7x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_B1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C7,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E7x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G7x0y7[];
+extern void _ZN2B13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G7x0y7[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G7x0y7[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G7x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G7x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI6G7x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G7x0y7[];
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E7x0__6G7x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C74E7x0__6G7x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__2C74E7x0__6G7x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI2C7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__4E7x0__6G7x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI4E7x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G7x0y7[] = {
+  {&(_ZTV6G7x0y7[5]),  5,17},
+  {&(_ZTV6G7x0y7[9]),  9,17},
+  {&(_ZTV6G7x0y7[16]),  16,17},
+  {&(_ZTV6G7x0y7[12]),  12,17},
+  {&(_tg__ZTV4E7x0__6G7x0y7[3]),  3,4},
+  {&(_tg__ZTV2C74E7x0__6G7x0y7[3]),  3,4},
+  {&(_tg__ZTV2A1__2C74E7x0__6G7x0y7[3]),  3,4},
+  {&(_tg__ZTV2A1__4E7x0__6G7x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G7x0y7[];
+extern  VTBL_ENTRY _ZTV6G7x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G7x0y7[];
+Class_Descriptor cd_G7x0y7 = {  "G7x0y7", // class name
+  bases_G7x0y7, 6,
+  &(vtc_G7x0y7[0]), // expected_vtbl_contents
+  &(vtt_G7x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI6G7x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G7x0y7),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G7x0y7),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E8x0  : C8 , D1 {
+  int fd;
+  ~E8x0(); // tgen
+  E8x0(); // tgen
+};
+//SIG(-1 E8x0) C1{ BC2{ BC3{ Fi} VBC4{ Fi} Fi} BC5{ v1 Fi} Fi}
+
+
+E8x0 ::~E8x0(){ note_dtor("E8x0", this);} // tgen
+E8x0 ::E8x0(){ note_ctor("E8x0", this);} // tgen
+
+static void Test_E8x0()
+{
+  extern Class_Descriptor cd_E8x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E8x0, buf);
+    E8x0 *dp, &lv = *(dp=new (buf) E8x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E8x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E8x0)");
+    check_base_class_offset(lv, (A0*)(C8*), ABISELECT(8,4), "E8x0");
+    check_base_class_offset(lv, (B0*)(C8*), ABISELECT(32,24), "E8x0");
+    check_base_class_offset(lv, (C8*), 0, "E8x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E8x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E8x0.fd");
+    test_class_info(&lv, &cd_E8x0);
+    dp->~E8x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE8x0(Test_E8x0, "E8x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E8x0C1Ev();
+extern void _ZN4E8x0D1Ev();
+Name_Map name_map_E8x0[] = {
+  NSPAIR(_ZN4E8x0C1Ev),
+  NSPAIR(_ZN4E8x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E8x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI4E8x0[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E8x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E8x0[];
+static  VTBL_ENTRY _tg__ZTV2C8__4E8x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_E8x0[] = {
+  {&(_ZTV4E8x0[3]),  3,6},
+  {&(_tg__ZTV2C8__4E8x0[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+Class_Descriptor cd_E8x0 = {  "E8x0", // class name
+  bases_E8x0, 4,
+  &(vtc_E8x0[0]), // expected_vtbl_contents
+  &(vtt_E8x0[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E8x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E8x0),6, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E8x0),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  G8x0y0  : E8x0 , F1 {
+  int ff;
+  ~G8x0y0(); // tgen
+  G8x0y0(); // tgen
+};
+//SIG(1 G8x0y0) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G8x0y0 ::~G8x0y0(){ note_dtor("G8x0y0", this);} // tgen
+G8x0y0 ::G8x0y0(){ note_ctor("G8x0y0", this);} // tgen
+
+static void Test_G8x0y0()
+{
+  extern Class_Descriptor cd_G8x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G8x0y0, buf);
+    G8x0y0 *dp, &lv = *(dp=new (buf) G8x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G8x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y0)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(8,4), "G8x0y0");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(48,36), "G8x0y0");
+    check_base_class_offset(lv, (C8*)(E8x0*), 0, "G8x0y0");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(16,12), "G8x0y0");
+    check_base_class_offset(lv, (E8x0*), 0, "G8x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G8x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G8x0y0.ff");
+    test_class_info(&lv, &cd_G8x0y0);
+    dp->~G8x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y0(Test_G8x0y0, "G8x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y0C1Ev();
+extern void _ZN6G8x0y0D1Ev();
+Name_Map name_map_G8x0y0[] = {
+  NSPAIR(_ZN6G8x0y0C1Ev),
+  NSPAIR(_ZN6G8x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G8x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G8x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G8x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y0[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y0[] = {
+  {&(_ZTV6G8x0y0[3]),  3,9},
+  {&(_tg__ZTV4E8x0__6G8x0y0[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y0[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y0[];
+extern  VTBL_ENTRY _ZTV6G8x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y0[];
+Class_Descriptor cd_G8x0y0 = {  "G8x0y0", // class name
+  bases_G8x0y0, 6,
+  &(vtc_G8x0y0[0]), // expected_vtbl_contents
+  &(vtt_G8x0y0[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G8x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y0),9, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y0),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G8x0y1  : virtual E8x0 , F1 {
+  int ff;
+  ~G8x0y1(); // tgen
+  G8x0y1(); // tgen
+};
+//SIG(1 G8x0y1) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G8x0y1 ::~G8x0y1(){ note_dtor("G8x0y1", this);} // tgen
+G8x0y1 ::G8x0y1(){ note_ctor("G8x0y1", this);} // tgen
+
+static void Test_G8x0y1()
+{
+  extern Class_Descriptor cd_G8x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G8x0y1, buf);
+    G8x0y1 *dp, &lv = *(dp=new (buf) G8x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G8x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y1)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(24,16), "G8x0y1");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(48,36), "G8x0y1");
+    check_base_class_offset(lv, (C8*)(E8x0*), ABISELECT(16,12), "G8x0y1");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(32,24), "G8x0y1");
+    check_base_class_offset(lv, (E8x0*), ABISELECT(16,12), "G8x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G8x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G8x0y1.ff");
+    test_class_info(&lv, &cd_G8x0y1);
+    dp->~G8x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y1(Test_G8x0y1, "G8x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y1C1Ev();
+extern void _ZN6G8x0y1D1Ev();
+Name_Map name_map_G8x0y1[] = {
+  NSPAIR(_ZN6G8x0y1C1Ev),
+  NSPAIR(_ZN6G8x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G8x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    ABISELECT(16,12), //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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    ABISELECT(16,12), //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},
+  {&cd_F1,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G8x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y1[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G8x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y1[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y1[] = {
+  {&(_ZTV6G8x0y1[4]),  4,12},
+  {&(_ZTV6G8x0y1[9]),  9,12},
+  {&(_ZTV6G8x0y1[11]),  11,12},
+  {&(_tg__ZTV4E8x0__6G8x0y1[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y1[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y1[];
+extern  VTBL_ENTRY _ZTV6G8x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y1[];
+Class_Descriptor cd_G8x0y1 = {  "G8x0y1", // class name
+  bases_G8x0y1, 6,
+  &(vtc_G8x0y1[0]), // expected_vtbl_contents
+  &(vtt_G8x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G8x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y1),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y1),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G8x0y2  : E8x0 , virtual F1 {
+  int ff;
+  ~G8x0y2(); // tgen
+  G8x0y2(); // tgen
+};
+//SIG(1 G8x0y2) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G8x0y2 ::~G8x0y2(){ note_dtor("G8x0y2", this);} // tgen
+G8x0y2 ::G8x0y2(){ note_ctor("G8x0y2", this);} // tgen
+
+static void Test_G8x0y2()
+{
+  extern Class_Descriptor cd_G8x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G8x0y2, buf);
+    G8x0y2 *dp, &lv = *(dp=new (buf) G8x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G8x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y2)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(8,4), "G8x0y2");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(36,28), "G8x0y2");
+    check_base_class_offset(lv, (C8*)(E8x0*), 0, "G8x0y2");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(16,12), "G8x0y2");
+    check_base_class_offset(lv, (E8x0*), 0, "G8x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,32), "G8x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G8x0y2.ff");
+    test_class_info(&lv, &cd_G8x0y2);
+    dp->~G8x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y2(Test_G8x0y2, "G8x0y2", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y2C1Ev();
+extern void _ZN6G8x0y2D1Ev();
+Name_Map name_map_G8x0y2[] = {
+  NSPAIR(_ZN6G8x0y2C1Ev),
+  NSPAIR(_ZN6G8x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G8x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G8x0y2[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y2[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G8x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y2[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y2[] = {
+  {&(_ZTV6G8x0y2[4]),  4,11},
+  {&(_tg__ZTV4E8x0__6G8x0y2[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y2[3]),  3,3},
+  {&(_ZTV6G8x0y2[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI6G8x0y2[];
+extern  VTBL_ENTRY _ZTV6G8x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y2[];
+Class_Descriptor cd_G8x0y2 = {  "G8x0y2", // class name
+  bases_G8x0y2, 6,
+  &(vtc_G8x0y2[0]), // expected_vtbl_contents
+  &(vtt_G8x0y2[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G8x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y2),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y2),4, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G8x0y3  : virtual E8x0 , virtual F1 {
+  int ff;
+  ~G8x0y3(); // tgen
+  G8x0y3(); // tgen
+};
+//SIG(1 G8x0y3) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G8x0y3 ::~G8x0y3(){ note_dtor("G8x0y3", this);} // tgen
+G8x0y3 ::G8x0y3(){ note_ctor("G8x0y3", this);} // tgen
+
+static void Test_G8x0y3()
+{
+  extern Class_Descriptor cd_G8x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G8x0y3, buf);
+    G8x0y3 *dp, &lv = *(dp=new (buf) G8x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G8x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y3)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(24,12), "G8x0y3");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(48,32), "G8x0y3");
+    check_base_class_offset(lv, (C8*)(E8x0*), ABISELECT(16,8), "G8x0y3");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(32,20), "G8x0y3");
+    check_base_class_offset(lv, (E8x0*), ABISELECT(16,8), "G8x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G8x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G8x0y3.ff");
+    test_class_info(&lv, &cd_G8x0y3);
+    dp->~G8x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y3(Test_G8x0y3, "G8x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y3C1Ev();
+extern void _ZN6G8x0y3D1Ev();
+Name_Map name_map_G8x0y3[] = {
+  NSPAIR(_ZN6G8x0y3C1Ev),
+  NSPAIR(_ZN6G8x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G8x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G8x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y3[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G8x0y3[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G8x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G8x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y3[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y3[] = {
+  {&(_ZTV6G8x0y3[5]),  5,16},
+  {&(_ZTV6G8x0y3[9]),  9,16},
+  {&(_ZTV6G8x0y3[11]),  11,16},
+  {&(_ZTV6G8x0y3[15]),  15,16},
+  {&(_tg__ZTV4E8x0__6G8x0y3[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y3[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y3[];
+extern  VTBL_ENTRY _ZTV6G8x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y3[];
+Class_Descriptor cd_G8x0y3 = {  "G8x0y3", // class name
+  bases_G8x0y3, 6,
+  &(vtc_G8x0y3[0]), // expected_vtbl_contents
+  &(vtt_G8x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G8x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y3),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y3),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G8x0y4  : E8x0 , F0 {
+  int ff;
+  ~G8x0y4(); // tgen
+  G8x0y4(); // tgen
+};
+//SIG(1 G8x0y4) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G8x0y4 ::~G8x0y4(){ note_dtor("G8x0y4", this);} // tgen
+G8x0y4 ::G8x0y4(){ note_ctor("G8x0y4", this);} // tgen
+
+static void Test_G8x0y4()
+{
+  extern Class_Descriptor cd_G8x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G8x0y4, buf);
+    G8x0y4 *dp, &lv = *(dp=new (buf) G8x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G8x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y4)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(8,4), "G8x0y4");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(40,32), "G8x0y4");
+    check_base_class_offset(lv, (C8*)(E8x0*), 0, "G8x0y4");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(16,12), "G8x0y4");
+    check_base_class_offset(lv, (E8x0*), 0, "G8x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G8x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G8x0y4.ff");
+    test_class_info(&lv, &cd_G8x0y4);
+    dp->~G8x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y4(Test_G8x0y4, "G8x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y4C1Ev();
+extern void _ZN6G8x0y4D1Ev();
+Name_Map name_map_G8x0y4[] = {
+  NSPAIR(_ZN6G8x0y4C1Ev),
+  NSPAIR(_ZN6G8x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G8x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y4[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G8x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y4[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y4[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y4[] = {
+  {&(_ZTV6G8x0y4[3]),  3,6},
+  {&(_tg__ZTV4E8x0__6G8x0y4[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y4[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y4[];
+extern  VTBL_ENTRY _ZTV6G8x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y4[];
+Class_Descriptor cd_G8x0y4 = {  "G8x0y4", // class name
+  bases_G8x0y4, 6,
+  &(vtc_G8x0y4[0]), // expected_vtbl_contents
+  &(vtt_G8x0y4[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G8x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y4),6, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y4),3, //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  G8x0y5  : virtual E8x0 , F0 {
+  int ff;
+  ~G8x0y5(); // tgen
+  G8x0y5(); // tgen
+};
+//SIG(1 G8x0y5) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G8x0y5 ::~G8x0y5(){ note_dtor("G8x0y5", this);} // tgen
+G8x0y5 ::G8x0y5(){ note_ctor("G8x0y5", this);} // tgen
+
+static void Test_G8x0y5()
+{
+  extern Class_Descriptor cd_G8x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G8x0y5, buf);
+    G8x0y5 *dp, &lv = *(dp=new (buf) G8x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G8x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y5)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(24,16), "G8x0y5");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(48,36), "G8x0y5");
+    check_base_class_offset(lv, (C8*)(E8x0*), ABISELECT(16,12), "G8x0y5");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(32,24), "G8x0y5");
+    check_base_class_offset(lv, (E8x0*), ABISELECT(16,12), "G8x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G8x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G8x0y5.ff");
+    test_class_info(&lv, &cd_G8x0y5);
+    dp->~G8x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y5(Test_G8x0y5, "G8x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y5C1Ev();
+extern void _ZN6G8x0y5D1Ev();
+Name_Map name_map_G8x0y5[] = {
+  NSPAIR(_ZN6G8x0y5C1Ev),
+  NSPAIR(_ZN6G8x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G8x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    ABISELECT(16,12), //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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    ABISELECT(16,12), //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},
+  {&cd_F0,    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 _ZTI6G8x0y5[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G8x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y5[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y5[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G8x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y5[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y5[] = {
+  {&(_ZTV6G8x0y5[4]),  4,11},
+  {&(_ZTV6G8x0y5[8]),  8,11},
+  {&(_ZTV6G8x0y5[10]),  10,11},
+  {&(_tg__ZTV4E8x0__6G8x0y5[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y5[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y5[];
+extern  VTBL_ENTRY _ZTV6G8x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y5[];
+Class_Descriptor cd_G8x0y5 = {  "G8x0y5", // class name
+  bases_G8x0y5, 6,
+  &(vtc_G8x0y5[0]), // expected_vtbl_contents
+  &(vtt_G8x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G8x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y5),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y5),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  G8x0y6  : E8x0 , virtual F0 {
+  int ff;
+  ~G8x0y6(); // tgen
+  G8x0y6(); // tgen
+};
+//SIG(1 G8x0y6) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G8x0y6 ::~G8x0y6(){ note_dtor("G8x0y6", this);} // tgen
+G8x0y6 ::G8x0y6(){ note_ctor("G8x0y6", this);} // tgen
+
+static void Test_G8x0y6()
+{
+  extern Class_Descriptor cd_G8x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G8x0y6, buf);
+    G8x0y6 *dp, &lv = *(dp=new (buf) G8x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G8x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y6)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(8,4), "G8x0y6");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(36,28), "G8x0y6");
+    check_base_class_offset(lv, (C8*)(E8x0*), 0, "G8x0y6");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(16,12), "G8x0y6");
+    check_base_class_offset(lv, (E8x0*), 0, "G8x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,32), "G8x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G8x0y6.ff");
+    test_class_info(&lv, &cd_G8x0y6);
+    dp->~G8x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y6(Test_G8x0y6, "G8x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y6C1Ev();
+extern void _ZN6G8x0y6D1Ev();
+Name_Map name_map_G8x0y6[] = {
+  NSPAIR(_ZN6G8x0y6C1Ev),
+  NSPAIR(_ZN6G8x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G8x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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},
+  {&cd_F0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y6[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G8x0y6[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y6[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G8x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y6[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y6[] = {
+  {&(_ZTV6G8x0y6[4]),  4,7},
+  {&(_tg__ZTV4E8x0__6G8x0y6[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y6[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y6[];
+extern  VTBL_ENTRY _ZTV6G8x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y6[];
+Class_Descriptor cd_G8x0y6 = {  "G8x0y6", // class name
+  bases_G8x0y6, 6,
+  &(vtc_G8x0y6[0]), // expected_vtbl_contents
+  &(vtt_G8x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G8x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y6),7, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y6),3, //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  G8x0y7  : virtual E8x0 , virtual F0 {
+  int ff;
+  ~G8x0y7(); // tgen
+  G8x0y7(); // tgen
+};
+//SIG(1 G8x0y7) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G8x0y7 ::~G8x0y7(){ note_dtor("G8x0y7", this);} // tgen
+G8x0y7 ::G8x0y7(){ note_ctor("G8x0y7", this);} // tgen
+
+static void Test_G8x0y7()
+{
+  extern Class_Descriptor cd_G8x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G8x0y7, buf);
+    G8x0y7 *dp, &lv = *(dp=new (buf) G8x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G8x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G8x0y7)");
+    check_base_class_offset(lv, (A0*)(C8*)(E8x0*), ABISELECT(24,12), "G8x0y7");
+    check_base_class_offset(lv, (B0*)(C8*)(E8x0*), ABISELECT(48,32), "G8x0y7");
+    check_base_class_offset(lv, (C8*)(E8x0*), ABISELECT(16,8), "G8x0y7");
+    check_base_class_offset(lv, (D1*)(E8x0*), ABISELECT(32,20), "G8x0y7");
+    check_base_class_offset(lv, (E8x0*), ABISELECT(16,8), "G8x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G8x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G8x0y7.ff");
+    test_class_info(&lv, &cd_G8x0y7);
+    dp->~G8x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG8x0y7(Test_G8x0y7, "G8x0y7", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G8x0y7C1Ev();
+extern void _ZN6G8x0y7D1Ev();
+Name_Map name_map_G8x0y7[] = {
+  NSPAIR(_ZN6G8x0y7C1Ev),
+  NSPAIR(_ZN6G8x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C8;
+extern VTBL_ENTRY _ZTI2C8[];
+extern  VTBL_ENTRY _ZTV2C8[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C8[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E8x0;
+extern VTBL_ENTRY _ZTI4E8x0[];
+extern  VTBL_ENTRY _ZTV4E8x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E8x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G8x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C8,    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
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E8x0,    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},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G8x0y7[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G8x0y7[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G8x0y7[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G8x0y7[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G8x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G8x0y7[];
+static  VTBL_ENTRY _tg__ZTV4E8x0__6G8x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E8x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV2C84E8x0__6G8x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C8[0]),
+};
+static  VTT_ENTRY vtt_G8x0y7[] = {
+  {&(_ZTV6G8x0y7[5]),  5,12},
+  {&(_ZTV6G8x0y7[9]),  9,12},
+  {&(_ZTV6G8x0y7[11]),  11,12},
+  {&(_tg__ZTV4E8x0__6G8x0y7[3]),  3,3},
+  {&(_tg__ZTV2C84E8x0__6G8x0y7[3]),  3,3},
+};
+extern VTBL_ENTRY _ZTI6G8x0y7[];
+extern  VTBL_ENTRY _ZTV6G8x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G8x0y7[];
+Class_Descriptor cd_G8x0y7 = {  "G8x0y7", // class name
+  bases_G8x0y7, 6,
+  &(vtc_G8x0y7[0]), // expected_vtbl_contents
+  &(vtt_G8x0y7[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G8x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G8x0y7),12, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G8x0y7),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  E9x0  : C9 , D1 {
+  int fd;
+  ~E9x0(); // tgen
+  E9x0(); // tgen
+};
+//SIG(-1 E9x0) C1{ BC2{ BC3{ v1 Fi} VBC4{ Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E9x0 ::~E9x0(){ note_dtor("E9x0", this);} // tgen
+E9x0 ::E9x0(){ note_ctor("E9x0", this);} // tgen
+
+static void Test_E9x0()
+{
+  extern Class_Descriptor cd_E9x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E9x0, buf);
+    E9x0 *dp, &lv = *(dp=new (buf) E9x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E9x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E9x0)");
+    check_base_class_offset(lv, (A1*)(C9*), 0, "E9x0");
+    check_base_class_offset(lv, (B0*)(C9*), ABISELECT(32,24), "E9x0");
+    check_base_class_offset(lv, (C9*), 0, "E9x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E9x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E9x0.fd");
+    test_class_info(&lv, &cd_E9x0);
+    dp->~E9x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE9x0(Test_E9x0, "E9x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN4E9x0C1Ev();
+extern void _ZN4E9x0D1Ev();
+Name_Map name_map_E9x0[] = {
+  NSPAIR(_ZN4E9x0C1Ev),
+  NSPAIR(_ZN4E9x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E9x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(32,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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 _ZTI4E9x0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E9x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV4E9x0[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C9__4E9x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_E9x0[] = {
+  {&(_ZTV4E9x0[3]),  3,7},
+  {&(_tg__ZTV2C9__4E9x0[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+Class_Descriptor cd_E9x0 = {  "E9x0", // class name
+  bases_E9x0, 4,
+  &(vtc_E9x0[0]), // expected_vtbl_contents
+  &(vtt_E9x0[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI4E9x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV4E9x0),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT4E9x0),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  G9x0y0  : E9x0 , F1 {
+  int ff;
+  ~G9x0y0(); // tgen
+  G9x0y0(); // tgen
+};
+//SIG(1 G9x0y0) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G9x0y0 ::~G9x0y0(){ note_dtor("G9x0y0", this);} // tgen
+G9x0y0 ::G9x0y0(){ note_ctor("G9x0y0", this);} // tgen
+
+static void Test_G9x0y0()
+{
+  extern Class_Descriptor cd_G9x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G9x0y0, buf);
+    G9x0y0 *dp, &lv = *(dp=new (buf) G9x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G9x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y0)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), 0, "G9x0y0");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(48,36), "G9x0y0");
+    check_base_class_offset(lv, (C9*)(E9x0*), 0, "G9x0y0");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(16,12), "G9x0y0");
+    check_base_class_offset(lv, (E9x0*), 0, "G9x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G9x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G9x0y0.ff");
+    test_class_info(&lv, &cd_G9x0y0);
+    dp->~G9x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y0(Test_G9x0y0, "G9x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y0C1Ev();
+extern void _ZN6G9x0y0D1Ev();
+Name_Map name_map_G9x0y0[] = {
+  NSPAIR(_ZN6G9x0y0C1Ev),
+  NSPAIR(_ZN6G9x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G9x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G9x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G9x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y0[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y0[] = {
+  {&(_ZTV6G9x0y0[3]),  3,10},
+  {&(_tg__ZTV4E9x0__6G9x0y0[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y0[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y0[];
+extern  VTBL_ENTRY _ZTV6G9x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y0[];
+Class_Descriptor cd_G9x0y0 = {  "G9x0y0", // class name
+  bases_G9x0y0, 6,
+  &(vtc_G9x0y0[0]), // expected_vtbl_contents
+  &(vtt_G9x0y0[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G9x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y0),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y0),3, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y1  : virtual E9x0 , F1 {
+  int ff;
+  ~G9x0y1(); // tgen
+  G9x0y1(); // tgen
+};
+//SIG(1 G9x0y1) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G9x0y1 ::~G9x0y1(){ note_dtor("G9x0y1", this);} // tgen
+G9x0y1 ::G9x0y1(){ note_ctor("G9x0y1", this);} // tgen
+
+static void Test_G9x0y1()
+{
+  extern Class_Descriptor cd_G9x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G9x0y1, buf);
+    G9x0y1 *dp, &lv = *(dp=new (buf) G9x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G9x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y1)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), ABISELECT(16,12), "G9x0y1");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(48,36), "G9x0y1");
+    check_base_class_offset(lv, (C9*)(E9x0*), ABISELECT(16,12), "G9x0y1");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(32,24), "G9x0y1");
+    check_base_class_offset(lv, (E9x0*), ABISELECT(16,12), "G9x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G9x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G9x0y1.ff");
+    test_class_info(&lv, &cd_G9x0y1);
+    dp->~G9x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y1(Test_G9x0y1, "G9x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y1C1Ev();
+extern void _ZN6G9x0y1D1Ev();
+Name_Map name_map_G9x0y1[] = {
+  NSPAIR(_ZN6G9x0y1C1Ev),
+  NSPAIR(_ZN6G9x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G9x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    ABISELECT(16,12), //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G9x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G9x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y1[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y1[] = {
+  {&(_ZTV6G9x0y1[4]),  4,13},
+  {&(_ZTV6G9x0y1[9]),  9,13},
+  {&(_ZTV6G9x0y1[12]),  12,13},
+  {&(_tg__ZTV4E9x0__6G9x0y1[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y1[];
+extern  VTBL_ENTRY _ZTV6G9x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y1[];
+Class_Descriptor cd_G9x0y1 = {  "G9x0y1", // class name
+  bases_G9x0y1, 6,
+  &(vtc_G9x0y1[0]), // expected_vtbl_contents
+  &(vtt_G9x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G9x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y1),13, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y1),5, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y2  : E9x0 , virtual F1 {
+  int ff;
+  ~G9x0y2(); // tgen
+  G9x0y2(); // tgen
+};
+//SIG(1 G9x0y2) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G9x0y2 ::~G9x0y2(){ note_dtor("G9x0y2", this);} // tgen
+G9x0y2 ::G9x0y2(){ note_ctor("G9x0y2", this);} // tgen
+
+static void Test_G9x0y2()
+{
+  extern Class_Descriptor cd_G9x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G9x0y2, buf);
+    G9x0y2 *dp, &lv = *(dp=new (buf) G9x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G9x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y2)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), 0, "G9x0y2");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(36,28), "G9x0y2");
+    check_base_class_offset(lv, (C9*)(E9x0*), 0, "G9x0y2");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(16,12), "G9x0y2");
+    check_base_class_offset(lv, (E9x0*), 0, "G9x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,32), "G9x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G9x0y2.ff");
+    test_class_info(&lv, &cd_G9x0y2);
+    dp->~G9x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y2(Test_G9x0y2, "G9x0y2", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y2C1Ev();
+extern void _ZN6G9x0y2D1Ev();
+Name_Map name_map_G9x0y2[] = {
+  NSPAIR(_ZN6G9x0y2C1Ev),
+  NSPAIR(_ZN6G9x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G9x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(40,32), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y2[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G9x0y2[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI6G9x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y2[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y2[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y2[] = {
+  {&(_ZTV6G9x0y2[4]),  4,12},
+  {&(_tg__ZTV4E9x0__6G9x0y2[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y2[3]),  3,4},
+  {&(_ZTV6G9x0y2[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI6G9x0y2[];
+extern  VTBL_ENTRY _ZTV6G9x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y2[];
+Class_Descriptor cd_G9x0y2 = {  "G9x0y2", // class name
+  bases_G9x0y2, 6,
+  &(vtc_G9x0y2[0]), // expected_vtbl_contents
+  &(vtt_G9x0y2[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G9x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y2),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y2),4, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y3  : virtual E9x0 , virtual F1 {
+  int ff;
+  ~G9x0y3(); // tgen
+  G9x0y3(); // tgen
+};
+//SIG(1 G9x0y3) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G9x0y3 ::~G9x0y3(){ note_dtor("G9x0y3", this);} // tgen
+G9x0y3 ::G9x0y3(){ note_ctor("G9x0y3", this);} // tgen
+
+static void Test_G9x0y3()
+{
+  extern Class_Descriptor cd_G9x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G9x0y3, buf);
+    G9x0y3 *dp, &lv = *(dp=new (buf) G9x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G9x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y3)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), ABISELECT(16,8), "G9x0y3");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(48,32), "G9x0y3");
+    check_base_class_offset(lv, (C9*)(E9x0*), ABISELECT(16,8), "G9x0y3");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(32,20), "G9x0y3");
+    check_base_class_offset(lv, (E9x0*), ABISELECT(16,8), "G9x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G9x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G9x0y3.ff");
+    test_class_info(&lv, &cd_G9x0y3);
+    dp->~G9x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y3(Test_G9x0y3, "G9x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y3C1Ev();
+extern void _ZN6G9x0y3D1Ev();
+Name_Map name_map_G9x0y3[] = {
+  NSPAIR(_ZN6G9x0y3C1Ev),
+  NSPAIR(_ZN6G9x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G9x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y3[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G9x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y3[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G9x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G9x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI6G9x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y3[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y3[] = {
+  {&(_ZTV6G9x0y3[5]),  5,17},
+  {&(_ZTV6G9x0y3[9]),  9,17},
+  {&(_ZTV6G9x0y3[12]),  12,17},
+  {&(_ZTV6G9x0y3[16]),  16,17},
+  {&(_tg__ZTV4E9x0__6G9x0y3[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y3[];
+extern  VTBL_ENTRY _ZTV6G9x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y3[];
+Class_Descriptor cd_G9x0y3 = {  "G9x0y3", // class name
+  bases_G9x0y3, 6,
+  &(vtc_G9x0y3[0]), // expected_vtbl_contents
+  &(vtt_G9x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI6G9x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y3),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y3),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y4  : E9x0 , F0 {
+  int ff;
+  ~G9x0y4(); // tgen
+  G9x0y4(); // tgen
+};
+//SIG(1 G9x0y4) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G9x0y4 ::~G9x0y4(){ note_dtor("G9x0y4", this);} // tgen
+G9x0y4 ::G9x0y4(){ note_ctor("G9x0y4", this);} // tgen
+
+static void Test_G9x0y4()
+{
+  extern Class_Descriptor cd_G9x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G9x0y4, buf);
+    G9x0y4 *dp, &lv = *(dp=new (buf) G9x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G9x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y4)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), 0, "G9x0y4");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(40,32), "G9x0y4");
+    check_base_class_offset(lv, (C9*)(E9x0*), 0, "G9x0y4");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(16,12), "G9x0y4");
+    check_base_class_offset(lv, (E9x0*), 0, "G9x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G9x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G9x0y4.ff");
+    test_class_info(&lv, &cd_G9x0y4);
+    dp->~G9x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y4(Test_G9x0y4, "G9x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y4C1Ev();
+extern void _ZN6G9x0y4D1Ev();
+Name_Map name_map_G9x0y4[] = {
+  NSPAIR(_ZN6G9x0y4C1Ev),
+  NSPAIR(_ZN6G9x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G9x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y4[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G9x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y4[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y4[] = {
+  {&(_ZTV6G9x0y4[3]),  3,7},
+  {&(_tg__ZTV4E9x0__6G9x0y4[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y4[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y4[];
+extern  VTBL_ENTRY _ZTV6G9x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y4[];
+Class_Descriptor cd_G9x0y4 = {  "G9x0y4", // class name
+  bases_G9x0y4, 6,
+  &(vtc_G9x0y4[0]), // expected_vtbl_contents
+  &(vtt_G9x0y4[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G9x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y4),7, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y4),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y5  : virtual E9x0 , F0 {
+  int ff;
+  ~G9x0y5(); // tgen
+  G9x0y5(); // tgen
+};
+//SIG(1 G9x0y5) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G9x0y5 ::~G9x0y5(){ note_dtor("G9x0y5", this);} // tgen
+G9x0y5 ::G9x0y5(){ note_ctor("G9x0y5", this);} // tgen
+
+static void Test_G9x0y5()
+{
+  extern Class_Descriptor cd_G9x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G9x0y5, buf);
+    G9x0y5 *dp, &lv = *(dp=new (buf) G9x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G9x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y5)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), ABISELECT(16,12), "G9x0y5");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(48,36), "G9x0y5");
+    check_base_class_offset(lv, (C9*)(E9x0*), ABISELECT(16,12), "G9x0y5");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(32,24), "G9x0y5");
+    check_base_class_offset(lv, (E9x0*), ABISELECT(16,12), "G9x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G9x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G9x0y5.ff");
+    test_class_info(&lv, &cd_G9x0y5);
+    dp->~G9x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y5(Test_G9x0y5, "G9x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y5C1Ev();
+extern void _ZN6G9x0y5D1Ev();
+Name_Map name_map_G9x0y5[] = {
+  NSPAIR(_ZN6G9x0y5C1Ev),
+  NSPAIR(_ZN6G9x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G9x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(48,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    ABISELECT(16,12), //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI6G9x0y5[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G9x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y5[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI6G9x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y5[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y5[] = {
+  {&(_ZTV6G9x0y5[4]),  4,12},
+  {&(_ZTV6G9x0y5[8]),  8,12},
+  {&(_ZTV6G9x0y5[11]),  11,12},
+  {&(_tg__ZTV4E9x0__6G9x0y5[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y5[];
+extern  VTBL_ENTRY _ZTV6G9x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y5[];
+Class_Descriptor cd_G9x0y5 = {  "G9x0y5", // class name
+  bases_G9x0y5, 6,
+  &(vtc_G9x0y5[0]), // expected_vtbl_contents
+  &(vtt_G9x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G9x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y5),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y5),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y6  : E9x0 , virtual F0 {
+  int ff;
+  ~G9x0y6(); // tgen
+  G9x0y6(); // tgen
+};
+//SIG(1 G9x0y6) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G9x0y6 ::~G9x0y6(){ note_dtor("G9x0y6", this);} // tgen
+G9x0y6 ::G9x0y6(){ note_ctor("G9x0y6", this);} // tgen
+
+static void Test_G9x0y6()
+{
+  extern Class_Descriptor cd_G9x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G9x0y6, buf);
+    G9x0y6 *dp, &lv = *(dp=new (buf) G9x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G9x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y6)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), 0, "G9x0y6");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(36,28), "G9x0y6");
+    check_base_class_offset(lv, (C9*)(E9x0*), 0, "G9x0y6");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(16,12), "G9x0y6");
+    check_base_class_offset(lv, (E9x0*), 0, "G9x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(40,32), "G9x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G9x0y6.ff");
+    test_class_info(&lv, &cd_G9x0y6);
+    dp->~G9x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y6(Test_G9x0y6, "G9x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y6C1Ev();
+extern void _ZN6G9x0y6D1Ev();
+Name_Map name_map_G9x0y6[] = {
+  NSPAIR(_ZN6G9x0y6C1Ev),
+  NSPAIR(_ZN6G9x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G9x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(40,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y6[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G9x0y6[] = {
+  ABISELECT(40,32),
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI6G9x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y6[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y6[] = {
+  ABISELECT(36,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y6[] = {
+  {&(_ZTV6G9x0y6[4]),  4,8},
+  {&(_tg__ZTV4E9x0__6G9x0y6[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y6[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y6[];
+extern  VTBL_ENTRY _ZTV6G9x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y6[];
+Class_Descriptor cd_G9x0y6 = {  "G9x0y6", // class name
+  bases_G9x0y6, 6,
+  &(vtc_G9x0y6[0]), // expected_vtbl_contents
+  &(vtt_G9x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI6G9x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y6),8, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y6),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G9x0y7  : virtual E9x0 , virtual F0 {
+  int ff;
+  ~G9x0y7(); // tgen
+  G9x0y7(); // tgen
+};
+//SIG(1 G9x0y7) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G9x0y7 ::~G9x0y7(){ note_dtor("G9x0y7", this);} // tgen
+G9x0y7 ::G9x0y7(){ note_ctor("G9x0y7", this);} // tgen
+
+static void Test_G9x0y7()
+{
+  extern Class_Descriptor cd_G9x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G9x0y7, buf);
+    G9x0y7 *dp, &lv = *(dp=new (buf) G9x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G9x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G9x0y7)");
+    check_base_class_offset(lv, (A1*)(C9*)(E9x0*), ABISELECT(16,8), "G9x0y7");
+    check_base_class_offset(lv, (B0*)(C9*)(E9x0*), ABISELECT(48,32), "G9x0y7");
+    check_base_class_offset(lv, (C9*)(E9x0*), ABISELECT(16,8), "G9x0y7");
+    check_base_class_offset(lv, (D1*)(E9x0*), ABISELECT(32,20), "G9x0y7");
+    check_base_class_offset(lv, (E9x0*), ABISELECT(16,8), "G9x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G9x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G9x0y7.ff");
+    test_class_info(&lv, &cd_G9x0y7);
+    dp->~G9x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG9x0y7(Test_G9x0y7, "G9x0y7", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN6G9x0y7C1Ev();
+extern void _ZN6G9x0y7D1Ev();
+Name_Map name_map_G9x0y7[] = {
+  NSPAIR(_ZN6G9x0y7C1Ev),
+  NSPAIR(_ZN6G9x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C9;
+extern VTBL_ENTRY _ZTI2C9[];
+extern  VTBL_ENTRY _ZTV2C9[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT2C9[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E9x0;
+extern VTBL_ENTRY _ZTI4E9x0[];
+extern  VTBL_ENTRY _ZTV4E9x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT4E9x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G9x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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_B0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C9,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    3, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E9x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI6G9x0y7[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G9x0y7[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI6G9x0y7[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI6G9x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI6G9x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV6G9x0y7[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV4E9x0__6G9x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI4E9x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2C94E9x0__6G9x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI2C9[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G9x0y7[] = {
+  {&(_ZTV6G9x0y7[5]),  5,13},
+  {&(_ZTV6G9x0y7[9]),  9,13},
+  {&(_ZTV6G9x0y7[12]),  12,13},
+  {&(_tg__ZTV4E9x0__6G9x0y7[3]),  3,4},
+  {&(_tg__ZTV2C94E9x0__6G9x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI6G9x0y7[];
+extern  VTBL_ENTRY _ZTV6G9x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT6G9x0y7[];
+Class_Descriptor cd_G9x0y7 = {  "G9x0y7", // class name
+  bases_G9x0y7, 6,
+  &(vtc_G9x0y7[0]), // expected_vtbl_contents
+  &(vtt_G9x0y7[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI6G9x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV6G9x0y7),13, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT6G9x0y7),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E10x0  : C10 , D1 {
+  int fd;
+  ~E10x0(); // tgen
+  E10x0(); // tgen
+};
+//SIG(-1 E10x0) C1{ BC2{ VBC3{ Fi} VBC4{ Fi} Fi} BC5{ v1 Fi} Fi}
+
+
+E10x0 ::~E10x0(){ note_dtor("E10x0", this);} // tgen
+E10x0 ::E10x0(){ note_ctor("E10x0", this);} // tgen
+
+static void Test_E10x0()
+{
+  extern Class_Descriptor cd_E10x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E10x0, buf);
+    E10x0 *dp, &lv = *(dp=new (buf) E10x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E10x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E10x0)");
+    check_base_class_offset(lv, (A0*)(C10*), ABISELECT(32,20), "E10x0");
+    check_base_class_offset(lv, (B0*)(C10*), ABISELECT(36,24), "E10x0");
+    check_base_class_offset(lv, (C10*), 0, "E10x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,8), "E10x0");
+    check_field_offset(lv, fd, ABISELECT(28,16), "E10x0.fd");
+    test_class_info(&lv, &cd_E10x0);
+    dp->~E10x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE10x0(Test_E10x0, "E10x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN5E10x0C1Ev();
+extern void _ZN5E10x0D1Ev();
+Name_Map name_map_E10x0[] = {
+  NSPAIR(_ZN5E10x0C1Ev),
+  NSPAIR(_ZN5E10x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E10x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    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
+    1, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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 _ZTI5E10x0[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E10x0[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E10x0[];
+static  VTBL_ENTRY _tg__ZTV3C10__5E10x0[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_E10x0[] = {
+  {&(_ZTV5E10x0[4]),  4,7},
+  {&(_tg__ZTV3C10__5E10x0[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+Class_Descriptor cd_E10x0 = {  "E10x0", // class name
+  bases_E10x0, 4,
+  &(vtc_E10x0[0]), // expected_vtbl_contents
+  &(vtt_E10x0[0]), // expected_vtt_contents
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI5E10x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E10x0),7, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E10x0),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  G10x0y0  : E10x0 , F1 {
+  int ff;
+  ~G10x0y0(); // tgen
+  G10x0y0(); // tgen
+};
+//SIG(1 G10x0y0) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G10x0y0 ::~G10x0y0(){ note_dtor("G10x0y0", this);} // tgen
+G10x0y0 ::G10x0y0(){ note_ctor("G10x0y0", this);} // tgen
+
+static void Test_G10x0y0()
+{
+  extern Class_Descriptor cd_G10x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G10x0y0, buf);
+    G10x0y0 *dp, &lv = *(dp=new (buf) G10x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G10x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y0)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(48,32), "G10x0y0");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(52,36), "G10x0y0");
+    check_base_class_offset(lv, (C10*)(E10x0*), 0, "G10x0y0");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(16,8), "G10x0y0");
+    check_base_class_offset(lv, (E10x0*), 0, "G10x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,20), "G10x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,28), "G10x0y0.ff");
+    test_class_info(&lv, &cd_G10x0y0);
+    dp->~G10x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y0(Test_G10x0y0, "G10x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y0C1Ev();
+extern void _ZN7G10x0y0D1Ev();
+Name_Map name_map_G10x0y0[] = {
+  NSPAIR(_ZN7G10x0y0C1Ev),
+  NSPAIR(_ZN7G10x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G10x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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},
+  {&cd_F1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G10x0y0[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G10x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y0[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y0[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y0[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y0[] = {
+  {&(_ZTV7G10x0y0[4]),  4,10},
+  {&(_tg__ZTV5E10x0__7G10x0y0[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y0[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y0[];
+extern  VTBL_ENTRY _ZTV7G10x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y0[];
+Class_Descriptor cd_G10x0y0 = {  "G10x0y0", // class name
+  bases_G10x0y0, 6,
+  &(vtc_G10x0y0[0]), // expected_vtbl_contents
+  &(vtt_G10x0y0[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G10x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y0),10, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y0),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G10x0y1  : virtual E10x0 , F1 {
+  int ff;
+  ~G10x0y1(); // tgen
+  G10x0y1(); // tgen
+};
+//SIG(1 G10x0y1) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ v2 Fi} Fi}
+
+
+G10x0y1 ::~G10x0y1(){ note_dtor("G10x0y1", this);} // tgen
+G10x0y1 ::G10x0y1(){ note_ctor("G10x0y1", this);} // tgen
+
+static void Test_G10x0y1()
+{
+  extern Class_Descriptor cd_G10x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G10x0y1, buf);
+    G10x0y1 *dp, &lv = *(dp=new (buf) G10x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G10x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y1)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(48,32), "G10x0y1");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(52,36), "G10x0y1");
+    check_base_class_offset(lv, (C10*)(E10x0*), ABISELECT(16,12), "G10x0y1");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(32,20), "G10x0y1");
+    check_base_class_offset(lv, (E10x0*), ABISELECT(16,12), "G10x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G10x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G10x0y1.ff");
+    test_class_info(&lv, &cd_G10x0y1);
+    dp->~G10x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y1(Test_G10x0y1, "G10x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y1C1Ev();
+extern void _ZN7G10x0y1D1Ev();
+Name_Map name_map_G10x0y1[] = {
+  NSPAIR(_ZN7G10x0y1C1Ev),
+  NSPAIR(_ZN7G10x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G10x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    ABISELECT(16,12), //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},
+  {&cd_F1,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G10x0y1[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,8),
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G10x0y1[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G10x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y1[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y1[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y1[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y1[] = {
+  {&(_ZTV7G10x0y1[5]),  5,14},
+  {&(_ZTV7G10x0y1[11]),  11,14},
+  {&(_ZTV7G10x0y1[13]),  13,14},
+  {&(_tg__ZTV5E10x0__7G10x0y1[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y1[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y1[];
+extern  VTBL_ENTRY _ZTV7G10x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y1[];
+Class_Descriptor cd_G10x0y1 = {  "G10x0y1", // class name
+  bases_G10x0y1, 6,
+  &(vtc_G10x0y1[0]), // expected_vtbl_contents
+  &(vtt_G10x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G10x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y1),14, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y1),5, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G10x0y2  : E10x0 , virtual F1 {
+  int ff;
+  ~G10x0y2(); // tgen
+  G10x0y2(); // tgen
+};
+//SIG(1 G10x0y2) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G10x0y2 ::~G10x0y2(){ note_dtor("G10x0y2", this);} // tgen
+G10x0y2 ::G10x0y2(){ note_ctor("G10x0y2", this);} // tgen
+
+static void Test_G10x0y2()
+{
+  extern Class_Descriptor cd_G10x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G10x0y2, buf);
+    G10x0y2 *dp, &lv = *(dp=new (buf) G10x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G10x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y2)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(36,24), "G10x0y2");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(40,28), "G10x0y2");
+    check_base_class_offset(lv, (C10*)(E10x0*), 0, "G10x0y2");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(16,8), "G10x0y2");
+    check_base_class_offset(lv, (E10x0*), 0, "G10x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G10x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G10x0y2.ff");
+    test_class_info(&lv, &cd_G10x0y2);
+    dp->~G10x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y2(Test_G10x0y2, "G10x0y2", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y2C1Ev();
+extern void _ZN7G10x0y2D1Ev();
+Name_Map name_map_G10x0y2[] = {
+  NSPAIR(_ZN7G10x0y2C1Ev),
+  NSPAIR(_ZN7G10x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G10x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(40,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(48,32), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G10x0y2[] = {
+  ABISELECT(48,32),
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y2[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G10x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y2[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y2[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y2[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y2[] = {
+  {&(_ZTV7G10x0y2[5]),  5,12},
+  {&(_tg__ZTV5E10x0__7G10x0y2[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y2[4]),  4,4},
+  {&(_ZTV7G10x0y2[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI7G10x0y2[];
+extern  VTBL_ENTRY _ZTV7G10x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y2[];
+Class_Descriptor cd_G10x0y2 = {  "G10x0y2", // class name
+  bases_G10x0y2, 6,
+  &(vtc_G10x0y2[0]), // expected_vtbl_contents
+  &(vtt_G10x0y2[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI7G10x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y2),12, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y2),4, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G10x0y3  : virtual E10x0 , virtual F1 {
+  int ff;
+  ~G10x0y3(); // tgen
+  G10x0y3(); // tgen
+};
+//SIG(1 G10x0y3) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ v2 Fi} Fi}
+
+
+G10x0y3 ::~G10x0y3(){ note_dtor("G10x0y3", this);} // tgen
+G10x0y3 ::G10x0y3(){ note_ctor("G10x0y3", this);} // tgen
+
+static void Test_G10x0y3()
+{
+  extern Class_Descriptor cd_G10x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G10x0y3, buf);
+    G10x0y3 *dp, &lv = *(dp=new (buf) G10x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G10x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y3)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(48,28), "G10x0y3");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(52,32), "G10x0y3");
+    check_base_class_offset(lv, (C10*)(E10x0*), ABISELECT(16,8), "G10x0y3");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(32,16), "G10x0y3");
+    check_base_class_offset(lv, (E10x0*), ABISELECT(16,8), "G10x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G10x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G10x0y3.ff");
+    test_class_info(&lv, &cd_G10x0y3);
+    dp->~G10x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y3(Test_G10x0y3, "G10x0y3", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y3C1Ev();
+extern void _ZN7G10x0y3D1Ev();
+Name_Map name_map_G10x0y3[] = {
+  NSPAIR(_ZN7G10x0y3C1Ev),
+  NSPAIR(_ZN7G10x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G10x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(52,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G10x0y3[] = {
+  ABISELECT(56,36),
+  ABISELECT(52,32),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y3[0]),
+  ABISELECT(16,8),
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y3[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G10x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G10x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y3[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y3[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y3[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y3[] = {
+  {&(_ZTV7G10x0y3[6]),  6,18},
+  {&(_ZTV7G10x0y3[11]),  11,18},
+  {&(_ZTV7G10x0y3[13]),  13,18},
+  {&(_ZTV7G10x0y3[17]),  17,18},
+  {&(_tg__ZTV5E10x0__7G10x0y3[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y3[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y3[];
+extern  VTBL_ENTRY _ZTV7G10x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y3[];
+Class_Descriptor cd_G10x0y3 = {  "G10x0y3", // class name
+  bases_G10x0y3, 6,
+  &(vtc_G10x0y3[0]), // expected_vtbl_contents
+  &(vtt_G10x0y3[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G10x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y3),18, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y3),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G10x0y4  : E10x0 , F0 {
+  int ff;
+  ~G10x0y4(); // tgen
+  G10x0y4(); // tgen
+};
+//SIG(1 G10x0y4) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G10x0y4 ::~G10x0y4(){ note_dtor("G10x0y4", this);} // tgen
+G10x0y4 ::G10x0y4(){ note_ctor("G10x0y4", this);} // tgen
+
+static void Test_G10x0y4()
+{
+  extern Class_Descriptor cd_G10x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G10x0y4, buf);
+    G10x0y4 *dp, &lv = *(dp=new (buf) G10x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G10x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y4)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(40,28), "G10x0y4");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(44,32), "G10x0y4");
+    check_base_class_offset(lv, (C10*)(E10x0*), 0, "G10x0y4");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(16,8), "G10x0y4");
+    check_base_class_offset(lv, (E10x0*), 0, "G10x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,20), "G10x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,24), "G10x0y4.ff");
+    test_class_info(&lv, &cd_G10x0y4);
+    dp->~G10x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y4(Test_G10x0y4, "G10x0y4", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y4C1Ev();
+extern void _ZN7G10x0y4D1Ev();
+Name_Map name_map_G10x0y4[] = {
+  NSPAIR(_ZN7G10x0y4C1Ev),
+  NSPAIR(_ZN7G10x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G10x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(40,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(44,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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},
+  {&cd_F0,    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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y4[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G10x0y4[] = {
+  ABISELECT(44,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y4[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y4[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y4[] = {
+  ABISELECT(44,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y4[] = {
+  ABISELECT(44,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y4[] = {
+  {&(_ZTV7G10x0y4[4]),  4,7},
+  {&(_tg__ZTV5E10x0__7G10x0y4[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y4[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y4[];
+extern  VTBL_ENTRY _ZTV7G10x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y4[];
+Class_Descriptor cd_G10x0y4 = {  "G10x0y4", // class name
+  bases_G10x0y4, 6,
+  &(vtc_G10x0y4[0]), // expected_vtbl_contents
+  &(vtt_G10x0y4[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI7G10x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y4),7, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y4),3, //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  G10x0y5  : virtual E10x0 , F0 {
+  int ff;
+  ~G10x0y5(); // tgen
+  G10x0y5(); // tgen
+};
+//SIG(1 G10x0y5) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} BC7{ Fi} Fi}
+
+
+G10x0y5 ::~G10x0y5(){ note_dtor("G10x0y5", this);} // tgen
+G10x0y5 ::G10x0y5(){ note_ctor("G10x0y5", this);} // tgen
+
+static void Test_G10x0y5()
+{
+  extern Class_Descriptor cd_G10x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G10x0y5, buf);
+    G10x0y5 *dp, &lv = *(dp=new (buf) G10x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G10x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y5)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(48,32), "G10x0y5");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(52,36), "G10x0y5");
+    check_base_class_offset(lv, (C10*)(E10x0*), ABISELECT(16,12), "G10x0y5");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(32,20), "G10x0y5");
+    check_base_class_offset(lv, (E10x0*), ABISELECT(16,12), "G10x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G10x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G10x0y5.ff");
+    test_class_info(&lv, &cd_G10x0y5);
+    dp->~G10x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y5(Test_G10x0y5, "G10x0y5", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y5C1Ev();
+extern void _ZN7G10x0y5D1Ev();
+Name_Map name_map_G10x0y5[] = {
+  NSPAIR(_ZN7G10x0y5C1Ev),
+  NSPAIR(_ZN7G10x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G10x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    ABISELECT(16,12), //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},
+  {&cd_F0,    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 _ZTI7G10x0y5[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G10x0y5[] = {
+  ABISELECT(52,36),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y5[0]),
+  ABISELECT(16,8),
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G10x0y5[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G10x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y5[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y5[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y5[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y5[] = {
+  {&(_ZTV7G10x0y5[5]),  5,13},
+  {&(_ZTV7G10x0y5[10]),  10,13},
+  {&(_ZTV7G10x0y5[12]),  12,13},
+  {&(_tg__ZTV5E10x0__7G10x0y5[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y5[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y5[];
+extern  VTBL_ENTRY _ZTV7G10x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y5[];
+Class_Descriptor cd_G10x0y5 = {  "G10x0y5", // class name
+  bases_G10x0y5, 6,
+  &(vtc_G10x0y5[0]), // expected_vtbl_contents
+  &(vtt_G10x0y5[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G10x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y5),13, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y5),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  G10x0y6  : E10x0 , virtual F0 {
+  int ff;
+  ~G10x0y6(); // tgen
+  G10x0y6(); // tgen
+};
+//SIG(1 G10x0y6) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G10x0y6 ::~G10x0y6(){ note_dtor("G10x0y6", this);} // tgen
+G10x0y6 ::G10x0y6(){ note_ctor("G10x0y6", this);} // tgen
+
+static void Test_G10x0y6()
+{
+  extern Class_Descriptor cd_G10x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,10)];
+    init_test(&cd_G10x0y6, buf);
+    G10x0y6 *dp, &lv = *(dp=new (buf) G10x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,36), "sizeof(G10x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y6)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(36,24), "G10x0y6");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(40,28), "G10x0y6");
+    check_base_class_offset(lv, (C10*)(E10x0*), 0, "G10x0y6");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(16,8), "G10x0y6");
+    check_base_class_offset(lv, (E10x0*), 0, "G10x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(44,32), "G10x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G10x0y6.ff");
+    test_class_info(&lv, &cd_G10x0y6);
+    dp->~G10x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y6(Test_G10x0y6, "G10x0y6", ABISELECT(48,36));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y6C1Ev();
+extern void _ZN7G10x0y6D1Ev();
+Name_Map name_map_G10x0y6[] = {
+  NSPAIR(_ZN7G10x0y6C1Ev),
+  NSPAIR(_ZN7G10x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G10x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(40,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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},
+  {&cd_F0,    ABISELECT(44,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y6[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G10x0y6[] = {
+  ABISELECT(44,32),
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y6[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y6[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y6[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y6[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y6[] = {
+  {&(_ZTV7G10x0y6[5]),  5,8},
+  {&(_tg__ZTV5E10x0__7G10x0y6[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y6[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y6[];
+extern  VTBL_ENTRY _ZTV7G10x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y6[];
+Class_Descriptor cd_G10x0y6 = {  "G10x0y6", // class name
+  bases_G10x0y6, 6,
+  &(vtc_G10x0y6[0]), // expected_vtbl_contents
+  &(vtt_G10x0y6[0]), // expected_vtt_contents
+  ABISELECT(48,36), // object size
+  NSPAIRA(_ZTI7G10x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y6),8, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y6),3, //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  G10x0y7  : virtual E10x0 , virtual F0 {
+  int ff;
+  ~G10x0y7(); // tgen
+  G10x0y7(); // tgen
+};
+//SIG(1 G10x0y7) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ Fi} Fi} BC6{ v1 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G10x0y7 ::~G10x0y7(){ note_dtor("G10x0y7", this);} // tgen
+G10x0y7 ::G10x0y7(){ note_ctor("G10x0y7", this);} // tgen
+
+static void Test_G10x0y7()
+{
+  extern Class_Descriptor cd_G10x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G10x0y7, buf);
+    G10x0y7 *dp, &lv = *(dp=new (buf) G10x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G10x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G10x0y7)");
+    check_base_class_offset(lv, (A0*)(C10*)(E10x0*), ABISELECT(48,28), "G10x0y7");
+    check_base_class_offset(lv, (B0*)(C10*)(E10x0*), ABISELECT(52,32), "G10x0y7");
+    check_base_class_offset(lv, (C10*)(E10x0*), ABISELECT(16,8), "G10x0y7");
+    check_base_class_offset(lv, (D1*)(E10x0*), ABISELECT(32,16), "G10x0y7");
+    check_base_class_offset(lv, (E10x0*), ABISELECT(16,8), "G10x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(56,36), "G10x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G10x0y7.ff");
+    test_class_info(&lv, &cd_G10x0y7);
+    dp->~G10x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG10x0y7(Test_G10x0y7, "G10x0y7", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN7G10x0y7C1Ev();
+extern void _ZN7G10x0y7D1Ev();
+Name_Map name_map_G10x0y7[] = {
+  NSPAIR(_ZN7G10x0y7C1Ev),
+  NSPAIR(_ZN7G10x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C10;
+extern VTBL_ENTRY _ZTI3C10[];
+extern  VTBL_ENTRY _ZTV3C10[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C10[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E10x0;
+extern VTBL_ENTRY _ZTI5E10x0[];
+extern  VTBL_ENTRY _ZTV5E10x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E10x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G10x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B0,    ABISELECT(52,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C10,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    5, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E10x0,    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},
+  {&cd_F0,    ABISELECT(56,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G10x0y7[];
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G10x0y7[] = {
+  ABISELECT(56,36),
+  ABISELECT(52,32),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G10x0y7[0]),
+  ABISELECT(16,8),
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G10x0y7[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G10x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G10x0y7[];
+static  VTBL_ENTRY _tg__ZTV5E10x0__7G10x0y7[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E10x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C105E10x0__7G10x0y7[] = {
+  ABISELECT(36,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C10[0]),
+};
+static  VTT_ENTRY vtt_G10x0y7[] = {
+  {&(_ZTV7G10x0y7[6]),  6,14},
+  {&(_ZTV7G10x0y7[11]),  11,14},
+  {&(_ZTV7G10x0y7[13]),  13,14},
+  {&(_tg__ZTV5E10x0__7G10x0y7[4]),  4,4},
+  {&(_tg__ZTV3C105E10x0__7G10x0y7[4]),  4,4},
+};
+extern VTBL_ENTRY _ZTI7G10x0y7[];
+extern  VTBL_ENTRY _ZTV7G10x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G10x0y7[];
+Class_Descriptor cd_G10x0y7 = {  "G10x0y7", // class name
+  bases_G10x0y7, 6,
+  &(vtc_G10x0y7[0]), // expected_vtbl_contents
+  &(vtt_G10x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI7G10x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G10x0y7),14, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G10x0y7),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  E11x0  : C11 , D1 {
+  int fd;
+  ~E11x0(); // tgen
+  E11x0(); // tgen
+};
+//SIG(-1 E11x0) C1{ BC2{ VBC3{ v1 Fi} VBC4{ Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E11x0 ::~E11x0(){ note_dtor("E11x0", this);} // tgen
+E11x0 ::E11x0(){ note_ctor("E11x0", this);} // tgen
+
+static void Test_E11x0()
+{
+  extern Class_Descriptor cd_E11x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E11x0, buf);
+    E11x0 *dp, &lv = *(dp=new (buf) E11x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E11x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E11x0)");
+    check_base_class_offset(lv, (A1*)(C11*), ABISELECT(32,20), "E11x0");
+    check_base_class_offset(lv, (B0*)(C11*), ABISELECT(44,28), "E11x0");
+    check_base_class_offset(lv, (C11*), 0, "E11x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,8), "E11x0");
+    check_field_offset(lv, fd, ABISELECT(28,16), "E11x0.fd");
+    test_class_info(&lv, &cd_E11x0);
+    dp->~E11x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE11x0(Test_E11x0, "E11x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN5E11x0C1Ev();
+extern void _ZN5E11x0D1Ev();
+Name_Map name_map_E11x0[] = {
+  NSPAIR(_ZN5E11x0C1Ev),
+  NSPAIR(_ZN5E11x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E11x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(44,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    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
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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 _ZTI5E11x0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_E11x0[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E11x0[];
+static  VTBL_ENTRY _tg__ZTV3C11__5E11x0[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C11__5E11x0[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_E11x0[] = {
+  {&(_ZTV5E11x0[4]),  4,11},
+  {&(_tg__ZTV3C11__5E11x0[4]),  4,4},
+  {&(_tg__ZTV2A1__3C11__5E11x0[3]),  3,4},
+  {&(_ZTV5E11x0[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+Class_Descriptor cd_E11x0 = {  "E11x0", // class name
+  bases_E11x0, 4,
+  &(vtc_E11x0[0]), // expected_vtbl_contents
+  &(vtt_E11x0[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI5E11x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E11x0),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E11x0),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  G11x0y0  : E11x0 , F1 {
+  int ff;
+  ~G11x0y0(); // tgen
+  G11x0y0(); // tgen
+};
+//SIG(1 G11x0y0) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G11x0y0 ::~G11x0y0(){ note_dtor("G11x0y0", this);} // tgen
+G11x0y0 ::G11x0y0(){ note_ctor("G11x0y0", this);} // tgen
+
+static void Test_G11x0y0()
+{
+  extern Class_Descriptor cd_G11x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G11x0y0, buf);
+    G11x0y0 *dp, &lv = *(dp=new (buf) G11x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G11x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y0)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(48,32), "G11x0y0");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(60,40), "G11x0y0");
+    check_base_class_offset(lv, (C11*)(E11x0*), 0, "G11x0y0");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(16,8), "G11x0y0");
+    check_base_class_offset(lv, (E11x0*), 0, "G11x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,20), "G11x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,28), "G11x0y0.ff");
+    test_class_info(&lv, &cd_G11x0y0);
+    dp->~G11x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y0(Test_G11x0y0, "G11x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y0C1Ev();
+extern void _ZN7G11x0y0D1Ev();
+Name_Map name_map_G11x0y0[] = {
+  NSPAIR(_ZN7G11x0y0C1Ev),
+  NSPAIR(_ZN7G11x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G11x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y0[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G11x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G11x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y0[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y0[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y0[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y0[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y0[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y0[] = {
+  {&(_ZTV7G11x0y0[4]),  4,14},
+  {&(_tg__ZTV5E11x0__7G11x0y0[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y0[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y0[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y0[3]),  3,4},
+  {&(_ZTV7G11x0y0[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI7G11x0y0[];
+extern  VTBL_ENTRY _ZTV7G11x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y0[];
+Class_Descriptor cd_G11x0y0 = {  "G11x0y0", // class name
+  bases_G11x0y0, 6,
+  &(vtc_G11x0y0[0]), // expected_vtbl_contents
+  &(vtt_G11x0y0[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G11x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y0),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y0),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y1  : virtual E11x0 , F1 {
+  int ff;
+  ~G11x0y1(); // tgen
+  G11x0y1(); // tgen
+};
+//SIG(1 G11x0y1) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G11x0y1 ::~G11x0y1(){ note_dtor("G11x0y1", this);} // tgen
+G11x0y1 ::G11x0y1(){ note_ctor("G11x0y1", this);} // tgen
+
+static void Test_G11x0y1()
+{
+  extern Class_Descriptor cd_G11x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G11x0y1, buf);
+    G11x0y1 *dp, &lv = *(dp=new (buf) G11x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G11x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y1)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(48,32), "G11x0y1");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(60,40), "G11x0y1");
+    check_base_class_offset(lv, (C11*)(E11x0*), ABISELECT(16,12), "G11x0y1");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(32,20), "G11x0y1");
+    check_base_class_offset(lv, (E11x0*), ABISELECT(16,12), "G11x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G11x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G11x0y1.ff");
+    test_class_info(&lv, &cd_G11x0y1);
+    dp->~G11x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y1(Test_G11x0y1, "G11x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y1C1Ev();
+extern void _ZN7G11x0y1D1Ev();
+Name_Map name_map_G11x0y1[] = {
+  NSPAIR(_ZN7G11x0y1C1Ev),
+  NSPAIR(_ZN7G11x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G11x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y1[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,8),
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G11x0y1[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G11x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G11x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y1[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y1[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y1[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y1[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y1[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y1[] = {
+  {&(_ZTV7G11x0y1[5]),  5,18},
+  {&(_ZTV7G11x0y1[11]),  11,18},
+  {&(_ZTV7G11x0y1[17]),  17,18},
+  {&(_ZTV7G11x0y1[13]),  13,18},
+  {&(_tg__ZTV5E11x0__7G11x0y1[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y1[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y1[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G11x0y1[];
+extern  VTBL_ENTRY _ZTV7G11x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y1[];
+Class_Descriptor cd_G11x0y1 = {  "G11x0y1", // class name
+  bases_G11x0y1, 6,
+  &(vtc_G11x0y1[0]), // expected_vtbl_contents
+  &(vtt_G11x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G11x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y1),18, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y1),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y2  : E11x0 , virtual F1 {
+  int ff;
+  ~G11x0y2(); // tgen
+  G11x0y2(); // tgen
+};
+//SIG(1 G11x0y2) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G11x0y2 ::~G11x0y2(){ note_dtor("G11x0y2", this);} // tgen
+G11x0y2 ::G11x0y2(){ note_ctor("G11x0y2", this);} // tgen
+
+static void Test_G11x0y2()
+{
+  extern Class_Descriptor cd_G11x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G11x0y2, buf);
+    G11x0y2 *dp, &lv = *(dp=new (buf) G11x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G11x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y2)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(40,24), "G11x0y2");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(52,32), "G11x0y2");
+    check_base_class_offset(lv, (C11*)(E11x0*), 0, "G11x0y2");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(16,8), "G11x0y2");
+    check_base_class_offset(lv, (E11x0*), 0, "G11x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G11x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G11x0y2.ff");
+    test_class_info(&lv, &cd_G11x0y2);
+    dp->~G11x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y2(Test_G11x0y2, "G11x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y2C1Ev();
+extern void _ZN7G11x0y2D1Ev();
+Name_Map name_map_G11x0y2[] = {
+  NSPAIR(_ZN7G11x0y2C1Ev),
+  NSPAIR(_ZN7G11x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G11x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(52,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI7G11x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G11x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y2[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI7G11x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G11x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y2[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y2[] = {
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y2[] = {
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y2[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y2[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y2[] = {
+  {&(_ZTV7G11x0y2[5]),  5,16},
+  {&(_tg__ZTV5E11x0__7G11x0y2[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y2[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y2[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y2[3]),  3,4},
+  {&(_ZTV7G11x0y2[11]),  11,16},
+  {&(_ZTV7G11x0y2[15]),  15,16},
+};
+extern VTBL_ENTRY _ZTI7G11x0y2[];
+extern  VTBL_ENTRY _ZTV7G11x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y2[];
+Class_Descriptor cd_G11x0y2 = {  "G11x0y2", // class name
+  bases_G11x0y2, 6,
+  &(vtc_G11x0y2[0]), // expected_vtbl_contents
+  &(vtt_G11x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G11x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y2),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y2),7, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y3  : virtual E11x0 , virtual F1 {
+  int ff;
+  ~G11x0y3(); // tgen
+  G11x0y3(); // tgen
+};
+//SIG(1 G11x0y3) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G11x0y3 ::~G11x0y3(){ note_dtor("G11x0y3", this);} // tgen
+G11x0y3 ::G11x0y3(){ note_ctor("G11x0y3", this);} // tgen
+
+static void Test_G11x0y3()
+{
+  extern Class_Descriptor cd_G11x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G11x0y3, buf);
+    G11x0y3 *dp, &lv = *(dp=new (buf) G11x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G11x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y3)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(48,28), "G11x0y3");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(60,36), "G11x0y3");
+    check_base_class_offset(lv, (C11*)(E11x0*), ABISELECT(16,8), "G11x0y3");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(32,16), "G11x0y3");
+    check_base_class_offset(lv, (E11x0*), ABISELECT(16,8), "G11x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G11x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G11x0y3.ff");
+    test_class_info(&lv, &cd_G11x0y3);
+    dp->~G11x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y3(Test_G11x0y3, "G11x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y3C1Ev();
+extern void _ZN7G11x0y3D1Ev();
+Name_Map name_map_G11x0y3[] = {
+  NSPAIR(_ZN7G11x0y3C1Ev),
+  NSPAIR(_ZN7G11x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G11x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(60,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G11x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(60,36),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y3[0]),
+  ABISELECT(16,8),
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y3[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G11x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI7G11x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G11x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y3[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y3[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y3[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y3[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y3[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y3[] = {
+  {&(_ZTV7G11x0y3[6]),  6,22},
+  {&(_ZTV7G11x0y3[11]),  11,22},
+  {&(_ZTV7G11x0y3[17]),  17,22},
+  {&(_ZTV7G11x0y3[13]),  13,22},
+  {&(_ZTV7G11x0y3[21]),  21,22},
+  {&(_tg__ZTV5E11x0__7G11x0y3[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y3[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y3[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G11x0y3[];
+extern  VTBL_ENTRY _ZTV7G11x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y3[];
+Class_Descriptor cd_G11x0y3 = {  "G11x0y3", // class name
+  bases_G11x0y3, 6,
+  &(vtc_G11x0y3[0]), // expected_vtbl_contents
+  &(vtt_G11x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G11x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y3),22, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y3),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y4  : E11x0 , F0 {
+  int ff;
+  ~G11x0y4(); // tgen
+  G11x0y4(); // tgen
+};
+//SIG(1 G11x0y4) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G11x0y4 ::~G11x0y4(){ note_dtor("G11x0y4", this);} // tgen
+G11x0y4 ::G11x0y4(){ note_ctor("G11x0y4", this);} // tgen
+
+static void Test_G11x0y4()
+{
+  extern Class_Descriptor cd_G11x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G11x0y4, buf);
+    G11x0y4 *dp, &lv = *(dp=new (buf) G11x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G11x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y4)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(40,28), "G11x0y4");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(52,36), "G11x0y4");
+    check_base_class_offset(lv, (C11*)(E11x0*), 0, "G11x0y4");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(16,8), "G11x0y4");
+    check_base_class_offset(lv, (E11x0*), 0, "G11x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,20), "G11x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,24), "G11x0y4.ff");
+    test_class_info(&lv, &cd_G11x0y4);
+    dp->~G11x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y4(Test_G11x0y4, "G11x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y4C1Ev();
+extern void _ZN7G11x0y4D1Ev();
+Name_Map name_map_G11x0y4[] = {
+  NSPAIR(_ZN7G11x0y4C1Ev),
+  NSPAIR(_ZN7G11x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G11x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y4[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y4[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y4[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G11x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y4[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y4[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y4[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y4[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y4[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y4[] = {
+  {&(_ZTV7G11x0y4[4]),  4,11},
+  {&(_tg__ZTV5E11x0__7G11x0y4[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y4[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y4[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y4[3]),  3,4},
+  {&(_ZTV7G11x0y4[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI7G11x0y4[];
+extern  VTBL_ENTRY _ZTV7G11x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y4[];
+Class_Descriptor cd_G11x0y4 = {  "G11x0y4", // class name
+  bases_G11x0y4, 6,
+  &(vtc_G11x0y4[0]), // expected_vtbl_contents
+  &(vtt_G11x0y4[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G11x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y4),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y4),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y5  : virtual E11x0 , F0 {
+  int ff;
+  ~G11x0y5(); // tgen
+  G11x0y5(); // tgen
+};
+//SIG(1 G11x0y5) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G11x0y5 ::~G11x0y5(){ note_dtor("G11x0y5", this);} // tgen
+G11x0y5 ::G11x0y5(){ note_ctor("G11x0y5", this);} // tgen
+
+static void Test_G11x0y5()
+{
+  extern Class_Descriptor cd_G11x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G11x0y5, buf);
+    G11x0y5 *dp, &lv = *(dp=new (buf) G11x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G11x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y5)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(48,32), "G11x0y5");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(60,40), "G11x0y5");
+    check_base_class_offset(lv, (C11*)(E11x0*), ABISELECT(16,12), "G11x0y5");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(32,20), "G11x0y5");
+    check_base_class_offset(lv, (E11x0*), ABISELECT(16,12), "G11x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G11x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G11x0y5.ff");
+    test_class_info(&lv, &cd_G11x0y5);
+    dp->~G11x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y5(Test_G11x0y5, "G11x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y5C1Ev();
+extern void _ZN7G11x0y5D1Ev();
+Name_Map name_map_G11x0y5[] = {
+  NSPAIR(_ZN7G11x0y5C1Ev),
+  NSPAIR(_ZN7G11x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G11x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI7G11x0y5[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y5[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y5[0]),
+  ABISELECT(16,8),
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G11x0y5[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G11x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G11x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y5[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y5[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y5[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y5[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y5[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y5[] = {
+  {&(_ZTV7G11x0y5[5]),  5,17},
+  {&(_ZTV7G11x0y5[10]),  10,17},
+  {&(_ZTV7G11x0y5[16]),  16,17},
+  {&(_ZTV7G11x0y5[12]),  12,17},
+  {&(_tg__ZTV5E11x0__7G11x0y5[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y5[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y5[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G11x0y5[];
+extern  VTBL_ENTRY _ZTV7G11x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y5[];
+Class_Descriptor cd_G11x0y5 = {  "G11x0y5", // class name
+  bases_G11x0y5, 6,
+  &(vtc_G11x0y5[0]), // expected_vtbl_contents
+  &(vtt_G11x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G11x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y5),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y5),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y6  : E11x0 , virtual F0 {
+  int ff;
+  ~G11x0y6(); // tgen
+  G11x0y6(); // tgen
+};
+//SIG(1 G11x0y6) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G11x0y6 ::~G11x0y6(){ note_dtor("G11x0y6", this);} // tgen
+G11x0y6 ::G11x0y6(){ note_ctor("G11x0y6", this);} // tgen
+
+static void Test_G11x0y6()
+{
+  extern Class_Descriptor cd_G11x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G11x0y6, buf);
+    G11x0y6 *dp, &lv = *(dp=new (buf) G11x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G11x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y6)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(40,24), "G11x0y6");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(52,32), "G11x0y6");
+    check_base_class_offset(lv, (C11*)(E11x0*), 0, "G11x0y6");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(16,8), "G11x0y6");
+    check_base_class_offset(lv, (E11x0*), 0, "G11x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(56,36), "G11x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G11x0y6.ff");
+    test_class_info(&lv, &cd_G11x0y6);
+    dp->~G11x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y6(Test_G11x0y6, "G11x0y6", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y6C1Ev();
+extern void _ZN7G11x0y6D1Ev();
+Name_Map name_map_G11x0y6[] = {
+  NSPAIR(_ZN7G11x0y6C1Ev),
+  NSPAIR(_ZN7G11x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G11x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(52,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(56,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y6[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y6[] = {
+  ABISELECT(56,36),
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y6[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI7G11x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y6[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y6[] = {
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y6[] = {
+  ABISELECT(52,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y6[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y6[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y6[] = {
+  {&(_ZTV7G11x0y6[5]),  5,12},
+  {&(_tg__ZTV5E11x0__7G11x0y6[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y6[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y6[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y6[3]),  3,4},
+  {&(_ZTV7G11x0y6[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI7G11x0y6[];
+extern  VTBL_ENTRY _ZTV7G11x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y6[];
+Class_Descriptor cd_G11x0y6 = {  "G11x0y6", // class name
+  bases_G11x0y6, 6,
+  &(vtc_G11x0y6[0]), // expected_vtbl_contents
+  &(vtt_G11x0y6[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI7G11x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y6),12, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y6),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G11x0y7  : virtual E11x0 , virtual F0 {
+  int ff;
+  ~G11x0y7(); // tgen
+  G11x0y7(); // tgen
+};
+//SIG(1 G11x0y7) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G11x0y7 ::~G11x0y7(){ note_dtor("G11x0y7", this);} // tgen
+G11x0y7 ::G11x0y7(){ note_ctor("G11x0y7", this);} // tgen
+
+static void Test_G11x0y7()
+{
+  extern Class_Descriptor cd_G11x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G11x0y7, buf);
+    G11x0y7 *dp, &lv = *(dp=new (buf) G11x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G11x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G11x0y7)");
+    check_base_class_offset(lv, (A1*)(C11*)(E11x0*), ABISELECT(48,28), "G11x0y7");
+    check_base_class_offset(lv, (B0*)(C11*)(E11x0*), ABISELECT(60,36), "G11x0y7");
+    check_base_class_offset(lv, (C11*)(E11x0*), ABISELECT(16,8), "G11x0y7");
+    check_base_class_offset(lv, (D1*)(E11x0*), ABISELECT(32,16), "G11x0y7");
+    check_base_class_offset(lv, (E11x0*), ABISELECT(16,8), "G11x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(64,40), "G11x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G11x0y7.ff");
+    test_class_info(&lv, &cd_G11x0y7);
+    dp->~G11x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG11x0y7(Test_G11x0y7, "G11x0y7", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G11x0y7C1Ev();
+extern void _ZN7G11x0y7D1Ev();
+Name_Map name_map_G11x0y7[] = {
+  NSPAIR(_ZN7G11x0y7C1Ev),
+  NSPAIR(_ZN7G11x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C11;
+extern VTBL_ENTRY _ZTI3C11[];
+extern  VTBL_ENTRY _ZTV3C11[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C11[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E11x0;
+extern VTBL_ENTRY _ZTI5E11x0[];
+extern  VTBL_ENTRY _ZTV5E11x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E11x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G11x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B0,    ABISELECT(60,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C11,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E11x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(64,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G11x0y7[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY vtc_G11x0y7[] = {
+  ABISELECT(64,40),
+  ABISELECT(60,36),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G11x0y7[0]),
+  ABISELECT(16,8),
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G11x0y7[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G11x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI7G11x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G11x0y7[];
+static  VTBL_ENTRY _tg__ZTV5E11x0__7G11x0y7[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C115E11x0__7G11x0y7[] = {
+  ABISELECT(44,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C115E11x0__7G11x0y7[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C11[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E11x0__7G11x0y7[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E11x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+static  VTT_ENTRY vtt_G11x0y7[] = {
+  {&(_ZTV7G11x0y7[6]),  6,18},
+  {&(_ZTV7G11x0y7[11]),  11,18},
+  {&(_ZTV7G11x0y7[17]),  17,18},
+  {&(_ZTV7G11x0y7[13]),  13,18},
+  {&(_tg__ZTV5E11x0__7G11x0y7[4]),  4,4},
+  {&(_tg__ZTV3C115E11x0__7G11x0y7[4]),  4,4},
+  {&(_tg__ZTV2A1__3C115E11x0__7G11x0y7[3]),  3,4},
+  {&(_tg__ZTV2A1__5E11x0__7G11x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G11x0y7[];
+extern  VTBL_ENTRY _ZTV7G11x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G11x0y7[];
+Class_Descriptor cd_G11x0y7 = {  "G11x0y7", // class name
+  bases_G11x0y7, 6,
+  &(vtc_G11x0y7[0]), // expected_vtbl_contents
+  &(vtt_G11x0y7[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G11x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G11x0y7),18, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G11x0y7),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E12x0  : C12 , D1 {
+  int fd;
+  ~E12x0(); // tgen
+  E12x0(); // tgen
+};
+//SIG(-1 E12x0) C1{ BC2{ BC3{ Fi} VBC4{ v1 Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E12x0 ::~E12x0(){ note_dtor("E12x0", this);} // tgen
+E12x0 ::E12x0(){ note_ctor("E12x0", this);} // tgen
+
+static void Test_E12x0()
+{
+  extern Class_Descriptor cd_E12x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E12x0, buf);
+    E12x0 *dp, &lv = *(dp=new (buf) E12x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E12x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E12x0)");
+    check_base_class_offset(lv, (A0*)(C12*), ABISELECT(8,4), "E12x0");
+    check_base_class_offset(lv, (B1*)(C12*), ABISELECT(32,24), "E12x0");
+    check_base_class_offset(lv, (C12*), 0, "E12x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E12x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E12x0.fd");
+    test_class_info(&lv, &cd_E12x0);
+    dp->~E12x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE12x0(Test_E12x0, "E12x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN5E12x0C1Ev();
+extern void _ZN5E12x0D1Ev();
+Name_Map name_map_E12x0[] = {
+  NSPAIR(_ZN5E12x0C1Ev),
+  NSPAIR(_ZN5E12x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E12x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //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_C12,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI5E12x0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_E12x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E12x0[];
+static  VTBL_ENTRY _tg__ZTV3C12__5E12x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C12__5E12x0[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_E12x0[] = {
+  {&(_ZTV5E12x0[3]),  3,10},
+  {&(_tg__ZTV3C12__5E12x0[3]),  3,3},
+  {&(_tg__ZTV2B1__3C12__5E12x0[3]),  3,4},
+  {&(_ZTV5E12x0[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+Class_Descriptor cd_E12x0 = {  "E12x0", // class name
+  bases_E12x0, 4,
+  &(vtc_E12x0[0]), // expected_vtbl_contents
+  &(vtt_E12x0[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI5E12x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E12x0),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E12x0),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  G12x0y0  : E12x0 , F1 {
+  int ff;
+  ~G12x0y0(); // tgen
+  G12x0y0(); // tgen
+};
+//SIG(1 G12x0y0) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G12x0y0 ::~G12x0y0(){ note_dtor("G12x0y0", this);} // tgen
+G12x0y0 ::G12x0y0(){ note_ctor("G12x0y0", this);} // tgen
+
+static void Test_G12x0y0()
+{
+  extern Class_Descriptor cd_G12x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G12x0y0, buf);
+    G12x0y0 *dp, &lv = *(dp=new (buf) G12x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G12x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y0)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(8,4), "G12x0y0");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(48,36), "G12x0y0");
+    check_base_class_offset(lv, (C12*)(E12x0*), 0, "G12x0y0");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(16,12), "G12x0y0");
+    check_base_class_offset(lv, (E12x0*), 0, "G12x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G12x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G12x0y0.ff");
+    test_class_info(&lv, &cd_G12x0y0);
+    dp->~G12x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y0(Test_G12x0y0, "G12x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y0C1Ev();
+extern void _ZN7G12x0y0D1Ev();
+Name_Map name_map_G12x0y0[] = {
+  NSPAIR(_ZN7G12x0y0C1Ev),
+  NSPAIR(_ZN7G12x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G12x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y0[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G12x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G12x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y0[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y0[] = {
+  {&(_ZTV7G12x0y0[3]),  3,13},
+  {&(_tg__ZTV5E12x0__7G12x0y0[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y0[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y0[3]),  3,4},
+  {&(_ZTV7G12x0y0[12]),  12,13},
+};
+extern VTBL_ENTRY _ZTI7G12x0y0[];
+extern  VTBL_ENTRY _ZTV7G12x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y0[];
+Class_Descriptor cd_G12x0y0 = {  "G12x0y0", // class name
+  bases_G12x0y0, 6,
+  &(vtc_G12x0y0[0]), // expected_vtbl_contents
+  &(vtt_G12x0y0[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G12x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y0),13, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y0),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y1  : virtual E12x0 , F1 {
+  int ff;
+  ~G12x0y1(); // tgen
+  G12x0y1(); // tgen
+};
+//SIG(1 G12x0y1) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G12x0y1 ::~G12x0y1(){ note_dtor("G12x0y1", this);} // tgen
+G12x0y1 ::G12x0y1(){ note_ctor("G12x0y1", this);} // tgen
+
+static void Test_G12x0y1()
+{
+  extern Class_Descriptor cd_G12x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G12x0y1, buf);
+    G12x0y1 *dp, &lv = *(dp=new (buf) G12x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G12x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y1)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(24,16), "G12x0y1");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(48,36), "G12x0y1");
+    check_base_class_offset(lv, (C12*)(E12x0*), ABISELECT(16,12), "G12x0y1");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(32,24), "G12x0y1");
+    check_base_class_offset(lv, (E12x0*), ABISELECT(16,12), "G12x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G12x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G12x0y1.ff");
+    test_class_info(&lv, &cd_G12x0y1);
+    dp->~G12x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y1(Test_G12x0y1, "G12x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y1C1Ev();
+extern void _ZN7G12x0y1D1Ev();
+Name_Map name_map_G12x0y1[] = {
+  NSPAIR(_ZN7G12x0y1C1Ev),
+  NSPAIR(_ZN7G12x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G12x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_C12,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y1[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G12x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G12x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y1[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y1[] = {
+  {&(_ZTV7G12x0y1[4]),  4,16},
+  {&(_ZTV7G12x0y1[9]),  9,16},
+  {&(_ZTV7G12x0y1[15]),  15,16},
+  {&(_ZTV7G12x0y1[11]),  11,16},
+  {&(_tg__ZTV5E12x0__7G12x0y1[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y1[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G12x0y1[];
+extern  VTBL_ENTRY _ZTV7G12x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y1[];
+Class_Descriptor cd_G12x0y1 = {  "G12x0y1", // class name
+  bases_G12x0y1, 6,
+  &(vtc_G12x0y1[0]), // expected_vtbl_contents
+  &(vtt_G12x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G12x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y1),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y1),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y2  : E12x0 , virtual F1 {
+  int ff;
+  ~G12x0y2(); // tgen
+  G12x0y2(); // tgen
+};
+//SIG(1 G12x0y2) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G12x0y2 ::~G12x0y2(){ note_dtor("G12x0y2", this);} // tgen
+G12x0y2 ::G12x0y2(){ note_ctor("G12x0y2", this);} // tgen
+
+static void Test_G12x0y2()
+{
+  extern Class_Descriptor cd_G12x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G12x0y2, buf);
+    G12x0y2 *dp, &lv = *(dp=new (buf) G12x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G12x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y2)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(8,4), "G12x0y2");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(40,28), "G12x0y2");
+    check_base_class_offset(lv, (C12*)(E12x0*), 0, "G12x0y2");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(16,12), "G12x0y2");
+    check_base_class_offset(lv, (E12x0*), 0, "G12x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G12x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G12x0y2.ff");
+    test_class_info(&lv, &cd_G12x0y2);
+    dp->~G12x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y2(Test_G12x0y2, "G12x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y2C1Ev();
+extern void _ZN7G12x0y2D1Ev();
+Name_Map name_map_G12x0y2[] = {
+  NSPAIR(_ZN7G12x0y2C1Ev),
+  NSPAIR(_ZN7G12x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G12x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI7G12x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G12x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y2[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G12x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G12x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y2[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y2[] = {
+  {&(_ZTV7G12x0y2[4]),  4,15},
+  {&(_tg__ZTV5E12x0__7G12x0y2[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y2[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y2[3]),  3,4},
+  {&(_ZTV7G12x0y2[10]),  10,15},
+  {&(_ZTV7G12x0y2[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI7G12x0y2[];
+extern  VTBL_ENTRY _ZTV7G12x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y2[];
+Class_Descriptor cd_G12x0y2 = {  "G12x0y2", // class name
+  bases_G12x0y2, 6,
+  &(vtc_G12x0y2[0]), // expected_vtbl_contents
+  &(vtt_G12x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G12x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y2),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y2),7, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y3  : virtual E12x0 , virtual F1 {
+  int ff;
+  ~G12x0y3(); // tgen
+  G12x0y3(); // tgen
+};
+//SIG(1 G12x0y3) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G12x0y3 ::~G12x0y3(){ note_dtor("G12x0y3", this);} // tgen
+G12x0y3 ::G12x0y3(){ note_ctor("G12x0y3", this);} // tgen
+
+static void Test_G12x0y3()
+{
+  extern Class_Descriptor cd_G12x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G12x0y3, buf);
+    G12x0y3 *dp, &lv = *(dp=new (buf) G12x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G12x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y3)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(24,12), "G12x0y3");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(48,32), "G12x0y3");
+    check_base_class_offset(lv, (C12*)(E12x0*), ABISELECT(16,8), "G12x0y3");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(32,20), "G12x0y3");
+    check_base_class_offset(lv, (E12x0*), ABISELECT(16,8), "G12x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G12x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G12x0y3.ff");
+    test_class_info(&lv, &cd_G12x0y3);
+    dp->~G12x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y3(Test_G12x0y3, "G12x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y3C1Ev();
+extern void _ZN7G12x0y3D1Ev();
+Name_Map name_map_G12x0y3[] = {
+  NSPAIR(_ZN7G12x0y3C1Ev),
+  NSPAIR(_ZN7G12x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G12x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G12x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y3[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G12x0y3[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G12x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G12x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G12x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y3[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y3[] = {
+  {&(_ZTV7G12x0y3[5]),  5,20},
+  {&(_ZTV7G12x0y3[9]),  9,20},
+  {&(_ZTV7G12x0y3[15]),  15,20},
+  {&(_ZTV7G12x0y3[11]),  11,20},
+  {&(_ZTV7G12x0y3[19]),  19,20},
+  {&(_tg__ZTV5E12x0__7G12x0y3[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y3[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G12x0y3[];
+extern  VTBL_ENTRY _ZTV7G12x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y3[];
+Class_Descriptor cd_G12x0y3 = {  "G12x0y3", // class name
+  bases_G12x0y3, 6,
+  &(vtc_G12x0y3[0]), // expected_vtbl_contents
+  &(vtt_G12x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G12x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y3),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y3),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y4  : E12x0 , F0 {
+  int ff;
+  ~G12x0y4(); // tgen
+  G12x0y4(); // tgen
+};
+//SIG(1 G12x0y4) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G12x0y4 ::~G12x0y4(){ note_dtor("G12x0y4", this);} // tgen
+G12x0y4 ::G12x0y4(){ note_ctor("G12x0y4", this);} // tgen
+
+static void Test_G12x0y4()
+{
+  extern Class_Descriptor cd_G12x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G12x0y4, buf);
+    G12x0y4 *dp, &lv = *(dp=new (buf) G12x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G12x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y4)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(8,4), "G12x0y4");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(40,32), "G12x0y4");
+    check_base_class_offset(lv, (C12*)(E12x0*), 0, "G12x0y4");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(16,12), "G12x0y4");
+    check_base_class_offset(lv, (E12x0*), 0, "G12x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G12x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G12x0y4.ff");
+    test_class_info(&lv, &cd_G12x0y4);
+    dp->~G12x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y4(Test_G12x0y4, "G12x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y4C1Ev();
+extern void _ZN7G12x0y4D1Ev();
+Name_Map name_map_G12x0y4[] = {
+  NSPAIR(_ZN7G12x0y4C1Ev),
+  NSPAIR(_ZN7G12x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G12x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,32), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y4[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y4[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI7G12x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y4[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y4[] = {
+  {&(_ZTV7G12x0y4[3]),  3,10},
+  {&(_tg__ZTV5E12x0__7G12x0y4[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y4[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y4[3]),  3,4},
+  {&(_ZTV7G12x0y4[9]),  9,10},
+};
+extern VTBL_ENTRY _ZTI7G12x0y4[];
+extern  VTBL_ENTRY _ZTV7G12x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y4[];
+Class_Descriptor cd_G12x0y4 = {  "G12x0y4", // class name
+  bases_G12x0y4, 6,
+  &(vtc_G12x0y4[0]), // expected_vtbl_contents
+  &(vtt_G12x0y4[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G12x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y4),10, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y4),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y5  : virtual E12x0 , F0 {
+  int ff;
+  ~G12x0y5(); // tgen
+  G12x0y5(); // tgen
+};
+//SIG(1 G12x0y5) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G12x0y5 ::~G12x0y5(){ note_dtor("G12x0y5", this);} // tgen
+G12x0y5 ::G12x0y5(){ note_ctor("G12x0y5", this);} // tgen
+
+static void Test_G12x0y5()
+{
+  extern Class_Descriptor cd_G12x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G12x0y5, buf);
+    G12x0y5 *dp, &lv = *(dp=new (buf) G12x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G12x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y5)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(24,16), "G12x0y5");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(48,36), "G12x0y5");
+    check_base_class_offset(lv, (C12*)(E12x0*), ABISELECT(16,12), "G12x0y5");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(32,24), "G12x0y5");
+    check_base_class_offset(lv, (E12x0*), ABISELECT(16,12), "G12x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G12x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G12x0y5.ff");
+    test_class_info(&lv, &cd_G12x0y5);
+    dp->~G12x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y5(Test_G12x0y5, "G12x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y5C1Ev();
+extern void _ZN7G12x0y5D1Ev();
+Name_Map name_map_G12x0y5[] = {
+  NSPAIR(_ZN7G12x0y5C1Ev),
+  NSPAIR(_ZN7G12x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G12x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //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_C12,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    ABISELECT(16,12), //bcp->offset
+    4, //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI7G12x0y5[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y5[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y5[0]),
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G12x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G12x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y5[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y5[] = {
+  {&(_ZTV7G12x0y5[4]),  4,15},
+  {&(_ZTV7G12x0y5[8]),  8,15},
+  {&(_ZTV7G12x0y5[14]),  14,15},
+  {&(_ZTV7G12x0y5[10]),  10,15},
+  {&(_tg__ZTV5E12x0__7G12x0y5[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y5[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G12x0y5[];
+extern  VTBL_ENTRY _ZTV7G12x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y5[];
+Class_Descriptor cd_G12x0y5 = {  "G12x0y5", // class name
+  bases_G12x0y5, 6,
+  &(vtc_G12x0y5[0]), // expected_vtbl_contents
+  &(vtt_G12x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G12x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y5),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y5),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y6  : E12x0 , virtual F0 {
+  int ff;
+  ~G12x0y6(); // tgen
+  G12x0y6(); // tgen
+};
+//SIG(1 G12x0y6) C1{ BC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G12x0y6 ::~G12x0y6(){ note_dtor("G12x0y6", this);} // tgen
+G12x0y6 ::G12x0y6(){ note_ctor("G12x0y6", this);} // tgen
+
+static void Test_G12x0y6()
+{
+  extern Class_Descriptor cd_G12x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G12x0y6, buf);
+    G12x0y6 *dp, &lv = *(dp=new (buf) G12x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G12x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y6)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(8,4), "G12x0y6");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(40,28), "G12x0y6");
+    check_base_class_offset(lv, (C12*)(E12x0*), 0, "G12x0y6");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(16,12), "G12x0y6");
+    check_base_class_offset(lv, (E12x0*), 0, "G12x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G12x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G12x0y6.ff");
+    test_class_info(&lv, &cd_G12x0y6);
+    dp->~G12x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y6(Test_G12x0y6, "G12x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y6C1Ev();
+extern void _ZN7G12x0y6D1Ev();
+Name_Map name_map_G12x0y6[] = {
+  NSPAIR(_ZN7G12x0y6C1Ev),
+  NSPAIR(_ZN7G12x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G12x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y6[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y6[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y6[0]),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G12x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G12x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y6[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y6[] = {
+  {&(_ZTV7G12x0y6[4]),  4,11},
+  {&(_tg__ZTV5E12x0__7G12x0y6[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y6[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y6[3]),  3,4},
+  {&(_ZTV7G12x0y6[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI7G12x0y6[];
+extern  VTBL_ENTRY _ZTV7G12x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y6[];
+Class_Descriptor cd_G12x0y6 = {  "G12x0y6", // class name
+  bases_G12x0y6, 6,
+  &(vtc_G12x0y6[0]), // expected_vtbl_contents
+  &(vtt_G12x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G12x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y6),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y6),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G12x0y7  : virtual E12x0 , virtual F0 {
+  int ff;
+  ~G12x0y7(); // tgen
+  G12x0y7(); // tgen
+};
+//SIG(1 G12x0y7) C1{ VBC2{ BC3{ BC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G12x0y7 ::~G12x0y7(){ note_dtor("G12x0y7", this);} // tgen
+G12x0y7 ::G12x0y7(){ note_ctor("G12x0y7", this);} // tgen
+
+static void Test_G12x0y7()
+{
+  extern Class_Descriptor cd_G12x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G12x0y7, buf);
+    G12x0y7 *dp, &lv = *(dp=new (buf) G12x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G12x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G12x0y7)");
+    check_base_class_offset(lv, (A0*)(C12*)(E12x0*), ABISELECT(24,12), "G12x0y7");
+    check_base_class_offset(lv, (B1*)(C12*)(E12x0*), ABISELECT(48,32), "G12x0y7");
+    check_base_class_offset(lv, (C12*)(E12x0*), ABISELECT(16,8), "G12x0y7");
+    check_base_class_offset(lv, (D1*)(E12x0*), ABISELECT(32,20), "G12x0y7");
+    check_base_class_offset(lv, (E12x0*), ABISELECT(16,8), "G12x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(60,40), "G12x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G12x0y7.ff");
+    test_class_info(&lv, &cd_G12x0y7);
+    dp->~G12x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG12x0y7(Test_G12x0y7, "G12x0y7", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G12x0y7C1Ev();
+extern void _ZN7G12x0y7D1Ev();
+Name_Map name_map_G12x0y7[] = {
+  NSPAIR(_ZN7G12x0y7C1Ev),
+  NSPAIR(_ZN7G12x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C12;
+extern VTBL_ENTRY _ZTI3C12[];
+extern  VTBL_ENTRY _ZTV3C12[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C12[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E12x0;
+extern VTBL_ENTRY _ZTI5E12x0[];
+extern  VTBL_ENTRY _ZTV5E12x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E12x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G12x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_C12,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E12x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G12x0y7[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G12x0y7[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G12x0y7[0]),
+  ABISELECT(16,12),
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G12x0y7[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G12x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G12x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G12x0y7[];
+static  VTBL_ENTRY _tg__ZTV5E12x0__7G12x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C125E12x0__7G12x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C125E12x0__7G12x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C12[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E12x0__7G12x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E12x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G12x0y7[] = {
+  {&(_ZTV7G12x0y7[5]),  5,16},
+  {&(_ZTV7G12x0y7[9]),  9,16},
+  {&(_ZTV7G12x0y7[15]),  15,16},
+  {&(_ZTV7G12x0y7[11]),  11,16},
+  {&(_tg__ZTV5E12x0__7G12x0y7[3]),  3,3},
+  {&(_tg__ZTV3C125E12x0__7G12x0y7[3]),  3,3},
+  {&(_tg__ZTV2B1__3C125E12x0__7G12x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__5E12x0__7G12x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G12x0y7[];
+extern  VTBL_ENTRY _ZTV7G12x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G12x0y7[];
+Class_Descriptor cd_G12x0y7 = {  "G12x0y7", // class name
+  bases_G12x0y7, 6,
+  &(vtc_G12x0y7[0]), // expected_vtbl_contents
+  &(vtt_G12x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G12x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G12x0y7),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G12x0y7),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E13x0  : C13 , D1 {
+  int fd;
+  ~E13x0(); // tgen
+  E13x0(); // tgen
+};
+//SIG(-1 E13x0) C1{ BC2{ BC3{ v1 Fi} VBC4{ v2 Fi} Fi} BC5{ v3 Fi} Fi}
+
+
+E13x0 ::~E13x0(){ note_dtor("E13x0", this);} // tgen
+E13x0 ::E13x0(){ note_ctor("E13x0", this);} // tgen
+
+static void Test_E13x0()
+{
+  extern Class_Descriptor cd_E13x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(7,9)];
+    init_test(&cd_E13x0, buf);
+    E13x0 *dp, &lv = *(dp=new (buf) E13x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(48,32), "sizeof(E13x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E13x0)");
+    check_base_class_offset(lv, (A1*)(C13*), 0, "E13x0");
+    check_base_class_offset(lv, (B1*)(C13*), ABISELECT(32,24), "E13x0");
+    check_base_class_offset(lv, (C13*), 0, "E13x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,12), "E13x0");
+    check_field_offset(lv, fd, ABISELECT(28,20), "E13x0.fd");
+    test_class_info(&lv, &cd_E13x0);
+    dp->~E13x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE13x0(Test_E13x0, "E13x0", ABISELECT(48,32));
+
+#else // __cplusplus
+
+extern void _ZN5E13x0C1Ev();
+extern void _ZN5E13x0D1Ev();
+Name_Map name_map_E13x0[] = {
+  NSPAIR(_ZN5E13x0C1Ev),
+  NSPAIR(_ZN5E13x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E13x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C13,    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},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_E13x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E13x0[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C13__5E13x0[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C13__5E13x0[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_E13x0[] = {
+  {&(_ZTV5E13x0[3]),  3,11},
+  {&(_tg__ZTV3C13__5E13x0[3]),  3,4},
+  {&(_tg__ZTV2B1__3C13__5E13x0[3]),  3,4},
+  {&(_ZTV5E13x0[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+Class_Descriptor cd_E13x0 = {  "E13x0", // class name
+  bases_E13x0, 4,
+  &(vtc_E13x0[0]), // expected_vtbl_contents
+  &(vtt_E13x0[0]), // expected_vtt_contents
+  ABISELECT(48,32), // object size
+  NSPAIRA(_ZTI5E13x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E13x0),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E13x0),4, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y0  : E13x0 , F1 {
+  int ff;
+  ~G13x0y0(); // tgen
+  G13x0y0(); // tgen
+};
+//SIG(1 G13x0y0) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G13x0y0 ::~G13x0y0(){ note_dtor("G13x0y0", this);} // tgen
+G13x0y0 ::G13x0y0(){ note_ctor("G13x0y0", this);} // tgen
+
+static void Test_G13x0y0()
+{
+  extern Class_Descriptor cd_G13x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G13x0y0, buf);
+    G13x0y0 *dp, &lv = *(dp=new (buf) G13x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G13x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y0)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), 0, "G13x0y0");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(48,36), "G13x0y0");
+    check_base_class_offset(lv, (C13*)(E13x0*), 0, "G13x0y0");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(16,12), "G13x0y0");
+    check_base_class_offset(lv, (E13x0*), 0, "G13x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,24), "G13x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,32), "G13x0y0.ff");
+    test_class_info(&lv, &cd_G13x0y0);
+    dp->~G13x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y0(Test_G13x0y0, "G13x0y0", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y0C1Ev();
+extern void _ZN7G13x0y0D1Ev();
+Name_Map name_map_G13x0y0[] = {
+  NSPAIR(_ZN7G13x0y0C1Ev),
+  NSPAIR(_ZN7G13x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G13x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y0[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G13x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G13x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y0[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y0[] = {
+  ABISELECT(48,36),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y0[] = {
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y0[] = {
+  {&(_ZTV7G13x0y0[3]),  3,14},
+  {&(_tg__ZTV5E13x0__7G13x0y0[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y0[3]),  3,4},
+  {&(_ZTV7G13x0y0[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI7G13x0y0[];
+extern  VTBL_ENTRY _ZTV7G13x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y0[];
+Class_Descriptor cd_G13x0y0 = {  "G13x0y0", // class name
+  bases_G13x0y0, 6,
+  &(vtc_G13x0y0[0]), // expected_vtbl_contents
+  &(vtt_G13x0y0[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G13x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y0),14, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y0),6, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y1  : virtual E13x0 , F1 {
+  int ff;
+  ~G13x0y1(); // tgen
+  G13x0y1(); // tgen
+};
+//SIG(1 G13x0y1) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G13x0y1 ::~G13x0y1(){ note_dtor("G13x0y1", this);} // tgen
+G13x0y1 ::G13x0y1(){ note_ctor("G13x0y1", this);} // tgen
+
+static void Test_G13x0y1()
+{
+  extern Class_Descriptor cd_G13x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G13x0y1, buf);
+    G13x0y1 *dp, &lv = *(dp=new (buf) G13x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G13x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y1)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), ABISELECT(16,12), "G13x0y1");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(48,36), "G13x0y1");
+    check_base_class_offset(lv, (C13*)(E13x0*), ABISELECT(16,12), "G13x0y1");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(32,24), "G13x0y1");
+    check_base_class_offset(lv, (E13x0*), ABISELECT(16,12), "G13x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G13x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G13x0y1.ff");
+    test_class_info(&lv, &cd_G13x0y1);
+    dp->~G13x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y1(Test_G13x0y1, "G13x0y1", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y1C1Ev();
+extern void _ZN7G13x0y1D1Ev();
+Name_Map name_map_G13x0y1[] = {
+  NSPAIR(_ZN7G13x0y1C1Ev),
+  NSPAIR(_ZN7G13x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G13x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_C13,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    ABISELECT(16,12), //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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y1[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G13x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G13x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y1[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y1[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y1[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y1[] = {
+  {&(_ZTV7G13x0y1[4]),  4,17},
+  {&(_ZTV7G13x0y1[9]),  9,17},
+  {&(_ZTV7G13x0y1[16]),  16,17},
+  {&(_ZTV7G13x0y1[12]),  12,17},
+  {&(_tg__ZTV5E13x0__7G13x0y1[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G13x0y1[];
+extern  VTBL_ENTRY _ZTV7G13x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y1[];
+Class_Descriptor cd_G13x0y1 = {  "G13x0y1", // class name
+  bases_G13x0y1, 6,
+  &(vtc_G13x0y1[0]), // expected_vtbl_contents
+  &(vtt_G13x0y1[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G13x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y1),17, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y1),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y2  : E13x0 , virtual F1 {
+  int ff;
+  ~G13x0y2(); // tgen
+  G13x0y2(); // tgen
+};
+//SIG(1 G13x0y2) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G13x0y2 ::~G13x0y2(){ note_dtor("G13x0y2", this);} // tgen
+G13x0y2 ::G13x0y2(){ note_ctor("G13x0y2", this);} // tgen
+
+static void Test_G13x0y2()
+{
+  extern Class_Descriptor cd_G13x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G13x0y2, buf);
+    G13x0y2 *dp, &lv = *(dp=new (buf) G13x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G13x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y2)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), 0, "G13x0y2");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(40,28), "G13x0y2");
+    check_base_class_offset(lv, (C13*)(E13x0*), 0, "G13x0y2");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(16,12), "G13x0y2");
+    check_base_class_offset(lv, (E13x0*), 0, "G13x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G13x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G13x0y2.ff");
+    test_class_info(&lv, &cd_G13x0y2);
+    dp->~G13x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y2(Test_G13x0y2, "G13x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y2C1Ev();
+extern void _ZN7G13x0y2D1Ev();
+Name_Map name_map_G13x0y2[] = {
+  NSPAIR(_ZN7G13x0y2C1Ev),
+  NSPAIR(_ZN7G13x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G13x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI7G13x0y2[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G13x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G13x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G13x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y2[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y2[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y2[] = {
+  {&(_ZTV7G13x0y2[4]),  4,16},
+  {&(_tg__ZTV5E13x0__7G13x0y2[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y2[3]),  3,4},
+  {&(_ZTV7G13x0y2[11]),  11,16},
+  {&(_ZTV7G13x0y2[15]),  15,16},
+};
+extern VTBL_ENTRY _ZTI7G13x0y2[];
+extern  VTBL_ENTRY _ZTV7G13x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y2[];
+Class_Descriptor cd_G13x0y2 = {  "G13x0y2", // class name
+  bases_G13x0y2, 6,
+  &(vtc_G13x0y2[0]), // expected_vtbl_contents
+  &(vtt_G13x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G13x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y2),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y2),7, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y3  : virtual E13x0 , virtual F1 {
+  int ff;
+  ~G13x0y3(); // tgen
+  G13x0y3(); // tgen
+};
+//SIG(1 G13x0y3) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G13x0y3 ::~G13x0y3(){ note_dtor("G13x0y3", this);} // tgen
+G13x0y3 ::G13x0y3(){ note_ctor("G13x0y3", this);} // tgen
+
+static void Test_G13x0y3()
+{
+  extern Class_Descriptor cd_G13x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G13x0y3, buf);
+    G13x0y3 *dp, &lv = *(dp=new (buf) G13x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G13x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y3)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), ABISELECT(16,8), "G13x0y3");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(48,32), "G13x0y3");
+    check_base_class_offset(lv, (C13*)(E13x0*), ABISELECT(16,8), "G13x0y3");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(32,20), "G13x0y3");
+    check_base_class_offset(lv, (E13x0*), ABISELECT(16,8), "G13x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(64,40), "G13x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G13x0y3.ff");
+    test_class_info(&lv, &cd_G13x0y3);
+    dp->~G13x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y3(Test_G13x0y3, "G13x0y3", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y3C1Ev();
+extern void _ZN7G13x0y3D1Ev();
+Name_Map name_map_G13x0y3[] = {
+  NSPAIR(_ZN7G13x0y3C1Ev),
+  NSPAIR(_ZN7G13x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G13x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(64,40), //bcp->offset
+    17, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y3[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G13x0y3[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y3[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G13x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G13x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G13x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G13x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y3[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y3[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y3[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y3[] = {
+  {&(_ZTV7G13x0y3[5]),  5,21},
+  {&(_ZTV7G13x0y3[9]),  9,21},
+  {&(_ZTV7G13x0y3[16]),  16,21},
+  {&(_ZTV7G13x0y3[12]),  12,21},
+  {&(_ZTV7G13x0y3[20]),  20,21},
+  {&(_tg__ZTV5E13x0__7G13x0y3[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G13x0y3[];
+extern  VTBL_ENTRY _ZTV7G13x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y3[];
+Class_Descriptor cd_G13x0y3 = {  "G13x0y3", // class name
+  bases_G13x0y3, 6,
+  &(vtc_G13x0y3[0]), // expected_vtbl_contents
+  &(vtt_G13x0y3[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G13x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y3),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y3),9, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y4  : E13x0 , F0 {
+  int ff;
+  ~G13x0y4(); // tgen
+  G13x0y4(); // tgen
+};
+//SIG(1 G13x0y4) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G13x0y4 ::~G13x0y4(){ note_dtor("G13x0y4", this);} // tgen
+G13x0y4 ::G13x0y4(){ note_ctor("G13x0y4", this);} // tgen
+
+static void Test_G13x0y4()
+{
+  extern Class_Descriptor cd_G13x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G13x0y4, buf);
+    G13x0y4 *dp, &lv = *(dp=new (buf) G13x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G13x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y4)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), 0, "G13x0y4");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(40,32), "G13x0y4");
+    check_base_class_offset(lv, (C13*)(E13x0*), 0, "G13x0y4");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(16,12), "G13x0y4");
+    check_base_class_offset(lv, (E13x0*), 0, "G13x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,24), "G13x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,28), "G13x0y4.ff");
+    test_class_info(&lv, &cd_G13x0y4);
+    dp->~G13x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y4(Test_G13x0y4, "G13x0y4", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y4C1Ev();
+extern void _ZN7G13x0y4D1Ev();
+Name_Map name_map_G13x0y4[] = {
+  NSPAIR(_ZN7G13x0y4C1Ev),
+  NSPAIR(_ZN7G13x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G13x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(32,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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y4[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI7G13x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y4[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y4[] = {
+  ABISELECT(40,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y4[] = {
+  0,
+  ABISELECT(-40,-32),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y4[] = {
+  {&(_ZTV7G13x0y4[3]),  3,11},
+  {&(_tg__ZTV5E13x0__7G13x0y4[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y4[3]),  3,4},
+  {&(_ZTV7G13x0y4[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI7G13x0y4[];
+extern  VTBL_ENTRY _ZTV7G13x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y4[];
+Class_Descriptor cd_G13x0y4 = {  "G13x0y4", // class name
+  bases_G13x0y4, 6,
+  &(vtc_G13x0y4[0]), // expected_vtbl_contents
+  &(vtt_G13x0y4[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G13x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y4),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y4),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y5  : virtual E13x0 , F0 {
+  int ff;
+  ~G13x0y5(); // tgen
+  G13x0y5(); // tgen
+};
+//SIG(1 G13x0y5) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G13x0y5 ::~G13x0y5(){ note_dtor("G13x0y5", this);} // tgen
+G13x0y5 ::G13x0y5(){ note_ctor("G13x0y5", this);} // tgen
+
+static void Test_G13x0y5()
+{
+  extern Class_Descriptor cd_G13x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G13x0y5, buf);
+    G13x0y5 *dp, &lv = *(dp=new (buf) G13x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G13x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y5)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), ABISELECT(16,12), "G13x0y5");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(48,36), "G13x0y5");
+    check_base_class_offset(lv, (C13*)(E13x0*), ABISELECT(16,12), "G13x0y5");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(32,24), "G13x0y5");
+    check_base_class_offset(lv, (E13x0*), ABISELECT(16,12), "G13x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G13x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G13x0y5.ff");
+    test_class_info(&lv, &cd_G13x0y5);
+    dp->~G13x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y5(Test_G13x0y5, "G13x0y5", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y5C1Ev();
+extern void _ZN7G13x0y5D1Ev();
+Name_Map name_map_G13x0y5[] = {
+  NSPAIR(_ZN7G13x0y5C1Ev),
+  NSPAIR(_ZN7G13x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G13x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //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_C13,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,24), //bcp->offset
+    9, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    ABISELECT(16,12), //bcp->offset
+    4, //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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI7G13x0y5[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y5[] = {
+  ABISELECT(48,36),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y5[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI7G13x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-36),
+  (VTBL_ENTRY)&(_ZTI7G13x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y5[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y5[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y5[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y5[] = {
+  {&(_ZTV7G13x0y5[4]),  4,16},
+  {&(_ZTV7G13x0y5[8]),  8,16},
+  {&(_ZTV7G13x0y5[15]),  15,16},
+  {&(_ZTV7G13x0y5[11]),  11,16},
+  {&(_tg__ZTV5E13x0__7G13x0y5[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G13x0y5[];
+extern  VTBL_ENTRY _ZTV7G13x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y5[];
+Class_Descriptor cd_G13x0y5 = {  "G13x0y5", // class name
+  bases_G13x0y5, 6,
+  &(vtc_G13x0y5[0]), // expected_vtbl_contents
+  &(vtt_G13x0y5[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G13x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y5),16, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y5),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y6  : E13x0 , virtual F0 {
+  int ff;
+  ~G13x0y6(); // tgen
+  G13x0y6(); // tgen
+};
+//SIG(1 G13x0y6) C1{ BC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G13x0y6 ::~G13x0y6(){ note_dtor("G13x0y6", this);} // tgen
+G13x0y6 ::G13x0y6(){ note_ctor("G13x0y6", this);} // tgen
+
+static void Test_G13x0y6()
+{
+  extern Class_Descriptor cd_G13x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G13x0y6, buf);
+    G13x0y6 *dp, &lv = *(dp=new (buf) G13x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G13x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y6)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), 0, "G13x0y6");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(40,28), "G13x0y6");
+    check_base_class_offset(lv, (C13*)(E13x0*), 0, "G13x0y6");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(16,12), "G13x0y6");
+    check_base_class_offset(lv, (E13x0*), 0, "G13x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G13x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,24), "G13x0y6.ff");
+    test_class_info(&lv, &cd_G13x0y6);
+    dp->~G13x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y6(Test_G13x0y6, "G13x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y6C1Ev();
+extern void _ZN7G13x0y6D1Ev();
+Name_Map name_map_G13x0y6[] = {
+  NSPAIR(_ZN7G13x0y6C1Ev),
+  NSPAIR(_ZN7G13x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G13x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y6[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y6[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G13x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G13x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y6[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y6[] = {
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y6[] = {
+  {&(_ZTV7G13x0y6[4]),  4,12},
+  {&(_tg__ZTV5E13x0__7G13x0y6[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y6[3]),  3,4},
+  {&(_ZTV7G13x0y6[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI7G13x0y6[];
+extern  VTBL_ENTRY _ZTV7G13x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y6[];
+Class_Descriptor cd_G13x0y6 = {  "G13x0y6", // class name
+  bases_G13x0y6, 6,
+  &(vtc_G13x0y6[0]), // expected_vtbl_contents
+  &(vtt_G13x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G13x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y6),12, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y6),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G13x0y7  : virtual E13x0 , virtual F0 {
+  int ff;
+  ~G13x0y7(); // tgen
+  G13x0y7(); // tgen
+};
+//SIG(1 G13x0y7) C1{ VBC2{ BC3{ BC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G13x0y7 ::~G13x0y7(){ note_dtor("G13x0y7", this);} // tgen
+G13x0y7 ::G13x0y7(){ note_ctor("G13x0y7", this);} // tgen
+
+static void Test_G13x0y7()
+{
+  extern Class_Descriptor cd_G13x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,12)];
+    init_test(&cd_G13x0y7, buf);
+    G13x0y7 *dp, &lv = *(dp=new (buf) G13x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,44), "sizeof(G13x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G13x0y7)");
+    check_base_class_offset(lv, (A1*)(C13*)(E13x0*), ABISELECT(16,8), "G13x0y7");
+    check_base_class_offset(lv, (B1*)(C13*)(E13x0*), ABISELECT(48,32), "G13x0y7");
+    check_base_class_offset(lv, (C13*)(E13x0*), ABISELECT(16,8), "G13x0y7");
+    check_base_class_offset(lv, (D1*)(E13x0*), ABISELECT(32,20), "G13x0y7");
+    check_base_class_offset(lv, (E13x0*), ABISELECT(16,8), "G13x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(60,40), "G13x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G13x0y7.ff");
+    test_class_info(&lv, &cd_G13x0y7);
+    dp->~G13x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG13x0y7(Test_G13x0y7, "G13x0y7", ABISELECT(64,44));
+
+#else // __cplusplus
+
+extern void _ZN7G13x0y7C1Ev();
+extern void _ZN7G13x0y7D1Ev();
+Name_Map name_map_G13x0y7[] = {
+  NSPAIR(_ZN7G13x0y7C1Ev),
+  NSPAIR(_ZN7G13x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C13;
+extern VTBL_ENTRY _ZTI3C13[];
+extern  VTBL_ENTRY _ZTV3C13[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C13[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E13x0;
+extern VTBL_ENTRY _ZTI5E13x0[];
+extern  VTBL_ENTRY _ZTV5E13x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E13x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G13x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_C13,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E13x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(60,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G13x0y7[];
+extern void _ZN2A13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G13x0y7[] = {
+  ABISELECT(60,40),
+  ABISELECT(48,32),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G13x0y7[0]),
+  0,
+  ABISELECT(32,24),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G13x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G13x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G13x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G13x0y7[];
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV5E13x0__7G13x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV3C135E13x0__7G13x0y7[] = {
+  ABISELECT(32,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C135E13x0__7G13x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI3C13[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E13x0__7G13x0y7[] = {
+  0,
+  ABISELECT(-32,-24),
+  (VTBL_ENTRY)&(_ZTI5E13x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G13x0y7[] = {
+  {&(_ZTV7G13x0y7[5]),  5,17},
+  {&(_ZTV7G13x0y7[9]),  9,17},
+  {&(_ZTV7G13x0y7[16]),  16,17},
+  {&(_ZTV7G13x0y7[12]),  12,17},
+  {&(_tg__ZTV5E13x0__7G13x0y7[3]),  3,4},
+  {&(_tg__ZTV3C135E13x0__7G13x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__3C135E13x0__7G13x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__5E13x0__7G13x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G13x0y7[];
+extern  VTBL_ENTRY _ZTV7G13x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G13x0y7[];
+Class_Descriptor cd_G13x0y7 = {  "G13x0y7", // class name
+  bases_G13x0y7, 6,
+  &(vtc_G13x0y7[0]), // expected_vtbl_contents
+  &(vtt_G13x0y7[0]), // expected_vtt_contents
+  ABISELECT(64,44), // object size
+  NSPAIRA(_ZTI7G13x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G13x0y7),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G13x0y7),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E14x0  : C14 , D1 {
+  int fd;
+  ~E14x0(); // tgen
+  E14x0(); // tgen
+};
+//SIG(-1 E14x0) C1{ BC2{ VBC3{ Fi} VBC4{ v1 Fi} Fi} BC5{ v2 Fi} Fi}
+
+
+E14x0 ::~E14x0(){ note_dtor("E14x0", this);} // tgen
+E14x0 ::E14x0(){ note_ctor("E14x0", this);} // tgen
+
+static void Test_E14x0()
+{
+  extern Class_Descriptor cd_E14x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,9)];
+    init_test(&cd_E14x0, buf);
+    E14x0 *dp, &lv = *(dp=new (buf) E14x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,32), "sizeof(E14x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E14x0)");
+    check_base_class_offset(lv, (A0*)(C14*), ABISELECT(32,20), "E14x0");
+    check_base_class_offset(lv, (B1*)(C14*), ABISELECT(40,24), "E14x0");
+    check_base_class_offset(lv, (C14*), 0, "E14x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,8), "E14x0");
+    check_field_offset(lv, fd, ABISELECT(28,16), "E14x0.fd");
+    test_class_info(&lv, &cd_E14x0);
+    dp->~E14x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE14x0(Test_E14x0, "E14x0", ABISELECT(56,32));
+
+#else // __cplusplus
+
+extern void _ZN5E14x0C1Ev();
+extern void _ZN5E14x0D1Ev();
+Name_Map name_map_E14x0[] = {
+  NSPAIR(_ZN5E14x0C1Ev),
+  NSPAIR(_ZN5E14x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E14x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(40,24), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C14,    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
+    2, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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 _ZTI5E14x0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_E14x0[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E14x0[];
+static  VTBL_ENTRY _tg__ZTV3C14__5E14x0[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C14__5E14x0[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_E14x0[] = {
+  {&(_ZTV5E14x0[4]),  4,11},
+  {&(_tg__ZTV3C14__5E14x0[4]),  4,4},
+  {&(_tg__ZTV2B1__3C14__5E14x0[3]),  3,4},
+  {&(_ZTV5E14x0[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+Class_Descriptor cd_E14x0 = {  "E14x0", // class name
+  bases_E14x0, 4,
+  &(vtc_E14x0[0]), // expected_vtbl_contents
+  &(vtt_E14x0[0]), // expected_vtt_contents
+  ABISELECT(56,32), // object size
+  NSPAIRA(_ZTI5E14x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E14x0),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E14x0),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  G14x0y0  : E14x0 , F1 {
+  int ff;
+  ~G14x0y0(); // tgen
+  G14x0y0(); // tgen
+};
+//SIG(1 G14x0y0) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G14x0y0 ::~G14x0y0(){ note_dtor("G14x0y0", this);} // tgen
+G14x0y0 ::G14x0y0(){ note_ctor("G14x0y0", this);} // tgen
+
+static void Test_G14x0y0()
+{
+  extern Class_Descriptor cd_G14x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G14x0y0, buf);
+    G14x0y0 *dp, &lv = *(dp=new (buf) G14x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G14x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y0)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(48,32), "G14x0y0");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(56,36), "G14x0y0");
+    check_base_class_offset(lv, (C14*)(E14x0*), 0, "G14x0y0");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(16,8), "G14x0y0");
+    check_base_class_offset(lv, (E14x0*), 0, "G14x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,20), "G14x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,28), "G14x0y0.ff");
+    test_class_info(&lv, &cd_G14x0y0);
+    dp->~G14x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y0(Test_G14x0y0, "G14x0y0", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y0C1Ev();
+extern void _ZN7G14x0y0D1Ev();
+Name_Map name_map_G14x0y0[] = {
+  NSPAIR(_ZN7G14x0y0C1Ev),
+  NSPAIR(_ZN7G14x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G14x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,36), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //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_C14,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y0[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G14x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G14x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y0[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y0[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y0[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y0[] = {
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y0[] = {
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y0[] = {
+  {&(_ZTV7G14x0y0[4]),  4,14},
+  {&(_tg__ZTV5E14x0__7G14x0y0[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y0[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y0[3]),  3,4},
+  {&(_ZTV7G14x0y0[13]),  13,14},
+};
+extern VTBL_ENTRY _ZTI7G14x0y0[];
+extern  VTBL_ENTRY _ZTV7G14x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y0[];
+Class_Descriptor cd_G14x0y0 = {  "G14x0y0", // class name
+  bases_G14x0y0, 6,
+  &(vtc_G14x0y0[0]), // expected_vtbl_contents
+  &(vtt_G14x0y0[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G14x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y0),14, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y0),6, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y1  : virtual E14x0 , F1 {
+  int ff;
+  ~G14x0y1(); // tgen
+  G14x0y1(); // tgen
+};
+//SIG(1 G14x0y1) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G14x0y1 ::~G14x0y1(){ note_dtor("G14x0y1", this);} // tgen
+G14x0y1 ::G14x0y1(){ note_ctor("G14x0y1", this);} // tgen
+
+static void Test_G14x0y1()
+{
+  extern Class_Descriptor cd_G14x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G14x0y1, buf);
+    G14x0y1 *dp, &lv = *(dp=new (buf) G14x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G14x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y1)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(48,32), "G14x0y1");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(56,36), "G14x0y1");
+    check_base_class_offset(lv, (C14*)(E14x0*), ABISELECT(16,12), "G14x0y1");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(32,20), "G14x0y1");
+    check_base_class_offset(lv, (E14x0*), ABISELECT(16,12), "G14x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G14x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G14x0y1.ff");
+    test_class_info(&lv, &cd_G14x0y1);
+    dp->~G14x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y1(Test_G14x0y1, "G14x0y1", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y1C1Ev();
+extern void _ZN7G14x0y1D1Ev();
+Name_Map name_map_G14x0y1[] = {
+  NSPAIR(_ZN7G14x0y1C1Ev),
+  NSPAIR(_ZN7G14x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G14x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,36), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_C14,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y1[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,8),
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G14x0y1[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G14x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G14x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y1[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y1[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y1[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y1[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y1[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y1[] = {
+  {&(_ZTV7G14x0y1[5]),  5,18},
+  {&(_ZTV7G14x0y1[11]),  11,18},
+  {&(_ZTV7G14x0y1[17]),  17,18},
+  {&(_ZTV7G14x0y1[13]),  13,18},
+  {&(_tg__ZTV5E14x0__7G14x0y1[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y1[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G14x0y1[];
+extern  VTBL_ENTRY _ZTV7G14x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y1[];
+Class_Descriptor cd_G14x0y1 = {  "G14x0y1", // class name
+  bases_G14x0y1, 6,
+  &(vtc_G14x0y1[0]), // expected_vtbl_contents
+  &(vtt_G14x0y1[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G14x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y1),18, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y1),8, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y2  : E14x0 , virtual F1 {
+  int ff;
+  ~G14x0y2(); // tgen
+  G14x0y2(); // tgen
+};
+//SIG(1 G14x0y2) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G14x0y2 ::~G14x0y2(){ note_dtor("G14x0y2", this);} // tgen
+G14x0y2 ::G14x0y2(){ note_ctor("G14x0y2", this);} // tgen
+
+static void Test_G14x0y2()
+{
+  extern Class_Descriptor cd_G14x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G14x0y2, buf);
+    G14x0y2 *dp, &lv = *(dp=new (buf) G14x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G14x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y2)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(36,24), "G14x0y2");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(40,28), "G14x0y2");
+    check_base_class_offset(lv, (C14*)(E14x0*), 0, "G14x0y2");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(16,8), "G14x0y2");
+    check_base_class_offset(lv, (E14x0*), 0, "G14x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(56,36), "G14x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G14x0y2.ff");
+    test_class_info(&lv, &cd_G14x0y2);
+    dp->~G14x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y2(Test_G14x0y2, "G14x0y2", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y2C1Ev();
+extern void _ZN7G14x0y2D1Ev();
+Name_Map name_map_G14x0y2[] = {
+  NSPAIR(_ZN7G14x0y2C1Ev),
+  NSPAIR(_ZN7G14x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G14x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_C14,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(56,36), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    7, //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 _ZTI7G14x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G14x0y2[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y2[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G14x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G14x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y2[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y2[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y2[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y2[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y2[] = {
+  {&(_ZTV7G14x0y2[5]),  5,16},
+  {&(_tg__ZTV5E14x0__7G14x0y2[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y2[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y2[3]),  3,4},
+  {&(_ZTV7G14x0y2[11]),  11,16},
+  {&(_ZTV7G14x0y2[15]),  15,16},
+};
+extern VTBL_ENTRY _ZTI7G14x0y2[];
+extern  VTBL_ENTRY _ZTV7G14x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y2[];
+Class_Descriptor cd_G14x0y2 = {  "G14x0y2", // class name
+  bases_G14x0y2, 6,
+  &(vtc_G14x0y2[0]), // expected_vtbl_contents
+  &(vtt_G14x0y2[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G14x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y2),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y2),7, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y3  : virtual E14x0 , virtual F1 {
+  int ff;
+  ~G14x0y3(); // tgen
+  G14x0y3(); // tgen
+};
+//SIG(1 G14x0y3) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G14x0y3 ::~G14x0y3(){ note_dtor("G14x0y3", this);} // tgen
+G14x0y3 ::G14x0y3(){ note_ctor("G14x0y3", this);} // tgen
+
+static void Test_G14x0y3()
+{
+  extern Class_Descriptor cd_G14x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(12,13)];
+    init_test(&cd_G14x0y3, buf);
+    G14x0y3 *dp, &lv = *(dp=new (buf) G14x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(88,48), "sizeof(G14x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y3)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(48,28), "G14x0y3");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(56,32), "G14x0y3");
+    check_base_class_offset(lv, (C14*)(E14x0*), ABISELECT(16,8), "G14x0y3");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(32,16), "G14x0y3");
+    check_base_class_offset(lv, (E14x0*), ABISELECT(16,8), "G14x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(72,40), "G14x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G14x0y3.ff");
+    test_class_info(&lv, &cd_G14x0y3);
+    dp->~G14x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y3(Test_G14x0y3, "G14x0y3", ABISELECT(88,48));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y3C1Ev();
+extern void _ZN7G14x0y3D1Ev();
+Name_Map name_map_G14x0y3[] = {
+  NSPAIR(_ZN7G14x0y3C1Ev),
+  NSPAIR(_ZN7G14x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G14x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,32), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_C14,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(72,40), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G14x0y3[] = {
+  ABISELECT(72,40),
+  ABISELECT(56,32),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y3[0]),
+  ABISELECT(16,8),
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y3[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G14x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI7G14x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-72,-40),
+  (VTBL_ENTRY)&(_ZTI7G14x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y3[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y3[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y3[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y3[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y3[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y3[] = {
+  {&(_ZTV7G14x0y3[6]),  6,22},
+  {&(_ZTV7G14x0y3[11]),  11,22},
+  {&(_ZTV7G14x0y3[17]),  17,22},
+  {&(_ZTV7G14x0y3[13]),  13,22},
+  {&(_ZTV7G14x0y3[21]),  21,22},
+  {&(_tg__ZTV5E14x0__7G14x0y3[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y3[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G14x0y3[];
+extern  VTBL_ENTRY _ZTV7G14x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y3[];
+Class_Descriptor cd_G14x0y3 = {  "G14x0y3", // class name
+  bases_G14x0y3, 6,
+  &(vtc_G14x0y3[0]), // expected_vtbl_contents
+  &(vtt_G14x0y3[0]), // expected_vtt_contents
+  ABISELECT(88,48), // object size
+  NSPAIRA(_ZTI7G14x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y3),22, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y3),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y4  : E14x0 , F0 {
+  int ff;
+  ~G14x0y4(); // tgen
+  G14x0y4(); // tgen
+};
+//SIG(1 G14x0y4) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G14x0y4 ::~G14x0y4(){ note_dtor("G14x0y4", this);} // tgen
+G14x0y4 ::G14x0y4(){ note_ctor("G14x0y4", this);} // tgen
+
+static void Test_G14x0y4()
+{
+  extern Class_Descriptor cd_G14x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G14x0y4, buf);
+    G14x0y4 *dp, &lv = *(dp=new (buf) G14x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G14x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y4)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(40,28), "G14x0y4");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(48,32), "G14x0y4");
+    check_base_class_offset(lv, (C14*)(E14x0*), 0, "G14x0y4");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(16,8), "G14x0y4");
+    check_base_class_offset(lv, (E14x0*), 0, "G14x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,20), "G14x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,24), "G14x0y4.ff");
+    test_class_info(&lv, &cd_G14x0y4);
+    dp->~G14x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y4(Test_G14x0y4, "G14x0y4", ABISELECT(64,40));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y4C1Ev();
+extern void _ZN7G14x0y4D1Ev();
+Name_Map name_map_G14x0y4[] = {
+  NSPAIR(_ZN7G14x0y4C1Ev),
+  NSPAIR(_ZN7G14x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G14x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(40,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(48,32), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //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_C14,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y4[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y4[] = {
+  ABISELECT(48,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y4[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G14x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y4[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y4[] = {
+  ABISELECT(48,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y4[] = {
+  ABISELECT(48,32),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y4[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y4[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y4[] = {
+  {&(_ZTV7G14x0y4[4]),  4,11},
+  {&(_tg__ZTV5E14x0__7G14x0y4[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y4[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y4[3]),  3,4},
+  {&(_ZTV7G14x0y4[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI7G14x0y4[];
+extern  VTBL_ENTRY _ZTV7G14x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y4[];
+Class_Descriptor cd_G14x0y4 = {  "G14x0y4", // class name
+  bases_G14x0y4, 6,
+  &(vtc_G14x0y4[0]), // expected_vtbl_contents
+  &(vtt_G14x0y4[0]), // expected_vtt_contents
+  ABISELECT(64,40), // object size
+  NSPAIRA(_ZTI7G14x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y4),11, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y4),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y5  : virtual E14x0 , F0 {
+  int ff;
+  ~G14x0y5(); // tgen
+  G14x0y5(); // tgen
+};
+//SIG(1 G14x0y5) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} BC7{ Fi} Fi}
+
+
+G14x0y5 ::~G14x0y5(){ note_dtor("G14x0y5", this);} // tgen
+G14x0y5 ::G14x0y5(){ note_ctor("G14x0y5", this);} // tgen
+
+static void Test_G14x0y5()
+{
+  extern Class_Descriptor cd_G14x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G14x0y5, buf);
+    G14x0y5 *dp, &lv = *(dp=new (buf) G14x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G14x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y5)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(48,32), "G14x0y5");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(56,36), "G14x0y5");
+    check_base_class_offset(lv, (C14*)(E14x0*), ABISELECT(16,12), "G14x0y5");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(32,20), "G14x0y5");
+    check_base_class_offset(lv, (E14x0*), ABISELECT(16,12), "G14x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G14x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G14x0y5.ff");
+    test_class_info(&lv, &cd_G14x0y5);
+    dp->~G14x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y5(Test_G14x0y5, "G14x0y5", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y5C1Ev();
+extern void _ZN7G14x0y5D1Ev();
+Name_Map name_map_G14x0y5[] = {
+  NSPAIR(_ZN7G14x0y5C1Ev),
+  NSPAIR(_ZN7G14x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G14x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,32), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,36), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_C14,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    ABISELECT(16,12), //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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI7G14x0y5[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y5[] = {
+  ABISELECT(56,36),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y5[0]),
+  ABISELECT(16,8),
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G14x0y5[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G14x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G14x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y5[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y5[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y5[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y5[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y5[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y5[] = {
+  {&(_ZTV7G14x0y5[5]),  5,17},
+  {&(_ZTV7G14x0y5[10]),  10,17},
+  {&(_ZTV7G14x0y5[16]),  16,17},
+  {&(_ZTV7G14x0y5[12]),  12,17},
+  {&(_tg__ZTV5E14x0__7G14x0y5[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y5[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G14x0y5[];
+extern  VTBL_ENTRY _ZTV7G14x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y5[];
+Class_Descriptor cd_G14x0y5 = {  "G14x0y5", // class name
+  bases_G14x0y5, 6,
+  &(vtc_G14x0y5[0]), // expected_vtbl_contents
+  &(vtt_G14x0y5[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G14x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y5),17, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y5),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y6  : E14x0 , virtual F0 {
+  int ff;
+  ~G14x0y6(); // tgen
+  G14x0y6(); // tgen
+};
+//SIG(1 G14x0y6) C1{ BC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G14x0y6 ::~G14x0y6(){ note_dtor("G14x0y6", this);} // tgen
+G14x0y6 ::G14x0y6(){ note_ctor("G14x0y6", this);} // tgen
+
+static void Test_G14x0y6()
+{
+  extern Class_Descriptor cd_G14x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G14x0y6, buf);
+    G14x0y6 *dp, &lv = *(dp=new (buf) G14x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G14x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y6)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(36,24), "G14x0y6");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(40,28), "G14x0y6");
+    check_base_class_offset(lv, (C14*)(E14x0*), 0, "G14x0y6");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(16,8), "G14x0y6");
+    check_base_class_offset(lv, (E14x0*), 0, "G14x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(52,36), "G14x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G14x0y6.ff");
+    test_class_info(&lv, &cd_G14x0y6);
+    dp->~G14x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y6(Test_G14x0y6, "G14x0y6", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y6C1Ev();
+extern void _ZN7G14x0y6D1Ev();
+Name_Map name_map_G14x0y6[] = {
+  NSPAIR(_ZN7G14x0y6C1Ev),
+  NSPAIR(_ZN7G14x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G14x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(36,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //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_C14,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(52,36), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y6[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y6[] = {
+  ABISELECT(52,36),
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y6[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G14x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y6[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y6[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y6[] = {
+  ABISELECT(40,28),
+  ABISELECT(36,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y6[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y6[] = {
+  {&(_ZTV7G14x0y6[5]),  5,12},
+  {&(_tg__ZTV5E14x0__7G14x0y6[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y6[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y6[3]),  3,4},
+  {&(_ZTV7G14x0y6[11]),  11,12},
+};
+extern VTBL_ENTRY _ZTI7G14x0y6[];
+extern  VTBL_ENTRY _ZTV7G14x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y6[];
+Class_Descriptor cd_G14x0y6 = {  "G14x0y6", // class name
+  bases_G14x0y6, 6,
+  &(vtc_G14x0y6[0]), // expected_vtbl_contents
+  &(vtt_G14x0y6[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G14x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y6),12, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y6),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G14x0y7  : virtual E14x0 , virtual F0 {
+  int ff;
+  ~G14x0y7(); // tgen
+  G14x0y7(); // tgen
+};
+//SIG(1 G14x0y7) C1{ VBC2{ BC3{ VBC4{ Fi} VBC5{ v1 Fi} Fi} BC6{ v2 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G14x0y7 ::~G14x0y7(){ note_dtor("G14x0y7", this);} // tgen
+G14x0y7 ::G14x0y7(){ note_ctor("G14x0y7", this);} // tgen
+
+static void Test_G14x0y7()
+{
+  extern Class_Descriptor cd_G14x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G14x0y7, buf);
+    G14x0y7 *dp, &lv = *(dp=new (buf) G14x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G14x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G14x0y7)");
+    check_base_class_offset(lv, (A0*)(C14*)(E14x0*), ABISELECT(48,28), "G14x0y7");
+    check_base_class_offset(lv, (B1*)(C14*)(E14x0*), ABISELECT(56,32), "G14x0y7");
+    check_base_class_offset(lv, (C14*)(E14x0*), ABISELECT(16,8), "G14x0y7");
+    check_base_class_offset(lv, (D1*)(E14x0*), ABISELECT(32,16), "G14x0y7");
+    check_base_class_offset(lv, (E14x0*), ABISELECT(16,8), "G14x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(68,40), "G14x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G14x0y7.ff");
+    test_class_info(&lv, &cd_G14x0y7);
+    dp->~G14x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG14x0y7(Test_G14x0y7, "G14x0y7", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G14x0y7C1Ev();
+extern void _ZN7G14x0y7D1Ev();
+Name_Map name_map_G14x0y7[] = {
+  NSPAIR(_ZN7G14x0y7C1Ev),
+  NSPAIR(_ZN7G14x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C14;
+extern VTBL_ENTRY _ZTI3C14[];
+extern  VTBL_ENTRY _ZTV3C14[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C14[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E14x0;
+extern VTBL_ENTRY _ZTI5E14x0[];
+extern  VTBL_ENTRY _ZTV5E14x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E14x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G14x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(48,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
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,32), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_C14,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E14x0,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(68,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G14x0y7[];
+extern void _ZN2D13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G14x0y7[] = {
+  ABISELECT(68,40),
+  ABISELECT(56,32),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G14x0y7[0]),
+  ABISELECT(16,8),
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G14x0y7[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G14x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI7G14x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G14x0y7[];
+static  VTBL_ENTRY _tg__ZTV5E14x0__7G14x0y7[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C145E14x0__7G14x0y7[] = {
+  ABISELECT(40,24),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C145E14x0__7G14x0y7[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C14[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E14x0__7G14x0y7[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E14x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G14x0y7[] = {
+  {&(_ZTV7G14x0y7[6]),  6,18},
+  {&(_ZTV7G14x0y7[11]),  11,18},
+  {&(_ZTV7G14x0y7[17]),  17,18},
+  {&(_ZTV7G14x0y7[13]),  13,18},
+  {&(_tg__ZTV5E14x0__7G14x0y7[4]),  4,4},
+  {&(_tg__ZTV3C145E14x0__7G14x0y7[4]),  4,4},
+  {&(_tg__ZTV2B1__3C145E14x0__7G14x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__5E14x0__7G14x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G14x0y7[];
+extern  VTBL_ENTRY _ZTV7G14x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G14x0y7[];
+Class_Descriptor cd_G14x0y7 = {  "G14x0y7", // class name
+  bases_G14x0y7, 6,
+  &(vtc_G14x0y7[0]), // expected_vtbl_contents
+  &(vtt_G14x0y7[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G14x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G14x0y7),18, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G14x0y7),8, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E15x0  : C15 , D1 {
+  int fd;
+  ~E15x0(); // tgen
+  E15x0(); // tgen
+};
+//SIG(-1 E15x0) C1{ BC2{ VBC3{ v1 Fi} VBC4{ v2 Fi} Fi} BC5{ v3 Fi} Fi}
+
+
+E15x0 ::~E15x0(){ note_dtor("E15x0", this);} // tgen
+E15x0 ::E15x0(){ note_ctor("E15x0", this);} // tgen
+
+static void Test_E15x0()
+{
+  extern Class_Descriptor cd_E15x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,10)];
+    init_test(&cd_E15x0, buf);
+    E15x0 *dp, &lv = *(dp=new (buf) E15x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,36), "sizeof(E15x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E15x0)");
+    check_base_class_offset(lv, (A1*)(C15*), ABISELECT(32,20), "E15x0");
+    check_base_class_offset(lv, (B1*)(C15*), ABISELECT(48,28), "E15x0");
+    check_base_class_offset(lv, (C15*), 0, "E15x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(16,8), "E15x0");
+    check_field_offset(lv, fd, ABISELECT(28,16), "E15x0.fd");
+    test_class_info(&lv, &cd_E15x0);
+    dp->~E15x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE15x0(Test_E15x0, "E15x0", ABISELECT(64,36));
+
+#else // __cplusplus
+
+extern void _ZN5E15x0C1Ev();
+extern void _ZN5E15x0D1Ev();
+Name_Map name_map_E15x0[] = {
+  NSPAIR(_ZN5E15x0C1Ev),
+  NSPAIR(_ZN5E15x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E15x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(48,28), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    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},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_E15x0[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV5E15x0[];
+static  VTBL_ENTRY _tg__ZTV3C15__5E15x0[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C15__5E15x0[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C15__5E15x0[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_E15x0[] = {
+  {&(_ZTV5E15x0[4]),  4,15},
+  {&(_tg__ZTV3C15__5E15x0[4]),  4,4},
+  {&(_tg__ZTV2A1__3C15__5E15x0[3]),  3,4},
+  {&(_tg__ZTV2B1__3C15__5E15x0[3]),  3,4},
+  {&(_ZTV5E15x0[10]),  10,15},
+  {&(_ZTV5E15x0[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+Class_Descriptor cd_E15x0 = {  "E15x0", // class name
+  bases_E15x0, 4,
+  &(vtc_E15x0[0]), // expected_vtbl_contents
+  &(vtt_E15x0[0]), // expected_vtt_contents
+  ABISELECT(64,36), // object size
+  NSPAIRA(_ZTI5E15x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E15x0),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT5E15x0),6, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y0  : E15x0 , F1 {
+  int ff;
+  ~G15x0y0(); // tgen
+  G15x0y0(); // tgen
+};
+//SIG(1 G15x0y0) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G15x0y0 ::~G15x0y0(){ note_dtor("G15x0y0", this);} // tgen
+G15x0y0 ::G15x0y0(){ note_ctor("G15x0y0", this);} // tgen
+
+static void Test_G15x0y0()
+{
+  extern Class_Descriptor cd_G15x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G15x0y0, buf);
+    G15x0y0 *dp, &lv = *(dp=new (buf) G15x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G15x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y0)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(48,32), "G15x0y0");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(64,40), "G15x0y0");
+    check_base_class_offset(lv, (C15*)(E15x0*), 0, "G15x0y0");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(16,8), "G15x0y0");
+    check_base_class_offset(lv, (E15x0*), 0, "G15x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(32,20), "G15x0y0");
+    check_field_offset(lv, ff, ABISELECT(44,28), "G15x0y0.ff");
+    test_class_info(&lv, &cd_G15x0y0);
+    dp->~G15x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y0(Test_G15x0y0, "G15x0y0", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y0C1Ev();
+extern void _ZN7G15x0y0D1Ev();
+Name_Map name_map_G15x0y0[] = {
+  NSPAIR(_ZN7G15x0y0C1Ev),
+  NSPAIR(_ZN7G15x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G15x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    8, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(64,40), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    9, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(32,20), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y0[];
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y0[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y0[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G15x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G15x0y0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G15x0y0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y0[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y0[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y0[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y0[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y0[] = {
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y0[] = {
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y0[] = {
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y0[] = {
+  {&(_ZTV7G15x0y0[4]),  4,18},
+  {&(_tg__ZTV5E15x0__7G15x0y0[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y0[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y0[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y0[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y0[3]),  3,4},
+  {&(_ZTV7G15x0y0[13]),  13,18},
+  {&(_ZTV7G15x0y0[17]),  17,18},
+};
+extern VTBL_ENTRY _ZTI7G15x0y0[];
+extern  VTBL_ENTRY _ZTV7G15x0y0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y0[];
+Class_Descriptor cd_G15x0y0 = {  "G15x0y0", // class name
+  bases_G15x0y0, 6,
+  &(vtc_G15x0y0[0]), // expected_vtbl_contents
+  &(vtt_G15x0y0[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G15x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y0),18, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y0),9, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y1  : virtual E15x0 , F1 {
+  int ff;
+  ~G15x0y1(); // tgen
+  G15x0y1(); // tgen
+};
+//SIG(1 G15x0y1) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ v4 Fi} Fi}
+
+
+G15x0y1 ::~G15x0y1(){ note_dtor("G15x0y1", this);} // tgen
+G15x0y1 ::G15x0y1(){ note_ctor("G15x0y1", this);} // tgen
+
+static void Test_G15x0y1()
+{
+  extern Class_Descriptor cd_G15x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G15x0y1, buf);
+    G15x0y1 *dp, &lv = *(dp=new (buf) G15x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G15x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y1)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(48,32), "G15x0y1");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(64,40), "G15x0y1");
+    check_base_class_offset(lv, (C15*)(E15x0*), ABISELECT(16,12), "G15x0y1");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(32,20), "G15x0y1");
+    check_base_class_offset(lv, (E15x0*), ABISELECT(16,12), "G15x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G15x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G15x0y1.ff");
+    test_class_info(&lv, &cd_G15x0y1);
+    dp->~G15x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y1(Test_G15x0y1, "G15x0y1", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y1C1Ev();
+extern void _ZN7G15x0y1D1Ev();
+Name_Map name_map_G15x0y1[] = {
+  NSPAIR(_ZN7G15x0y1C1Ev),
+  NSPAIR(_ZN7G15x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G15x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B1,    ABISELECT(64,40), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    3, //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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    ABISELECT(16,12), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y1[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  ABISELECT(16,8),
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G15x0y1[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G15x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G15x0y1[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G15x0y1[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y1[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y1[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y1[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y1[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y1[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y1[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y1[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y1[] = {
+  {&(_ZTV7G15x0y1[5]),  5,22},
+  {&(_ZTV7G15x0y1[11]),  11,22},
+  {&(_ZTV7G15x0y1[17]),  17,22},
+  {&(_ZTV7G15x0y1[21]),  21,22},
+  {&(_ZTV7G15x0y1[13]),  13,22},
+  {&(_tg__ZTV5E15x0__7G15x0y1[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y1[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y1[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y1[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y1[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G15x0y1[];
+extern  VTBL_ENTRY _ZTV7G15x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y1[];
+Class_Descriptor cd_G15x0y1 = {  "G15x0y1", // class name
+  bases_G15x0y1, 6,
+  &(vtc_G15x0y1[0]), // expected_vtbl_contents
+  &(vtt_G15x0y1[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G15x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y1),22, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y1),11, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y2  : E15x0 , virtual F1 {
+  int ff;
+  ~G15x0y2(); // tgen
+  G15x0y2(); // tgen
+};
+//SIG(1 G15x0y2) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G15x0y2 ::~G15x0y2(){ note_dtor("G15x0y2", this);} // tgen
+G15x0y2 ::G15x0y2(){ note_ctor("G15x0y2", this);} // tgen
+
+static void Test_G15x0y2()
+{
+  extern Class_Descriptor cd_G15x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(12,13)];
+    init_test(&cd_G15x0y2, buf);
+    G15x0y2 *dp, &lv = *(dp=new (buf) G15x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(88,48), "sizeof(G15x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y2)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(40,24), "G15x0y2");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(56,32), "G15x0y2");
+    check_base_class_offset(lv, (C15*)(E15x0*), 0, "G15x0y2");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(16,8), "G15x0y2");
+    check_base_class_offset(lv, (E15x0*), 0, "G15x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(72,40), "G15x0y2");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G15x0y2.ff");
+    test_class_info(&lv, &cd_G15x0y2);
+    dp->~G15x0y2();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y2(Test_G15x0y2, "G15x0y2", ABISELECT(88,48));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y2C1Ev();
+extern void _ZN7G15x0y2D1Ev();
+Name_Map name_map_G15x0y2[] = {
+  NSPAIR(_ZN7G15x0y2C1Ev),
+  NSPAIR(_ZN7G15x0y2D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G15x0y2[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    8, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    9, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F1,    ABISELECT(72,40), //bcp->offset
+    16, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    10, //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 _ZTI7G15x0y2[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G15x0y2[] = {
+  ABISELECT(72,40),
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y2[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y2[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI7G15x0y2[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI7G15x0y2[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-72,-40),
+  (VTBL_ENTRY)&(_ZTI7G15x0y2[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y2[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y2[] = {
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y2[] = {
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y2[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y2[] = {
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y2[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y2[] = {
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y2[] = {
+  {&(_ZTV7G15x0y2[5]),  5,20},
+  {&(_tg__ZTV5E15x0__7G15x0y2[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y2[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y2[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y2[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y2[3]),  3,4},
+  {&(_ZTV7G15x0y2[11]),  11,20},
+  {&(_ZTV7G15x0y2[15]),  15,20},
+  {&(_ZTV7G15x0y2[19]),  19,20},
+};
+extern VTBL_ENTRY _ZTI7G15x0y2[];
+extern  VTBL_ENTRY _ZTV7G15x0y2[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y2[];
+Class_Descriptor cd_G15x0y2 = {  "G15x0y2", // class name
+  bases_G15x0y2, 6,
+  &(vtc_G15x0y2[0]), // expected_vtbl_contents
+  &(vtt_G15x0y2[0]), // expected_vtt_contents
+  ABISELECT(88,48), // object size
+  NSPAIRA(_ZTI7G15x0y2),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y2),20, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y2),10, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y3  : virtual E15x0 , virtual F1 {
+  int ff;
+  ~G15x0y3(); // tgen
+  G15x0y3(); // tgen
+};
+//SIG(1 G15x0y3) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ v4 Fi} Fi}
+
+
+G15x0y3 ::~G15x0y3(){ note_dtor("G15x0y3", this);} // tgen
+G15x0y3 ::G15x0y3(){ note_ctor("G15x0y3", this);} // tgen
+
+static void Test_G15x0y3()
+{
+  extern Class_Descriptor cd_G15x0y3;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(13,14)];
+    init_test(&cd_G15x0y3, buf);
+    G15x0y3 *dp, &lv = *(dp=new (buf) G15x0y3());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(96,52), "sizeof(G15x0y3)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y3)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(48,28), "G15x0y3");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(64,36), "G15x0y3");
+    check_base_class_offset(lv, (C15*)(E15x0*), ABISELECT(16,8), "G15x0y3");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(32,16), "G15x0y3");
+    check_base_class_offset(lv, (E15x0*), ABISELECT(16,8), "G15x0y3");
+    check_base_class_offset(lv, (F1*), ABISELECT(80,44), "G15x0y3");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G15x0y3.ff");
+    test_class_info(&lv, &cd_G15x0y3);
+    dp->~G15x0y3();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y3(Test_G15x0y3, "G15x0y3", ABISELECT(96,52));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y3C1Ev();
+extern void _ZN7G15x0y3D1Ev();
+Name_Map name_map_G15x0y3[] = {
+  NSPAIR(_ZN7G15x0y3C1Ev),
+  NSPAIR(_ZN7G15x0y3D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G15x0y3[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B1,    ABISELECT(64,36), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    3, //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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    8, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    ABISELECT(80,44), //bcp->offset
+    22, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y3[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G15x0y3[] = {
+  ABISELECT(80,44),
+  ABISELECT(64,36),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  ABISELECT(16,8),
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-36),
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+  0,
+  ABISELECT(-80,-44),
+  (VTBL_ENTRY)&(_ZTI7G15x0y3[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y3[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y3[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y3[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y3[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y3[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y3[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y3[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y3[] = {
+  {&(_ZTV7G15x0y3[6]),  6,26},
+  {&(_ZTV7G15x0y3[11]),  11,26},
+  {&(_ZTV7G15x0y3[17]),  17,26},
+  {&(_ZTV7G15x0y3[21]),  21,26},
+  {&(_ZTV7G15x0y3[13]),  13,26},
+  {&(_ZTV7G15x0y3[25]),  25,26},
+  {&(_tg__ZTV5E15x0__7G15x0y3[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y3[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y3[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y3[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y3[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G15x0y3[];
+extern  VTBL_ENTRY _ZTV7G15x0y3[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y3[];
+Class_Descriptor cd_G15x0y3 = {  "G15x0y3", // class name
+  bases_G15x0y3, 6,
+  &(vtc_G15x0y3[0]), // expected_vtbl_contents
+  &(vtt_G15x0y3[0]), // expected_vtt_contents
+  ABISELECT(96,52), // object size
+  NSPAIRA(_ZTI7G15x0y3),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y3),26, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y3),12, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y4  : E15x0 , F0 {
+  int ff;
+  ~G15x0y4(); // tgen
+  G15x0y4(); // tgen
+};
+//SIG(1 G15x0y4) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G15x0y4 ::~G15x0y4(){ note_dtor("G15x0y4", this);} // tgen
+G15x0y4 ::G15x0y4(){ note_ctor("G15x0y4", this);} // tgen
+
+static void Test_G15x0y4()
+{
+  extern Class_Descriptor cd_G15x0y4;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G15x0y4, buf);
+    G15x0y4 *dp, &lv = *(dp=new (buf) G15x0y4());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G15x0y4)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y4)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(40,28), "G15x0y4");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(56,36), "G15x0y4");
+    check_base_class_offset(lv, (C15*)(E15x0*), 0, "G15x0y4");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(16,8), "G15x0y4");
+    check_base_class_offset(lv, (E15x0*), 0, "G15x0y4");
+    check_base_class_offset(lv, (F0*), ABISELECT(32,20), "G15x0y4");
+    check_field_offset(lv, ff, ABISELECT(36,24), "G15x0y4.ff");
+    test_class_info(&lv, &cd_G15x0y4);
+    dp->~G15x0y4();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y4(Test_G15x0y4, "G15x0y4", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y4C1Ev();
+extern void _ZN7G15x0y4D1Ev();
+Name_Map name_map_G15x0y4[] = {
+  NSPAIR(_ZN7G15x0y4C1Ev),
+  NSPAIR(_ZN7G15x0y4D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G15x0y4[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,28), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    8, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,36), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    9, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    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
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y4[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y4[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y4[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y4[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G15x0y4[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI7G15x0y4[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y4[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y4[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y4[] = {
+  ABISELECT(56,36),
+  ABISELECT(40,28),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y4[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y4[] = {
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y4[] = {
+  0,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y4[] = {
+  0,
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y4[] = {
+  {&(_ZTV7G15x0y4[4]),  4,15},
+  {&(_tg__ZTV5E15x0__7G15x0y4[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y4[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y4[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y4[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y4[3]),  3,4},
+  {&(_ZTV7G15x0y4[10]),  10,15},
+  {&(_ZTV7G15x0y4[14]),  14,15},
+};
+extern VTBL_ENTRY _ZTI7G15x0y4[];
+extern  VTBL_ENTRY _ZTV7G15x0y4[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y4[];
+Class_Descriptor cd_G15x0y4 = {  "G15x0y4", // class name
+  bases_G15x0y4, 6,
+  &(vtc_G15x0y4[0]), // expected_vtbl_contents
+  &(vtt_G15x0y4[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G15x0y4),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y4),15, //virtual function table var
+  4, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y4),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y5  : virtual E15x0 , F0 {
+  int ff;
+  ~G15x0y5(); // tgen
+  G15x0y5(); // tgen
+};
+//SIG(1 G15x0y5) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} BC7{ Fi} Fi}
+
+
+G15x0y5 ::~G15x0y5(){ note_dtor("G15x0y5", this);} // tgen
+G15x0y5 ::G15x0y5(){ note_ctor("G15x0y5", this);} // tgen
+
+static void Test_G15x0y5()
+{
+  extern Class_Descriptor cd_G15x0y5;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G15x0y5, buf);
+    G15x0y5 *dp, &lv = *(dp=new (buf) G15x0y5());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G15x0y5)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y5)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(48,32), "G15x0y5");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(64,40), "G15x0y5");
+    check_base_class_offset(lv, (C15*)(E15x0*), ABISELECT(16,12), "G15x0y5");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(32,20), "G15x0y5");
+    check_base_class_offset(lv, (E15x0*), ABISELECT(16,12), "G15x0y5");
+    check_base_class_offset(lv, (F0*), ABISELECT(8,4), "G15x0y5");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G15x0y5.ff");
+    test_class_info(&lv, &cd_G15x0y5);
+    dp->~G15x0y5();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y5(Test_G15x0y5, "G15x0y5", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y5C1Ev();
+extern void _ZN7G15x0y5D1Ev();
+Name_Map name_map_G15x0y5[] = {
+  NSPAIR(_ZN7G15x0y5C1Ev),
+  NSPAIR(_ZN7G15x0y5D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G15x0y5[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,32), //bcp->offset
+    13, //bcp->virtual_function_table_offset
+    3, //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_B1,    ABISELECT(64,40), //bcp->offset
+    17, //bcp->virtual_function_table_offset
+    3, //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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,20), //bcp->offset
+    10, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    ABISELECT(16,12), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    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 _ZTI7G15x0y5[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y5[] = {
+  ABISELECT(64,40),
+  ABISELECT(48,32),
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y5[0]),
+  ABISELECT(16,8),
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G15x0y5[0]),
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI7G15x0y5[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-32),
+  (VTBL_ENTRY)&(_ZTI7G15x0y5[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-40),
+  (VTBL_ENTRY)&(_ZTI7G15x0y5[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y5[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y5[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y5[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y5[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y5[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y5[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y5[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y5[] = {
+  {&(_ZTV7G15x0y5[5]),  5,21},
+  {&(_ZTV7G15x0y5[10]),  10,21},
+  {&(_ZTV7G15x0y5[16]),  16,21},
+  {&(_ZTV7G15x0y5[20]),  20,21},
+  {&(_ZTV7G15x0y5[12]),  12,21},
+  {&(_tg__ZTV5E15x0__7G15x0y5[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y5[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y5[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y5[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y5[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G15x0y5[];
+extern  VTBL_ENTRY _ZTV7G15x0y5[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y5[];
+Class_Descriptor cd_G15x0y5 = {  "G15x0y5", // class name
+  bases_G15x0y5, 6,
+  &(vtc_G15x0y5[0]), // expected_vtbl_contents
+  &(vtt_G15x0y5[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G15x0y5),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y5),21, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y5),11, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y6  : E15x0 , virtual F0 {
+  int ff;
+  ~G15x0y6(); // tgen
+  G15x0y6(); // tgen
+};
+//SIG(1 G15x0y6) C1{ BC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G15x0y6 ::~G15x0y6(){ note_dtor("G15x0y6", this);} // tgen
+G15x0y6 ::G15x0y6(){ note_ctor("G15x0y6", this);} // tgen
+
+static void Test_G15x0y6()
+{
+  extern Class_Descriptor cd_G15x0y6;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd_G15x0y6, buf);
+    G15x0y6 *dp, &lv = *(dp=new (buf) G15x0y6());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(G15x0y6)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y6)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(40,24), "G15x0y6");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(56,32), "G15x0y6");
+    check_base_class_offset(lv, (C15*)(E15x0*), 0, "G15x0y6");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(16,8), "G15x0y6");
+    check_base_class_offset(lv, (E15x0*), 0, "G15x0y6");
+    check_base_class_offset(lv, (F0*), ABISELECT(68,40), "G15x0y6");
+    check_field_offset(lv, ff, ABISELECT(32,20), "G15x0y6.ff");
+    test_class_info(&lv, &cd_G15x0y6);
+    dp->~G15x0y6();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y6(Test_G15x0y6, "G15x0y6", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y6C1Ev();
+extern void _ZN7G15x0y6D1Ev();
+Name_Map name_map_G15x0y6[] = {
+  NSPAIR(_ZN7G15x0y6C1Ev),
+  NSPAIR(_ZN7G15x0y6D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G15x0y6[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(40,24), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    8, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_B1,    ABISELECT(56,32), //bcp->offset
+    12, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    9, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    2, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    3, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(16,8), //bcp->offset
+    5, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    5, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {&cd_F0,    ABISELECT(68,40), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y6[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y6[] = {
+  ABISELECT(68,40),
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y6[0]),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y6[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI7G15x0y6[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI7G15x0y6[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y6[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y6[] = {
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y6[] = {
+  ABISELECT(56,32),
+  ABISELECT(40,24),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y6[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y6[] = {
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y6[] = {
+  0,
+  ABISELECT(-40,-24),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y6[] = {
+  0,
+  ABISELECT(-56,-32),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y6[] = {
+  {&(_ZTV7G15x0y6[5]),  5,16},
+  {&(_tg__ZTV5E15x0__7G15x0y6[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y6[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y6[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y6[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y6[3]),  3,4},
+  {&(_ZTV7G15x0y6[11]),  11,16},
+  {&(_ZTV7G15x0y6[15]),  15,16},
+};
+extern VTBL_ENTRY _ZTI7G15x0y6[];
+extern  VTBL_ENTRY _ZTV7G15x0y6[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y6[];
+Class_Descriptor cd_G15x0y6 = {  "G15x0y6", // class name
+  bases_G15x0y6, 6,
+  &(vtc_G15x0y6[0]), // expected_vtbl_contents
+  &(vtt_G15x0y6[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTI7G15x0y6),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y6),16, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y6),9, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G15x0y7  : virtual E15x0 , virtual F0 {
+  int ff;
+  ~G15x0y7(); // tgen
+  G15x0y7(); // tgen
+};
+//SIG(1 G15x0y7) C1{ VBC2{ BC3{ VBC4{ v1 Fi} VBC5{ v2 Fi} Fi} BC6{ v3 Fi} Fi} VBC7{ Fi} Fi}
+
+
+G15x0y7 ::~G15x0y7(){ note_dtor("G15x0y7", this);} // tgen
+G15x0y7 ::G15x0y7(){ note_ctor("G15x0y7", this);} // tgen
+
+static void Test_G15x0y7()
+{
+  extern Class_Descriptor cd_G15x0y7;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(11,13)];
+    init_test(&cd_G15x0y7, buf);
+    G15x0y7 *dp, &lv = *(dp=new (buf) G15x0y7());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(80,48), "sizeof(G15x0y7)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G15x0y7)");
+    check_base_class_offset(lv, (A1*)(C15*)(E15x0*), ABISELECT(48,28), "G15x0y7");
+    check_base_class_offset(lv, (B1*)(C15*)(E15x0*), ABISELECT(64,36), "G15x0y7");
+    check_base_class_offset(lv, (C15*)(E15x0*), ABISELECT(16,8), "G15x0y7");
+    check_base_class_offset(lv, (D1*)(E15x0*), ABISELECT(32,16), "G15x0y7");
+    check_base_class_offset(lv, (E15x0*), ABISELECT(16,8), "G15x0y7");
+    check_base_class_offset(lv, (F0*), ABISELECT(76,44), "G15x0y7");
+    check_field_offset(lv, ff, ABISELECT(8,4), "G15x0y7.ff");
+    test_class_info(&lv, &cd_G15x0y7);
+    dp->~G15x0y7();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG15x0y7(Test_G15x0y7, "G15x0y7", ABISELECT(80,48));
+
+#else // __cplusplus
+
+extern void _ZN7G15x0y7C1Ev();
+extern void _ZN7G15x0y7D1Ev();
+Name_Map name_map_G15x0y7[] = {
+  NSPAIR(_ZN7G15x0y7C1Ev),
+  NSPAIR(_ZN7G15x0y7D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A1;
+extern VTBL_ENTRY _ZTI2A1[];
+extern  VTBL_ENTRY _ZTV2A1[];
+extern Class_Descriptor cd_B1;
+extern VTBL_ENTRY _ZTI2B1[];
+extern  VTBL_ENTRY _ZTV2B1[];
+extern Class_Descriptor cd_C15;
+extern VTBL_ENTRY _ZTI3C15[];
+extern  VTBL_ENTRY _ZTV3C15[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT3C15[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E15x0;
+extern VTBL_ENTRY _ZTI5E15x0[];
+extern  VTBL_ENTRY _ZTV5E15x0[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT5E15x0[];
+extern Class_Descriptor cd_F0;
+extern VTBL_ENTRY _ZTI2F0[];
+static Base_Class bases_G15x0y7[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A1,    ABISELECT(48,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    3, //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_B1,    ABISELECT(64,36), //bcp->offset
+    18, //bcp->virtual_function_table_offset
+    3, //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
+    2, //immediately_derived
+  0, 1},
+  {&cd_C15,    ABISELECT(16,8), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(32,16), //bcp->offset
+    11, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_E15x0,    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
+    6, //bcp->base_subarray_index_in_construction_vtbl_array
+    5, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F0,    ABISELECT(76,44), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {0}};
+extern VTBL_ENTRY _ZTI7G15x0y7[];
+extern void _ZN2D13fooEv();
+extern void _ZN2A13fooEv();
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY vtc_G15x0y7[] = {
+  ABISELECT(76,44),
+  ABISELECT(64,36),
+  ABISELECT(48,28),
+  ABISELECT(16,8),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G15x0y7[0]),
+  ABISELECT(16,8),
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  ABISELECT(-16,-8),
+  (VTBL_ENTRY)&(_ZTI7G15x0y7[0]),
+  ABISELECT(-32,-16),
+  (VTBL_ENTRY)&(_ZTI7G15x0y7[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI7G15x0y7[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+  0,
+  ABISELECT(-64,-36),
+  (VTBL_ENTRY)&(_ZTI7G15x0y7[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G15x0y7[];
+static  VTBL_ENTRY _tg__ZTV5E15x0__7G15x0y7[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+};
+static  VTBL_ENTRY _tg__ZTV3C155E15x0__7G15x0y7[] = {
+  ABISELECT(48,28),
+  ABISELECT(32,20),
+  0,
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__3C155E15x0__7G15x0y7[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__3C155E15x0__7G15x0y7[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI3C15[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+extern void _ZN2A13fooEv();
+static  VTBL_ENTRY _tg__ZTV2A1__5E15x0__7G15x0y7[] = {
+  0,
+  ABISELECT(-32,-20),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2A13fooEv,
+};
+extern void _ZN2B13fooEv();
+static  VTBL_ENTRY _tg__ZTV2B1__5E15x0__7G15x0y7[] = {
+  0,
+  ABISELECT(-48,-28),
+  (VTBL_ENTRY)&(_ZTI5E15x0[0]),
+  (VTBL_ENTRY)&_ZN2B13fooEv,
+};
+static  VTT_ENTRY vtt_G15x0y7[] = {
+  {&(_ZTV7G15x0y7[6]),  6,22},
+  {&(_ZTV7G15x0y7[11]),  11,22},
+  {&(_ZTV7G15x0y7[17]),  17,22},
+  {&(_ZTV7G15x0y7[21]),  21,22},
+  {&(_ZTV7G15x0y7[13]),  13,22},
+  {&(_tg__ZTV5E15x0__7G15x0y7[4]),  4,4},
+  {&(_tg__ZTV3C155E15x0__7G15x0y7[4]),  4,4},
+  {&(_tg__ZTV2A1__3C155E15x0__7G15x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__3C155E15x0__7G15x0y7[3]),  3,4},
+  {&(_tg__ZTV2A1__5E15x0__7G15x0y7[3]),  3,4},
+  {&(_tg__ZTV2B1__5E15x0__7G15x0y7[3]),  3,4},
+};
+extern VTBL_ENTRY _ZTI7G15x0y7[];
+extern  VTBL_ENTRY _ZTV7G15x0y7[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G15x0y7[];
+Class_Descriptor cd_G15x0y7 = {  "G15x0y7", // class name
+  bases_G15x0y7, 6,
+  &(vtc_G15x0y7[0]), // expected_vtbl_contents
+  &(vtt_G15x0y7[0]), // expected_vtt_contents
+  ABISELECT(80,48), // object size
+  NSPAIRA(_ZTI7G15x0y7),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G15x0y7),22, //virtual function table var
+  6, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G15x0y7),11, //virtual table table var
+  5, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  E16x0  : C16 , D1 {
+  int fd;
+  ~E16x0(); // tgen
+  E16x0(); // tgen
+};
+//SIG(-1 E16x0) C1{ BC2{ BC3{ Fi} BC4{ Fi} v1 Fi} BC5{ v2 Fi} Fi}
+
+
+E16x0 ::~E16x0(){ note_dtor("E16x0", this);} // tgen
+E16x0 ::E16x0(){ note_ctor("E16x0", this);} // tgen
+
+static void Test_E16x0()
+{
+  extern Class_Descriptor cd_E16x0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(6,8)];
+    init_test(&cd_E16x0, buf);
+    E16x0 *dp, &lv = *(dp=new (buf) E16x0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(40,28), "sizeof(E16x0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(E16x0)");
+    check_base_class_offset(lv, (A0*)(C16*), ABISELECT(8,4), "E16x0");
+    check_base_class_offset(lv, (B0*)(C16*), ABISELECT(12,8), "E16x0");
+    check_base_class_offset(lv, (C16*), 0, "E16x0");
+    check_base_class_offset(lv, (D1*), ABISELECT(24,16), "E16x0");
+    check_field_offset(lv, fd, ABISELECT(36,24), "E16x0.fd");
+    test_class_info(&lv, &cd_E16x0);
+    dp->~E16x0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vE16x0(Test_E16x0, "E16x0", ABISELECT(40,28));
+
+#else // __cplusplus
+
+extern void _ZN5E16x0C1Ev();
+extern void _ZN5E16x0D1Ev();
+Name_Map name_map_E16x0[] = {
+  NSPAIR(_ZN5E16x0C1Ev),
+  NSPAIR(_ZN5E16x0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C16;
+extern VTBL_ENTRY _ZTI3C16[];
+extern  VTBL_ENTRY _ZTV3C16[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+static Base_Class bases_E16x0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(12,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_C16,    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},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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 _ZTI5E16x0[];
+extern void _ZN3C163fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_E16x0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI5E16x0[0]),
+  (VTBL_ENTRY)&_ZN3C163fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI5E16x0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTI5E16x0[];
+extern  VTBL_ENTRY _ZTV5E16x0[];
+Class_Descriptor cd_E16x0 = {  "E16x0", // class name
+  bases_E16x0, 4,
+  &(vtc_E16x0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(40,28), // object size
+  NSPAIRA(_ZTI5E16x0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV5E16x0),6, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  2, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G16x0y0  : E16x0 , F1 {
+  int ff;
+  ~G16x0y0(); // tgen
+  G16x0y0(); // tgen
+};
+//SIG(1 G16x0y0) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} v1 Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G16x0y0 ::~G16x0y0(){ note_dtor("G16x0y0", this);} // tgen
+G16x0y0 ::G16x0y0(){ note_ctor("G16x0y0", this);} // tgen
+
+static void Test_G16x0y0()
+{
+  extern Class_Descriptor cd_G16x0y0;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G16x0y0, buf);
+    G16x0y0 *dp, &lv = *(dp=new (buf) G16x0y0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G16x0y0)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G16x0y0)");
+    check_base_class_offset(lv, (A0*)(C16*)(E16x0*), ABISELECT(8,4), "G16x0y0");
+    check_base_class_offset(lv, (B0*)(C16*)(E16x0*), ABISELECT(12,8), "G16x0y0");
+    check_base_class_offset(lv, (C16*)(E16x0*), 0, "G16x0y0");
+    check_base_class_offset(lv, (D1*)(E16x0*), ABISELECT(24,16), "G16x0y0");
+    check_base_class_offset(lv, (E16x0*), 0, "G16x0y0");
+    check_base_class_offset(lv, (F1*), ABISELECT(40,28), "G16x0y0");
+    check_field_offset(lv, ff, ABISELECT(52,36), "G16x0y0.ff");
+    test_class_info(&lv, &cd_G16x0y0);
+    dp->~G16x0y0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG16x0y0(Test_G16x0y0, "G16x0y0", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G16x0y0C1Ev();
+extern void _ZN7G16x0y0D1Ev();
+Name_Map name_map_G16x0y0[] = {
+  NSPAIR(_ZN7G16x0y0C1Ev),
+  NSPAIR(_ZN7G16x0y0D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C16;
+extern VTBL_ENTRY _ZTI3C16[];
+extern  VTBL_ENTRY _ZTV3C16[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E16x0;
+extern VTBL_ENTRY _ZTI5E16x0[];
+extern  VTBL_ENTRY _ZTV5E16x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G16x0y0[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    ABISELECT(8,4), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    -1, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(12,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_C16,    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
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(24,16), //bcp->offset
+    3, //bcp->virtual_function_table_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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E16x0,    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},
+  {&cd_F1,    ABISELECT(40,28), //bcp->offset
+    6, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G16x0y0[];
+extern void _ZN3C163fooEv();
+extern void _ZN2D13fooEv();
+extern void _ZN2F13fooEv();
+static  VTBL_ENTRY vtc_G16x0y0[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTI7G16x0y0[0]),
+  (VTBL_ENTRY)&_ZN3C163fooEv,
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTI7G16x0y0[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G16x0y0[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+};
+extern VTBL_ENTRY _ZTI7G16x0y0[];
+extern  VTBL_ENTRY _ZTV7G16x0y0[];
+Class_Descriptor cd_G16x0y0 = {  "G16x0y0", // class name
+  bases_G16x0y0, 6,
+  &(vtc_G16x0y0[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G16x0y0),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G16x0y0),9, //virtual function table var
+  2, // offset into main vftv pointed to by object[0]
+  {0,0},0, // virtual table table var
+  4, // n_initialized_bases
+  0, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G16x0y1  : virtual E16x0 , F1 {
+  int ff;
+  ~G16x0y1(); // tgen
+  G16x0y1(); // tgen
+};
+//SIG(1 G16x0y1) C1{ VBC2{ BC3{ BC4{ Fi} BC5{ Fi} v1 Fi} BC6{ v2 Fi} Fi} BC7{ v3 Fi} Fi}
+
+
+G16x0y1 ::~G16x0y1(){ note_dtor("G16x0y1", this);} // tgen
+G16x0y1 ::G16x0y1(){ note_ctor("G16x0y1", this);} // tgen
+
+static void Test_G16x0y1()
+{
+  extern Class_Descriptor cd_G16x0y1;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(8,11)];
+    init_test(&cd_G16x0y1, buf);
+    G16x0y1 *dp, &lv = *(dp=new (buf) G16x0y1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(56,40), "sizeof(G16x0y1)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G16x0y1)");
+    check_base_class_offset(lv, (A0*)(C16*)(E16x0*), ABISELECT(24,16), "G16x0y1");
+    check_base_class_offset(lv, (B0*)(C16*)(E16x0*), ABISELECT(28,20), "G16x0y1");
+    check_base_class_offset(lv, (C16*)(E16x0*), ABISELECT(16,12), "G16x0y1");
+    check_base_class_offset(lv, (D1*)(E16x0*), ABISELECT(40,28), "G16x0y1");
+    check_base_class_offset(lv, (E16x0*), ABISELECT(16,12), "G16x0y1");
+    check_base_class_offset(lv, (F1*), 0, "G16x0y1");
+    check_field_offset(lv, ff, ABISELECT(12,8), "G16x0y1.ff");
+    test_class_info(&lv, &cd_G16x0y1);
+    dp->~G16x0y1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me vG16x0y1(Test_G16x0y1, "G16x0y1", ABISELECT(56,40));
+
+#else // __cplusplus
+
+extern void _ZN7G16x0y1C1Ev();
+extern void _ZN7G16x0y1D1Ev();
+Name_Map name_map_G16x0y1[] = {
+  NSPAIR(_ZN7G16x0y1C1Ev),
+  NSPAIR(_ZN7G16x0y1D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd_A0;
+extern VTBL_ENTRY _ZTI2A0[];
+extern Class_Descriptor cd_B0;
+extern VTBL_ENTRY _ZTI2B0[];
+extern Class_Descriptor cd_C16;
+extern VTBL_ENTRY _ZTI3C16[];
+extern  VTBL_ENTRY _ZTV3C16[];
+extern Class_Descriptor cd_D1;
+extern VTBL_ENTRY _ZTI2D1[];
+extern  VTBL_ENTRY _ZTV2D1[];
+extern Class_Descriptor cd_E16x0;
+extern VTBL_ENTRY _ZTI5E16x0[];
+extern  VTBL_ENTRY _ZTV5E16x0[];
+extern Class_Descriptor cd_F1;
+extern VTBL_ENTRY _ZTI2F1[];
+extern  VTBL_ENTRY _ZTV2F1[];
+static Base_Class bases_G16x0y1[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd_A0,    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
+    2, //immediately_derived
+  0, 0},
+  {&cd_B0,    ABISELECT(28,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
+    2, //immediately_derived
+  0, 0},
+  {&cd_C16,    ABISELECT(16,12), //bcp->offset
+    4, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    4, //immediately_derived
+  0, 0},
+  {&cd_D1,    ABISELECT(40,28), //bcp->offset
+    8, //bcp->virtual_function_table_offset
+    2, //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
+    4, //immediately_derived
+  0, 0},
+  {&cd_E16x0,    ABISELECT(16,12), //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    2, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd_F1,    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
+    4, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTI7G16x0y1[];
+extern void _ZN2F13fooEv();
+extern void _ZN3C163fooEv();
+extern void _ZN2D13fooEv();
+static  VTBL_ENTRY vtc_G16x0y1[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTI7G16x0y1[0]),
+  (VTBL_ENTRY)&_ZN2F13fooEv,
+  0,
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTI7G16x0y1[0]),
+  (VTBL_ENTRY)&_ZN3C163fooEv,
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTI7G16x0y1[0]),
+  (VTBL_ENTRY)&_ZN2D13fooEv,
+};
+extern VTBL_ENTRY _ZTV7G16x0y1[];
+static  VTT_ENTRY vtt_G16x0y1[] = {
+  {&(_ZTV7G16x0y1[3]),  3,11},
+  {&(_ZTV7G16x0y1[7]),  7,11},
+  {&(_ZTV7G16x0y1[10]),  10,11},
+};
+extern VTBL_ENTRY _ZTI7G16x0y1[];
+extern  VTBL_ENTRY _ZTV7G16x0y1[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTT7G16x0y1[];
+Class_Descriptor cd_G16x0y1 = {  "G16x0y1", // class name
+  bases_G16x0y1, 6,
+  &(vtc_G16x0y1[0]), // expected_vtbl_contents
+  &(vtt_G16x0y1[0]), // expected_vtt_contents
+  ABISELECT(56,40), // object size
+  NSPAIRA(_ZTI7G16x0y1),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTV7G16x0y1),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTT7G16x0y1),3, //virtual table table var
+  4, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  0, // alt-thunk-names
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+
+struct  G16x0y2  : E16x0 , virtual F1 {
+  int ff;
+  ~G16x0y2(); // tgen
+  G16x0y2(); // tgen
+};
+//SIG(1 G16x0y2) C1{ BC2{ BC3{ BC4{ Fi} BC5{ Fi} v1 Fi} BC6{ v2 Fi} Fi} VBC7{ v3 Fi} Fi}
+
+
+G16x0y2 ::~G16x0y2(){ note_dtor("G16x0y2", this);} // tgen
+G16x0y2 ::G16x0y2(){ note_ctor("G16x0y2", this);} // tgen
+
+static void Test_G16x0y2()
+{
+  extern Class_Descriptor cd_G16x0y2;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(9,11)];
+    init_test(&cd_G16x0y2, buf);
+    G16x0y2 *dp, &lv = *(dp=new (buf) G16x0y2());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(64,40), "sizeof(G16x0y2)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(G16x0y2)");
+    check_base_class_offset(lv, (A0*)(C16*)(E16x0*), ABISELECT(8,4), "G16x0y2");
+    check_base_class_offset(lv, (B0*)(C16*)(E16x0*), ABISELECT(12,8), "G16x0y2");
+    check_base_class_offset(lv, (C16*)(E16x0*), 0, "G16x0y2");
+    check_base_class_offset(lv, (D1*)(E16x0*), ABISELECT(24,16), "G16x0y2");
+    check_base_class_offset(lv, (E16x0*), 0, "G16x0y2");
+    check_base_class_offset(lv, (F1*), ABISELECT(48,32), "G16x0y2");
+    check_field_offset(lv, ff, ABISELECT(40,28), "G16x0y2.ff");

[... 195833 lines stripped ...]




More information about the llvm-commits mailing list