// { dg-do run } // Make sure we can initialize complex (MI ambiguous) vtables. extern "C" int printf(const char *, ...); struct a { virtual void f() = 0; }; struct b { virtual void g() { } }; struct c: public a, public b { virtual void f(); virtual void g(); }; void c::f() { printf("c::f()\n"); } void c::g() { printf("c::g()\n"); } struct e: public b { }; struct h { }; struct d: public c, public e, public h { virtual void f(); virtual void g(); }; void d::f() { printf("d::f()\n"); } void d::g() { printf("d::g()\n"); } int main(int argc, char* argv[]) { a* tmp = new d; tmp->f(); return 0; }