xref: /llvm-project/llvm/test/tools/llvm-pdbutil/Inputs/ComplexPaddingTest.cpp (revision c9c55cf89b0d4ddd4b778da8ecf59fe740283bec)
1*c9c55cf8SNico Weber // Compile with "cl /c /Zi /GR- ComplexPaddingTest.cpp"
2*c9c55cf8SNico Weber // Link with "link ComplexPaddingTest.obj /debug /nodefaultlib /entry:main"
3*c9c55cf8SNico Weber 
4*c9c55cf8SNico Weber #include <stdint.h>
5*c9c55cf8SNico Weber 
6*c9c55cf8SNico Weber extern "C" using at_exit_handler = void();
7*c9c55cf8SNico Weber 
atexit(at_exit_handler handler)8*c9c55cf8SNico Weber int atexit(at_exit_handler handler) { return 0; }
9*c9c55cf8SNico Weber 
10*c9c55cf8SNico Weber struct TestVB {
operator deleteTestVB11*c9c55cf8SNico Weber   static void operator delete(void *ptr, size_t sz) {}
~TestVBTestVB12*c9c55cf8SNico Weber   virtual ~TestVB() {}
IntroFunction1TestVB13*c9c55cf8SNico Weber   virtual void IntroFunction1() {}
14*c9c55cf8SNico Weber   int X;
15*c9c55cf8SNico Weber } A;
16*c9c55cf8SNico Weber 
17*c9c55cf8SNico Weber struct TestNVB {
operator deleteTestNVB18*c9c55cf8SNico Weber   static void operator delete(void *ptr, size_t sz) {}
~TestNVBTestNVB19*c9c55cf8SNico Weber   virtual ~TestNVB() {}
IntroFunction2TestNVB20*c9c55cf8SNico Weber   virtual void IntroFunction2() {}
21*c9c55cf8SNico Weber   int Y;
22*c9c55cf8SNico Weber } B;
23*c9c55cf8SNico Weber 
24*c9c55cf8SNico Weber struct TestVBLayout
25*c9c55cf8SNico Weber     : public virtual TestVB,
26*c9c55cf8SNico Weber       public TestNVB {
operator deleteTestVBLayout27*c9c55cf8SNico Weber   static void operator delete(void *ptr, size_t sz) {}
28*c9c55cf8SNico Weber   int Z;
29*c9c55cf8SNico Weber } C;
30*c9c55cf8SNico Weber 
31*c9c55cf8SNico Weber struct TestIVBBase : public virtual TestVB {
32*c9c55cf8SNico Weber   int A;
33*c9c55cf8SNico Weber } D;
34*c9c55cf8SNico Weber 
35*c9c55cf8SNico Weber struct TestIVBDerived : public TestIVBBase {
36*c9c55cf8SNico Weber   int B;
37*c9c55cf8SNico Weber } E;
38*c9c55cf8SNico Weber 
39*c9c55cf8SNico Weber struct TestIVBMergedDerived
40*c9c55cf8SNico Weber     : public virtual TestVB,
41*c9c55cf8SNico Weber       public TestIVBBase {
42*c9c55cf8SNico Weber   int B;
43*c9c55cf8SNico Weber } F;
44*c9c55cf8SNico Weber 
main(int argc,char ** argv)45*c9c55cf8SNico Weber int main(int argc, char **argv) {
46*c9c55cf8SNico Weber 
47*c9c55cf8SNico Weber   return 0;
48*c9c55cf8SNico Weber }
49