// { dg-do run  }
// GROUPS vtable
extern "C" int printf (const char *, ...);

class A
{
public:
  virtual ~A(){}
  virtual int type(void)
  {
    return -1;
  }
};

class B
{
public:
  virtual ~B(){}
};


class C0 : public B, public A
{
public:
  virtual int type(void)
  {
    return 0;
  }
};

class C1 : public C0
{
public:
  virtual int type(void)
  {
    return 1;
  }
};

class C2 : public C0
{
public:
  virtual int type(void)
  {
    return 2;
  }
};

int main()
{
  C1 *one = new C1;
  
  if (one->type() == 1)
    {
      printf ("PASS\n");
      return 0;
    }
  else
    {
      printf ("FAIL\n");
      return 1;
    }
}
