1 // { dg-do run } 2 extern "C" int printf (const char*, ...); 3 4 struct A 5 { fA6 virtual void f () { 7 printf ("%x\n", this); 8 } 9 }; 10 11 struct B : public A 12 { 13 }; 14 15 struct C : public A 16 { 17 }; 18 19 struct D : virtual public B, public C 20 { 21 }; 22 main()23int main () 24 { 25 D d; 26 27 A* a1 = (A*) (B*) &d; 28 A* a2 = (A*) (C*) &d; 29 30 a1->f (); 31 a2->f (); 32 } 33