1 // 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)
4
5 // CHECK: Type: class B<0>
6 // CHECK: Size:40
7 // CHECK: FieldOffsets: [0, 32]
8
9 // CHECK: Type: class B<1>
10 // CHECK: Size:40
11 // CHECK: FieldOffsets: [0, 32]
12
13 template<int I>
14 class B {
15 int _b1;
16 char _b2;
17 };
18
19 // CHECK: Type: class C
20 // CHECK: Size:88
21 // CHECK: FieldOffsets: [80]
22
23 class C : B<0>, B<1> {
24 char _c;
25 };
26
27 // CHECK: Type: class D
28 // CHECK: Size:120
29 // CHECK: FieldOffsets: [32]
30
31 class D : virtual B<0>, virtual B<1> {
32 char _d;
33 };
34
35 //#pragma pack(pop)
36
use_structs()37 void use_structs() {
38 C cs[sizeof(C)];
39 D ds[sizeof(D)];
40 }
41