// PR c++/5607 // { dg-do run } class A { public: virtual A* getThis() { return this; } }; class B { int a; public: virtual B* getThis() { return this; } }; class AB : public A, public B { public: virtual AB* getThis() { return this; } }; int main () { AB* ab = new AB(); A* a = ab; B* b = ab; if (a->getThis() != a || b->getThis() != b) return 1; return 0; }