1 // { dg-do assemble  }
2 extern "C" int printf(const char *, ...);
3 
4 struct VB {
fVB5   virtual void f() {
6     printf("VB\n");
7   }
8 };
9 
10 class M : public virtual VB {
11 public:
12   int i;
f()13   void f() {
14     printf("M(%d)\n", i);
15   }
16 };
17 
18 class lM : public M {
19 };
20 
21 class rM : public M {
22 };
23 
24 class D : public lM, rM { // { dg-error "" } ambiguous function
25 } d;
26 
main()27 int main() {
28   ((lM*)&d)->i = 1;
29   ((rM*)&d)->i = 2;
30   ((rM*)&d)->f();
31   ((lM*)&d)->f();
32   ((VB*)&d)->f();
33 }
34