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()23 int 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