// { 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;
}
