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 Weberint 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 Weberint main(int argc, char **argv) { 46*c9c55cf8SNico Weber 47*c9c55cf8SNico Weber return 0; 48*c9c55cf8SNico Weber } 49