// { dg-do run } extern "C" int printf (const char*, ...); struct A { virtual void f () { printf ("%x\n", this); } }; struct B : public A { }; struct C : public A { }; struct D : virtual public B, public C { }; int main () { D d; A* a1 = (A*) (B*) &d; A* a2 = (A*) (C*) &d; a1->f (); a2->f (); }