// { dg-do run } // { dg-options "-w" } extern "C" void abort (); struct B; B* b; struct A { virtual void f () {} }; struct B : virtual public A { B () { b = this; ((A*) this)->f (); } virtual void f () { if (this != b) abort (); } }; struct C : public B { }; struct D : public C, public B { virtual void f () {} }; int main () { D d; }