1 // { dg-do run  }
2 // Source: Neil Booth, from PR #111.
3 
4 class A
5 {
6 public :
7      int i;
8 };
9 
10 class B : virtual public A
11 {
12 };
13 
14 class C : virtual public A
15 {
16 };
17 
18 class D : public B, public C
19 {
20 public :
21      int f(void);
22      int g(void);
23 };
24 
f(void)25 int D::f(void)
26 {
27      return B::i;
28 }
29 
g(void)30 int D::g(void)
31 {
32      return this->B::i;
33 }
34 
35 D d;
36 extern "C" void abort (void);
37 
main(void)38 int main(void)
39 {
40     d.C::i=325;
41 
42     if (d.f() != d.B::i || d.f() != d.g())
43       abort ();
44 
45     return 0;
46 }
47