111
|
1 // { dg-do assemble }
|
|
2 extern "C" int printf(const char *, ...);
|
|
3
|
|
4 struct VB {
|
|
5 virtual void f() {
|
|
6 printf("VB\n");
|
|
7 }
|
|
8 };
|
|
9
|
|
10 class M : public virtual VB {
|
|
11 public:
|
|
12 int i;
|
|
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
|
|
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 }
|