// { dg-do run  }
// Bug: g++ doesn't compensate for finding a virtual function in a
// non-primary vtable when generating PMFs.
// Submitted by Jason Merrill <jason@cygnus.com>

struct A {
  virtual ~A() {}
};

struct B {
  virtual void f () = 0;
};

struct C : public A, public B {
  void f ();
};

void (C::* B_f)() = &B::f;	// this works
void (C::* C_f)() = &C::f;	// this breaks

C* p;

void C::f ()
{
  p = this;
}

int main()
{
  C c;

  (c.*B_f)();
  if (p != &c)
    return 1;

  (c.*C_f)();
  if (p != &c)
    return 1;
}
