/* { dg-do run } */ /* { dg-options "-O -fipa-cp -fno-early-inlining" } */ extern "C" void abort (); struct A { virtual void foo () = 0; }; struct B : A { virtual void foo () = 0; }; struct C : A { }; struct D : C, B { int i; D () : i(0xaaaa) {} virtual void foo () { if (i != 0xaaaa) abort(); } }; static inline void bar (B &b) { b.foo (); } int main() { D d; bar (d); return 0; }