1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>&1 \ 2dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// RUN: | FileCheck %s 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fdump-record-layouts -fsyntax-only %s 2>/dev/null \ 47967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// RUN: | FileCheck %s -check-prefix CHECK-X64 5dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 6dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntextern "C" int printf(const char *fmt, ...); 7dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 8dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B0 { int a; B0() : a(0xf00000B0) {} }; 9dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B1 { char a; B1() : a(0xB1) {} }; 10dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B2 : virtual B1 { int a; B2() : a(0xf00000B2) {} }; 11dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B3 { __declspec(align(16)) int a; B3() : a(0xf00000B3) {} }; 12dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B4 : virtual B3 { int a; B4() : a(0xf00000B4) {} }; 13dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B5 { __declspec(align(32)) int a; B5() : a(0xf00000B5) {} }; 14dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B6 { int a; B6() : a(0xf00000B6) {} virtual void f() { printf("B6"); } }; 15dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 16dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct A : B0, virtual B1 { __declspec(align(16)) int a; A() : a(0xf000000A) {} virtual void f() { printf("A"); } }; 17dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 18dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct A 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (A vftable pointer) 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B0 (base) 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | (A vbtable pointer) 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | int a 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | struct B1 (virtual base) 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | char a 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=80, align=16 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=64, nvalign=16] 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 327967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct A 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (A vftable pointer) 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B0 (base) 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | (A vbtable pointer) 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B1 (virtual base) 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | char a 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=80, align=16 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=64, nvalign=16] 44dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 45dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct B : A, B2 { int a; B() : a(0xf000000B) {} virtual void f() { printf("B"); } }; 46dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 47dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct A (primary base) 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (A vftable pointer) 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B0 (base) 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | (A vbtable pointer) 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | int a 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | struct B2 (base) 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | (B2 vbtable pointer) 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 68 | int a 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 72 | int a 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 80 | struct B1 (virtual base) 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 80 | char a 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=96, align=16 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=80, nvalign=16] 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 657967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B 67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct A (primary base) 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (A vftable pointer) 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B0 (base) 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | (A vbtable pointer) 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B2 (base) 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | (B2 vbtable pointer) 75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 72 | int a 76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 80 | int a 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 96 | struct B1 (virtual base) 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 96 | char a 79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=112, align=16 80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=96, nvalign=16] 81dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 82dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct C : B4 { int a; C() : a(0xf000000C) {} virtual void f() { printf("C"); } }; 83dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 84dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 85651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct C 88651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (C vftable pointer) 89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B4 (base) 90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | (B4 vbtable pointer) 91651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | int a 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 24 | int a 93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | struct B3 (virtual base) 94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | int a 95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=48, align=16 96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=32, nvalign=16] 97651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 987967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct C 101651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (C vftable pointer) 102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B4 (base) 103651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | (B4 vbtable pointer) 104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | int a 105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | struct B3 (virtual base) 107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 108651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=64, align=16 109651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=48, nvalign=16] 110dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 111dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct D : C { int a; D() : a(0xf000000D) {} virtual void f() { printf("D"); } }; 112dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 113dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct D 115651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct C (primary base) 116651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (C vftable pointer) 117651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B4 (base) 118651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | (B4 vbtable pointer) 119651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | int a 120651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 24 | int a 121651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | int a 122651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | struct B3 (virtual base) 123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | int a 124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=64, align=16 125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=48, nvalign=16] 1267967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct D 128651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct C (primary base) 129651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (C vftable pointer) 130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B4 (base) 131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | (B4 vbtable pointer) 132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | int a 133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 134651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B3 (virtual base) 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | int a 137651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=80, align=16 138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=64, nvalign=16] 139dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 140dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct E : virtual C { int a; E() : a(0xf000000E) {} virtual void f() { printf("E"); } }; 141dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 142dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct E 144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (E vbtable pointer) 145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | int a 146651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B3 (virtual base) 147651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 148651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 44 | (vtordisp for vbase C) 149651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | struct C (virtual base) 150651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | (C vftable pointer) 151651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | struct B4 (base) 152651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | (B4 vbtable pointer) 153651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 68 | int a 154651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 72 | int a 155651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=80, align=16 156651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=8, nvalign=16] 1577967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 158651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct E 159651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (E vbtable pointer) 160651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | int a 161651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B3 (virtual base) 162651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 163651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 44 | (vtordisp for vbase C) 164651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | struct C (virtual base) 165651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | (C vftable pointer) 166651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B4 (base) 167651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | (B4 vbtable pointer) 168651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 72 | int a 169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 80 | int a 170651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=96, align=16 171651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=16, nvalign=16] 172dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 173dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct F : B3, virtual B0 { int a; F() : a(0xf000000F) {} virtual void f() { printf("F"); } }; 174dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 175dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 176651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct F 177651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (F vftable pointer) 178651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B3 (base) 179651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 180651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | (F vbtable pointer) 181651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | int a 182651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | struct B0 (virtual base) 183651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | int a 184651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=80, align=16 185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=64, nvalign=16] 1867967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 187651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct F 188651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (F vftable pointer) 189651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B3 (base) 190651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | (F vbtable pointer) 192651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 193651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B0 (virtual base) 194651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | int a 195651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=80, align=16 196651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=64, nvalign=16] 197dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 198dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct G : B2, B6, virtual B1 { int a; G() : a(0xf0000010) {} }; 199dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 200dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 201651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 202651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct G 203651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B6 (primary base) 204651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (B6 vftable pointer) 205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | int a 206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | struct B2 (base) 207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | (B2 vbtable pointer) 208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | int a 209651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 210651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | struct B1 (virtual base) 211651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | char a 212651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=21, align=4 213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=20, nvalign=4] 214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 2157967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct G 217651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B6 (primary base) 218651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (B6 vftable pointer) 219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | int a 220651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B2 (base) 221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | (B2 vbtable pointer) 222651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | int a 223651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 224651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 40 | struct B1 (virtual base) 225651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 40 | char a 226651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=48, align=8 227651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=40, nvalign=8] 228dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 229dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct H : B6, B2, virtual B1 { int a; H() : a(0xf0000011) {} }; 230dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 231dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 232651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct H 233651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B6 (primary base) 234651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (B6 vftable pointer) 235651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | int a 236651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | struct B2 (base) 237651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | (B2 vbtable pointer) 238651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | int a 239651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 240651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | struct B1 (virtual base) 241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | char a 242651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=21, align=4 243651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=20, nvalign=4] 2447967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 245651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct H 246651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B6 (primary base) 247651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (B6 vftable pointer) 248651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | int a 249651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B2 (base) 250651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | (B2 vbtable pointer) 251651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | int a 252651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 253651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 40 | struct B1 (virtual base) 254651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 40 | char a 255651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=48, align=8 256651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=40, nvalign=8] 257dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 258dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct I : B0, virtual B1 { int a; int a1; __declspec(align(16)) int a2; I() : a(0xf0000011), a1(0xf0000011), a2(0xf0000011) {} }; 259dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 260dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 261651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct I 262651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B0 (base) 263651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | int a 264651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | (I vbtable pointer) 265651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 20 | int a 266651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 24 | int a1 267651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | int a2 268651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | struct B1 (virtual base) 269651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | char a 270651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=64, align=16 271651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=48, nvalign=16] 2727967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 273651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct I 274651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B0 (base) 275651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | int a 276651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | (I vbtable pointer) 277651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 20 | int a 278651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | int a1 279651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a2 280651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | struct B1 (virtual base) 281651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | char a 282651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=64, align=16 283651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=48, nvalign=16] 284dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 285dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct J : B0, B3, virtual B1 { int a; int a1; J() : a(0xf0000012), a1(0xf0000012) {} }; 286dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 287dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 288651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct J 289651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B0 (base) 290651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | int a 291651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | struct B3 (base) 292651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 293651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 32 | (J vbtable pointer) 294651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 48 | int a 295651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 52 | int a1 296651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | struct B1 (virtual base) 297651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 64 | char a 298651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=80, align=16 299651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=64, nvalign=16] 3007967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 301651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct J 302651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B0 (base) 303651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | int a 304651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B3 (base) 305651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 306651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | (J vbtable pointer) 307651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 48 | int a 308651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 52 | int a1 309651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | struct B1 (virtual base) 310651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 64 | char a 311651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=80, align=16 312651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=64, nvalign=16] 313dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 314dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct K { int a; K() : a(0xf0000013) {} virtual void f() { printf("K"); } }; 315dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 316dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 317651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct K 318651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (K vftable pointer) 319651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | int a 320651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=8, align=4 321651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=8, nvalign=4] 3227967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 323651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct K 324651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (K vftable pointer) 325651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | int a 326651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=8 327651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=16, nvalign=8] 328dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 329dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct L : virtual K { int a; L() : a(0xf0000014) {} virtual void g() { printf("L"); } }; 330dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 331dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 332651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct L 333651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (L vftable pointer) 334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | (L vbtable pointer) 335651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | int a 336651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | struct K (virtual base) 337651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | (K vftable pointer) 338651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 339651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=20, align=4 340651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=12, nvalign=4] 3417967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 342651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct L 343651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (L vftable pointer) 344651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | (L vbtable pointer) 345651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | int a 346651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | struct K (virtual base) 347651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | (K vftable pointer) 348651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=40, align=8 350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=24, nvalign=8] 351dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 352dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntstruct M : virtual K { int a; M() : a(0xf0000015) {} virtual void f() { printf("M"); } }; 353dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 354dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// CHECK: *** Dumping AST Record Layout 355651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct M 356651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (M vbtable pointer) 357651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | int a 358651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | (vtordisp for vbase K) 359651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | struct K (virtual base) 360651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | (K vftable pointer) 361651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 16 | int a 362651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=20, align=4 363651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=8, nvalign=4] 3647967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// CHECK-X64: *** Dumping AST Record Layout 365651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct M 366651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (M vbtable pointer) 367651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | int a 368651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 20 | (vtordisp for vbase K) 369651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | struct K (virtual base) 370651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 24 | (K vftable pointer) 371651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 32 | int a 372651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=40, align=8 373651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=16, nvalign=8] 374dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 375dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntint a[ 376dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(A)+ 377dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(B)+ 378dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(C)+ 379dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(D)+ 380dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(E)+ 381dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(F)+ 382dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(G)+ 383dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(H)+ 384dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(I)+ 385dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(J)+ 386dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(K)+ 387dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(L)+ 388dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntsizeof(M)]; 389