1 // { dg-do run } 2 // { dg-options "-w" } 3 4 extern "C" void abort (); 5 6 struct B; 7 8 B* b; 9 10 struct A { fA11 virtual void f () {} 12 }; 13 14 struct B : virtual public A { BB15 B () { 16 b = this; 17 ((A*) this)->f (); 18 } 19 fB20 virtual void f () { 21 if (this != b) 22 abort (); 23 } 24 }; 25 26 struct C : public B { 27 }; 28 29 struct D : public C, public B { fD30 virtual void f () {} 31 }; 32 main()33int main () { 34 D d; 35 } 36 37