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