// { dg-do compile }

// Contributed by Nathan Sidwell 23 Oct 2003 <nathan@codesourcery.com>
// Origin: grigory@stl.sarov.ru
// PR c++/12700 ICE with covariancy

struct c2 { int i; };

struct c1 {
  virtual c2& f8() {}
};

struct c3 : c1, c2 {
  virtual c2& f8() {}
};

struct c11 : public c1 {
  virtual c3& f8() {}
};

struct c15 : virtual c3 {
  virtual c2& f8() {}
};

struct c18 : virtual c11 {
  virtual c15& f8();
};

c15& c18::f8() { throw 0; }
