// { dg-do run } | |
// Source: Neil Booth, from PR #111. | |
class A | |
{ | |
public : | |
int i; | |
}; | |
class B : virtual public A | |
{ | |
}; | |
class C : virtual public A | |
{ | |
}; | |
class D : public B, public C | |
{ | |
public : | |
int f(void); | |
int g(void); | |
}; | |
int D::f(void) | |
{ | |
return B::i; | |
} | |
int D::g(void) | |
{ | |
return this->B::i; | |
} | |
D d; | |
extern "C" void abort (void); | |
int main(void) | |
{ | |
d.C::i=325; | |
if (d.f() != d.B::i || d.f() != d.g()) | |
abort (); | |
return 0; | |
} |