Clang Project

clang_source_code/test/CodeGenCXX/override-layout-packed-base.cpp
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
13template<int I>
14class B {
15  int _b1;
16  char _b2;
17};
18
19// CHECK: Type: class C
20// CHECK:   Size:88
21// CHECK:   FieldOffsets: [80]
22
23class C : B<0>, B<1> {
24  char _c;
25};
26
27// 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
37void use_structs() {
38  C cs[sizeof(C)];
39  D ds[sizeof(D)];
40}
41