1b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only -Wno-inaccessible-base %s 2>&1 \ 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: | FileCheck %s 3b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only -Wno-inaccessible-base %s 2>/dev/null \ 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: | FileCheck %s -check-prefix CHECK-X64 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesextern "C" int printf(const char *fmt, ...); 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hineschar buffer[419430400]; 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct A { 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines A() { 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("A = %d\n", (int)((char*)this - buffer)); 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("A.a = %d\n", (int)((char*)&a - buffer)); 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct B { 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(4)) long long a; 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines B() { 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("B = %d\n", (int)((char*)this - buffer)); 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("B.a = %d\n", (int)((char*)&a - buffer)); 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(push, 2) 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct X { 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines B a; 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char b; 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int c; 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines X() { 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("X = %d\n", (int)((char*)this - buffer)); 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("X.a = %d\n", (int)((char*)&a - buffer)); 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("X.b = %d\n", (int)((char*)&b - buffer)); 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("X.c = %d\n", (int)((char*)&c - buffer)); 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct X 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B a 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | long long a 436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 8 | char b 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 10 | int c 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=16, align=4 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=14, nvalign=4] 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct X 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B a 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | long long a 526bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 8 | char b 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 10 | int c 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=4 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=14, nvalign=4] 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct Y : A, B { 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int b; 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines Y() { 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Y = %d\n", (int)((char*)this - buffer)); 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Y.a = %d\n", (int)((char*)&a - buffer)); 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Y.b = %d\n", (int)((char*)&b - buffer)); 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct Y 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct A (base) 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | struct B (base) 73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | long long a 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | char a 75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 14 | int b 76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=20, align=4 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=18, nvalign=4] 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct Y 81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct A (base) 82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 83651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 4 | struct B (base) 84651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 4 | long long a 85651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 12 | char a 86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 14 | int b 87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=20, align=4 88651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=18, nvalign=4] 89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct Z : virtual B { 91651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int b; 93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines Z() { 94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Z = %d\n", (int)((char*)this - buffer)); 95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Z.a = %d\n", (int)((char*)&a - buffer)); 96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines printf("Z.b = %d\n", (int)((char*)&b - buffer)); 97651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 98651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 101651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct Z 102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (Z vbtable pointer) 103651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | char a 104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 6 | int b 105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | struct B (virtual base) 106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 12 | long long a 107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=20, align=4 108651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=10, nvalign=4] 109651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 110651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct Z 111651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (Z vbtable pointer) 112651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | char a 113651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 10 | int b 114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct B (virtual base) 115651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | long long a 116651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=24, align=4 117651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=14, nvalign=4] 118651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 119651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(pop) 120651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 121651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct A1 { long long a; }; 122651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(push, 1) 123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct B1 : virtual A1 { char a; }; 124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(pop) 125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct C1 : B1 {}; 126651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 128651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 129651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct C1 131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct B1 (base) 132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (B1 vbtable pointer) 133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | char a 134651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | struct A1 (virtual base) 135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 8 | long long a 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=16, align=8 137651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=5, nvalign=8] 138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 139651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 140651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 141651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct C1 142651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct B1 (base) 143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (B1 vbtable pointer) 144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | char a 145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | struct A1 (virtual base) 146651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 16 | long long a 147651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=24, align=8 148651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=9, nvalign=8] 149651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 150651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct CA0 { 151651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines CA0() {} 152651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 153651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct CA1 : virtual CA0 { 154651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines CA1() {} 155651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 156651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(push, 1) 157651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct CA2 : public CA1, public CA0 { 158651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual void CA2Method() {} 159651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines CA2() {} 160651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 161651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(pop) 162651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 163651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 164651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 165651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 166651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct CA2 167651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (CA2 vftable pointer) 168651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | struct CA1 (base) 169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 4 | (CA1 vbtable pointer) 170651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 9 | struct CA0 (base) (empty) 171651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 9 | struct CA0 (virtual base) (empty) 172651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=9, align=1 173651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=9, nvalign=1] 174651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 175651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 176651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 177651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct CA2 178651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (CA2 vftable pointer) 179651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | struct CA1 (base) 180651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 8 | (CA1 vbtable pointer) 181651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 17 | struct CA0 (base) (empty) 182651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 17 | struct CA0 (virtual base) (empty) 183651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=17, align=1 184651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=17, nvalign=1] 185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 186651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(16) 187651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YA { 188651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(32)) char : 1; 189651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 190651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YA (empty) 19287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:0:0-0 | char 193651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=32, align=32 194651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=32, nvalign=32] 195651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 196651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YA (empty) 19787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT:0:0-0 | char 198651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=32, align=32 199651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=32, nvalign=32] 200651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 201651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 202651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YB { 203651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 204651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines YA b; 205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YB 208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 209651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | struct YA b (empty) 21087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:1:0-0 | char 2116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=33, align=1 212651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=33, nvalign=1] 213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YB 215651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | struct YA b (empty) 21787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT:1:0-0 | char 2186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=33, align=1 219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=33, nvalign=1] 220651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(8) 222651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YC { 223651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(32)) char : 1; 224651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 225651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 226651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YC (empty) 22787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:0:0-0 | char 228651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=32, align=32 229651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=32, nvalign=32] 230651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 231651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YC (empty) 23287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 0:0-0 | char 2336bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=8, align=32 2346bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=32] 235651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 236651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 237651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YD { 238651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 239651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines YC b; 240651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 242651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YD 243651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 244651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | struct YC b (empty) 24587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:1:0-0 | char 2466bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=33, align=1 247651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=33, nvalign=1] 248651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 249651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YD 250651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 251651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | struct YC b (empty) 25287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT:1:0-0 | char 2536bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=9, align=1 254651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=9, nvalign=1] 255651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 256651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(4) 257651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YE { 258651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(32)) char : 1; 259651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 260651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 261651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YE (empty) 26287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 0:0-0 | char 2636bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=4, align=32 2646bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=4, nvalign=32] 265651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 266651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YE (empty) 26787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 0:0-0 | char 2686bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=4, align=32 2696bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=4, nvalign=32] 270651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 271651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 272651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct YF { 273651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char a; 274651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines YE b; 275651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 276651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 277651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct YF 278651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 279651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | struct YE b (empty) 28087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:1:0-0 | char 2816bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=5, align=1 282651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=5, nvalign=1] 283651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 284651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct YF 285651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 286651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | struct YE b (empty) 28787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT:1:0-0 | char 2886bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=5, align=1 289651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=5, nvalign=1] 290651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 291651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(16) 292651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct __declspec(align(16)) D0 { char a; }; 293651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 294651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct D1 : public D0 { char a; }; 295651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(16) 296651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct D2 : D1 { char a; }; 297651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 298651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 299651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 300651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 301651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct D2 302651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct D1 (base) 303651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct D0 (base) 304651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 305651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | char a 306651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 2 | char a 307651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=16, align=16 308651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=16, nvalign=16] 309651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 310651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 311651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 312651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct D2 313651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct D1 (base) 314651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct D0 (base) 315651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 316651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | char a 317651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 2 | char a 318651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=16 319651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=16, nvalign=16] 320651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 321651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack() 322651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct JA { char a; }; 323651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 324651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct JB { __declspec(align(4)) char a; }; 325651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack() 326651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct JC : JB, JA { }; 327651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 328651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 329651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 330651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 331651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct JC 332651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct JB (base) 333651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | struct JA (base) 335651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 1 | char a 336651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=4, align=4 337651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=4, nvalign=4] 338651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 339651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 340651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 341651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct JC 342651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct JB (base) 343651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 344651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | struct JA (base) 345651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 1 | char a 346651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=4, align=4 347651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=4, nvalign=4] 348651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack() 350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct KA { char a; }; 351651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 352651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct KB : KA { __declspec(align(2)) char a; }; 353651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 354651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 355651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 356651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct KB 357651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct KA (base) 358651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | char a 359651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 2 | char a 360651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=4, align=2 361651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=3, nvalign=2] 362651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 363651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 364651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct KB 365651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct KA (base) 366651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | char a 367651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 2 | char a 368651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=4, align=2 369651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=3, nvalign=2] 370651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 371651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 372651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct L { 373651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual void fun() {} 374651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(256)) int Field; 375651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 376651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 377651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 378651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct L 379651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (L vftable pointer) 380651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 256 | int Field 381651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=512, align=256 382651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=260, nvalign=256] 383651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 384651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct L 385651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (L vftable pointer) 386651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 256 | int Field 387651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=512, align=256 388651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=260, nvalign=256] 389651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 390651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack() 391651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct MA {}; 392651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#pragma pack(1) 393651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct MB : virtual MA { 394651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __declspec(align(256)) int Field; 395651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 396651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 397651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 398651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: *** Dumping AST Record Layout 399651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | struct MB 400651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 0 | (MB vbtable pointer) 401651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 256 | int Field 402651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: 260 | struct MA (virtual base) (empty) 403651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | [sizeof=512, align=256 404651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NEXT: | nvsize=260, nvalign=256] 405651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 406651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64: *** Dumping AST Record Layout 407651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | struct MB 408651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 0 | (MB vbtable pointer) 409651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 256 | int Field 410651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: 260 | struct MA (virtual base) (empty) 411651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | [sizeof=512, align=256 412651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-X64-NEXT: | nvsize=260, nvalign=256] 413651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 4146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct RA {}; 4156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines#pragma pack(1) 4166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct __declspec(align(8)) RB0 { 4176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __declspec(align(1024)) int b : 3; 4186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 4206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct __declspec(align(8)) RB1 { 4216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __declspec(align(1024)) int b : 3; 4226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines virtual void f() {} 4236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 4256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct __declspec(align(8)) RB2 : virtual RA { 4266bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __declspec(align(1024)) int b : 3; 4276bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 4296bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct __declspec(align(8)) RB3 : virtual RA { 4306bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __declspec(align(1024)) int b : 3; 4316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines virtual void f() {} 4326bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4336bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 4346bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct RC { 4356bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines char _; 4366bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __declspec(align(1024)) int c : 3; 4376bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4386bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesstruct RE { 4396bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines char _; 4406bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines RC c; 4416bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 4426bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines#pragma pack() 4436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 4446bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4456bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RB0 44687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:0:0-2 | int b 4476bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=8, align=1024 4486bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=4, nvalign=1024] 4496bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4506bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RB1 4516bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | (RB1 vftable pointer) 45287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 1024:0-2 | int b 4536bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=1032, align=1024 4546bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=1028, nvalign=1024] 4556bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4566bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4576bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RB2 4586bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | (RB2 vbtable pointer) 45987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 1024:0-2 | int b 4606bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 1028 | struct RA (virtual base) (empty) 4616bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=1032, align=1024 4626bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=1028, nvalign=1024] 4636bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4646bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RB3 4656bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | (RB3 vftable pointer) 4666bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 1024 | (RB3 vbtable pointer) 46787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 2048:0-2 | int b 4686bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 2052 | struct RA (virtual base) (empty) 4696bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=2056, align=1024 4706bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=2052, nvalign=1024] 4716bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4726bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RC 4736bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | char _ 47487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 1024:0-2 | int c 4756bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=1028, align=1024 4766bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=1028, nvalign=1024] 4776bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: *** Dumping AST Record Layout 4786bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | struct RE 4796bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 0 | char _ 4806bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 1 | struct RC c 4816bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: 1 | char _ 48287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT: 1025:0-2 | int c 4836bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | [sizeof=1029, align=1 4846bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-NEXT: | nvsize=1029, nvalign=1] 4856bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 4866bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RB0 48787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 0:0-2 | int b 4886bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=8, align=1024 4896bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=4, nvalign=1024] 4906bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 4916bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RB1 4926bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | (RB1 vftable pointer) 49387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 1024:0-2 | int b 4946bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=1032, align=1024 4956bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=1028, nvalign=1024] 4966bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 4976bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 4986bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RB2 4996bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | (RB2 vbtable pointer) 50087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 1024:0-2 | int b 5016bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 1028 | struct RA (virtual base) (empty) 5026bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=1032, align=1024 5036bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=1028, nvalign=1024] 5046bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 5056bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RB3 5066bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | (RB3 vftable pointer) 5076bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 1024 | (RB3 vbtable pointer) 50887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 2048:0-2 | int b 5096bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 2052 | struct RA (virtual base) (empty) 5106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=2056, align=1024 5116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=2052, nvalign=1024] 5126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 5136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RC 5146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | char _ 51587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 1024:0-2 | int c 5166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=1028, align=1024 5176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=1028, nvalign=1024] 5186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64: *** Dumping AST Record Layout 5196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | struct RE 5206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 0 | char _ 5216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 1 | struct RC c 5226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: 1 | char _ 52387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT: 1025:0-2 | int c 5246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | [sizeof=1029, align=1 5256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-X64-NEXT: | nvsize=1029, nvalign=1] 5266bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 527176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct NA {}; 528176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct NB {}; 529176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(push, 1) 530176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct NC : virtual NA, virtual NB {}; 531176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(pop) 532176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct ND : NC {}; 533176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 534176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 535176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct NA (empty) 536176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=1, align=1 537176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=1] 538176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 539176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct NB (empty) 540176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=1, align=1 541176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=1] 542176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 543176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct NC 544176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | (NC vbtable pointer) 545176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 4 | struct NA (virtual base) (empty) 546176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct NB (virtual base) (empty) 547176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=1 548176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=4, nvalign=1] 549176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 550176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct ND 551176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct NC (base) 552176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | (NC vbtable pointer) 553176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 4 | struct NA (virtual base) (empty) 554176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct NB (virtual base) (empty) 555176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=4 556176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=4, nvalign=4] 557176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 558176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct NA (empty) 559176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=1, align=1 560176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=1] 561176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 562176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct NB (empty) 563176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=1, align=1 564176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=1] 565176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 566176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct NC 567176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | (NC vbtable pointer) 568176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct NA (virtual base) (empty) 569176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 12 | struct NB (virtual base) (empty) 570176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=12, align=1 571176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=1] 572176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 573176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct ND 574176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct NC (base) 575176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | (NC vbtable pointer) 576176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct NA (virtual base) (empty) 577176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 12 | struct NB (virtual base) (empty) 578176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=12, align=4 579176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=4] 580176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 581176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct OA {}; 582176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct OB {}; 583176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct OC : virtual OA, virtual OB {}; 584176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(push, 1) 585176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct OD : OC {}; 586176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(pop) 587176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 588176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 589176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct OA (empty) 590176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=1, align=1 591176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=1] 592176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 593176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct OB (empty) 594176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=1, align=1 595176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=1] 596176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 597176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct OC 598176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | (OC vbtable pointer) 599176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 4 | struct OA (virtual base) (empty) 600176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct OB (virtual base) (empty) 601176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=4 602176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=4, nvalign=4] 603176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 604176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct OD 605176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct OC (base) 606176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | (OC vbtable pointer) 607176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 4 | struct OA (virtual base) (empty) 608176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct OB (virtual base) (empty) 609176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=1 610176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=4, nvalign=1] 611176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 612176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct OA (empty) 613176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=1, align=1 614176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=1] 615176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 616176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct OB (empty) 617176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=1, align=1 618176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=1] 619176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 620176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct OC 621176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | (OC vbtable pointer) 622176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct OA (virtual base) (empty) 623176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 12 | struct OB (virtual base) (empty) 624176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=8 625176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=8] 626176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 627176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct OD 628176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct OC (base) 629176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | (OC vbtable pointer) 630176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct OA (virtual base) (empty) 631176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 12 | struct OB (virtual base) (empty) 632176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=12, align=1 633176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=1] 634176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 635176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct __declspec(align(4)) PA { 636176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines int c; 637176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 638176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 639176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef __declspec(align(8)) PA PB; 640176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 641176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(push, 1) 642176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct PC { 643176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines char a; 644176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines PB x; 645176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 646176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(pop) 647176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 648176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 649176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: 0 | struct PC 650176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | char a 651176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct PA x 652176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | int c 653176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=16, align=8 654176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=12, nvalign=8] 655176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 656176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: 0 | struct PC 657176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | char a 658176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct PA x 659176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | int c 660176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=8 661176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=12, nvalign=8] 662176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 663176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef PB PD; 664176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 665176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(push, 1) 666176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct PE { 667176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines char a; 668176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines PD x; 669176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 670176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(pop) 671176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 672176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 673176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: 0 | struct PE 674176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | char a 675176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | struct PA x 676176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 8 | int c 677176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=16, align=8 678176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=12, nvalign=8] 679176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 680176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: 0 | struct PE 681176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | char a 682176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | struct PA x 683176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 8 | int c 684176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=16, align=8 685176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=12, nvalign=8] 686176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 687176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef int __declspec(align(2)) QA; 688176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(push, 1) 689176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct QB { 690176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines char a; 691176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines QA b; 692176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 693176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(pop) 694176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 695176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 696176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct QB 697176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | char a 698176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 2 | QA b 699176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=6, align=2 700176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=6, nvalign=2] 701176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 702176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct QB 703176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | char a 704176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 2 | QA b 705176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=6, align=2 706176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=6, nvalign=2] 707176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 708176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct QC { 709176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines char a; 710176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines QA b; 711176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 712176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 713176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 714176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct QC 715176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | char a 716176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 4 | QA b 717176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=4 718176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=8, nvalign=4] 719176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 720176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct QC 721176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | char a 722176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 4 | QA b 723176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=8, align=4 724176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=4] 725176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 726176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct QD { 727176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines char a; 728176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines QA b : 3; 729176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 730176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 731176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 732176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct QD 733176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | char a 73487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-NEXT:4:0-2 | QA b 735176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=4 736176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=8, nvalign=4] 737176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 738176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct QD 739176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | char a 74087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// CHECK-X64-NEXT:4:0-2 | QA b 741176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=8, align=4 742176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=8, nvalign=4] 743176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 744176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct __declspec(align(4)) EmptyAlignedLongLongMemb { 745176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines long long FlexArrayMemb[0]; 746176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 747176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 748176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 749176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct EmptyAlignedLongLongMemb 750176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | long long [0] FlexArrayMemb 751176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=8, align=8 752176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=8] 753176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 754176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct EmptyAlignedLongLongMemb 755176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | long long [0] FlexArrayMemb 756176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=8, align=8 757176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=8] 758176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 759176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack(1) 760176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstruct __declspec(align(4)) EmptyPackedAlignedLongLongMemb { 761176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines long long FlexArrayMemb[0]; 762176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}; 763176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#pragma pack() 764176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 765176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: *** Dumping AST Record Layout 766176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | struct EmptyPackedAlignedLongLongMemb 767176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: 0 | long long [0] FlexArrayMemb 768176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | [sizeof=4, align=4 769176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-NEXT: | nvsize=0, nvalign=4] 770176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64: *** Dumping AST Record Layout 771176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | struct EmptyPackedAlignedLongLongMemb 772176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: 0 | long long [0] FlexArrayMemb 773176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | [sizeof=4, align=4 774176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK-X64-NEXT: | nvsize=0, nvalign=4] 775176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 776651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint a[ 777651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(X)+ 778651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(Y)+ 779651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(Z)+ 780651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(C1)+ 781651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(CA2)+ 782651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YA)+ 783651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YB)+ 784651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YC)+ 785651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YD)+ 786651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YE)+ 787651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YF)+ 788651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(YF)+ 789651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(D2)+ 790651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(JC)+ 791651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(KB)+ 792651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(L)+ 793651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinessizeof(MB)+ 7946bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RB0)+ 7956bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RB1)+ 7966bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RB2)+ 7976bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RB3)+ 7986bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RC)+ 7996bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinessizeof(RE)+ 800176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(ND)+ 801176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(OD)+ 802176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(PC)+ 803176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(PE)+ 804176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(QB)+ 805176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(QC)+ 806176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(QD)+ 807176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(EmptyAlignedLongLongMemb)+ 808176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinessizeof(EmptyPackedAlignedLongLongMemb)+ 809651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines0]; 810