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