blob: 03255f2f6ebfcf519ca57590d3f83fccba7b9f78 [file] [log] [blame]
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +00001// RUN: %clang_cc1 -triple i686-windows-msvc -w -fdump-record-layouts-simple -foverride-record-layout=%S/Inputs/override-layout-packed-base.layout %s | FileCheck %s
2
3//#pragma pack(push, 1)
Aleksandr Urakov09240ef2018-07-31 08:27:06 +00004
5// CHECK: Type: class B<0>
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +00006// CHECK: Size:40
Aleksandr Urakov09240ef2018-07-31 08:27:06 +00007// CHECK: FieldOffsets: [0, 32]
8
9// CHECK: Type: class B<1>
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +000010// CHECK: Size:40
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000011// CHECK: FieldOffsets: [0, 32]
12
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000013template<int I>
14class B {
15 int _b1;
16 char _b2;
17};
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000018
19// CHECK: Type: class C
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +000020// CHECK: Size:88
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000021// CHECK: FieldOffsets: [80]
22
23class C : B<0>, B<1> {
24 char _c;
25};
26
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +000027// CHECK: Type: class D
28// CHECK: Size:120
29// CHECK: FieldOffsets: [32]
30
31class D : virtual B<0>, virtual B<1> {
32 char _d;
33};
34
35//#pragma pack(pop)
36
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000037void use_structs() {
38 C cs[sizeof(C)];
Aleksandr Urakov5c3d8fe2018-10-23 08:23:22 +000039 D ds[sizeof(D)];
Aleksandr Urakov09240ef2018-07-31 08:27:06 +000040}