1*99451b44SJordan Rupprecht #include <cstdint> 2*99451b44SJordan Rupprecht 3*99451b44SJordan Rupprecht class Base { 4*99451b44SJordan Rupprecht int32_t a; 5*99451b44SJordan Rupprecht }; 6*99451b44SJordan Rupprecht class Class1 : Base { 7*99451b44SJordan Rupprecht public: 8*99451b44SJordan Rupprecht int32_t b; 9*99451b44SJordan Rupprecht }; 10*99451b44SJordan Rupprecht 11*99451b44SJordan Rupprecht class EmptyBase { 12*99451b44SJordan Rupprecht }; 13*99451b44SJordan Rupprecht class Class2 : EmptyBase { 14*99451b44SJordan Rupprecht public: 15*99451b44SJordan Rupprecht int32_t b; 16*99451b44SJordan Rupprecht }; 17*99451b44SJordan Rupprecht main(int argc,char ** argv)18*99451b44SJordan Rupprechtint main(int argc, char **argv) { 19*99451b44SJordan Rupprecht Class1 c1; 20*99451b44SJordan Rupprecht Class2 c2; 21*99451b44SJordan Rupprecht //% self.expect("expr offsetof(Base, a)", substrs=["= 0"]) 22*99451b44SJordan Rupprecht //% self.expect("expr offsetof(Class1, b)", substrs=["= 4"]) 23*99451b44SJordan Rupprecht //% self.expect("expr offsetof(Class2, b)", substrs=["= 0"]) 24*99451b44SJordan Rupprecht return c1.b + c2.b; 25*99451b44SJordan Rupprecht } 26