// { dg-do assemble } extern "C" int printf(const char *, ...); struct VB { virtual void f() { printf("VB\n"); } }; class M : public virtual VB { public: int i; void f() { printf("M(%d)\n", i); } }; class lM : public M { }; class rM : public M { }; class D : public lM, rM { // { dg-error "" } ambiguous function } d; int main() { ((lM*)&d)->i = 1; ((rM*)&d)->i = 2; ((rM*)&d)->f(); ((lM*)&d)->f(); ((VB*)&d)->f(); }