xref: /llvm-project/llvm/test/tools/llvm-pdbutil/Inputs/ClassLayoutTest.cpp (revision c9c55cf89b0d4ddd4b778da8ecf59fe740283bec)
1*c9c55cf8SNico Weber // Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp"
2*c9c55cf8SNico Weber // Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main"
3*c9c55cf8SNico Weber 
4*c9c55cf8SNico Weber namespace MembersTest {
5*c9c55cf8SNico Weber   class A {
6*c9c55cf8SNico Weber   public:
7*c9c55cf8SNico Weber     typedef int NestedTypedef;
8*c9c55cf8SNico Weber     enum NestedEnum {
9*c9c55cf8SNico Weber       NestedEnumValue1
10*c9c55cf8SNico Weber     };
11*c9c55cf8SNico Weber 
MemberFunc()12*c9c55cf8SNico Weber     void MemberFunc() {}
13*c9c55cf8SNico Weber 
14*c9c55cf8SNico Weber   private:
15*c9c55cf8SNico Weber     int IntMemberVar;
16*c9c55cf8SNico Weber     double DoubleMemberVar;
17*c9c55cf8SNico Weber   };
18*c9c55cf8SNico Weber }
19*c9c55cf8SNico Weber 
20*c9c55cf8SNico Weber namespace GlobalsTest {
21*c9c55cf8SNico Weber   int IntVar;
22*c9c55cf8SNico Weber   double DoubleVar;
23*c9c55cf8SNico Weber 
24*c9c55cf8SNico Weber   typedef int Typedef;
25*c9c55cf8SNico Weber   enum Enum {
26*c9c55cf8SNico Weber     Val1
27*c9c55cf8SNico Weber   } EnumVar;
28*c9c55cf8SNico Weber   Typedef TypedefVar;
29*c9c55cf8SNico Weber }
30*c9c55cf8SNico Weber 
31*c9c55cf8SNico Weber namespace BaseClassTest {
32*c9c55cf8SNico Weber   class A {};
33*c9c55cf8SNico Weber   class B : public virtual A {};
34*c9c55cf8SNico Weber   class C : public virtual A {};
35*c9c55cf8SNico Weber   class D : protected B, private C {};
36*c9c55cf8SNico Weber }
37*c9c55cf8SNico Weber 
38*c9c55cf8SNico Weber namespace UdtKindTest {
39*c9c55cf8SNico Weber   struct A {};
40*c9c55cf8SNico Weber   class B {};
41*c9c55cf8SNico Weber   union C {};
42*c9c55cf8SNico Weber }
43*c9c55cf8SNico Weber 
44*c9c55cf8SNico Weber namespace BitFieldTest {
45*c9c55cf8SNico Weber   struct A {
46*c9c55cf8SNico Weber     int Bits1 : 1;
47*c9c55cf8SNico Weber     int Bits2 : 2;
48*c9c55cf8SNico Weber     int Bits3 : 3;
49*c9c55cf8SNico Weber     int Bits4 : 4;
50*c9c55cf8SNico Weber     int Bits22 : 22;
51*c9c55cf8SNico Weber     int Offset0x04;
52*c9c55cf8SNico Weber   };
53*c9c55cf8SNico Weber };
54*c9c55cf8SNico Weber 
main(int argc,char ** argv)55*c9c55cf8SNico Weber int main(int argc, char **argv) {
56*c9c55cf8SNico Weber   MembersTest::A v1;
57*c9c55cf8SNico Weber   v1.MemberFunc();
58*c9c55cf8SNico Weber   BaseClassTest::D v2;
59*c9c55cf8SNico Weber   UdtKindTest::A v3;
60*c9c55cf8SNico Weber   UdtKindTest::B v4;
61*c9c55cf8SNico Weber   UdtKindTest::C v5;
62*c9c55cf8SNico Weber   BitFieldTest::A v7;
63*c9c55cf8SNico Weber   return 0;
64*c9c55cf8SNico Weber }
65