// PR c++/50243
// { dg-do compile }
// { dg-options "-O" }
// { dg-add-options bind_pic_locally }
// { dg-final { scan-assembler-not "_ZTV.A" } }

void foo ();

struct A
{
  ~A () { }
  virtual void a () = 0;
  virtual void b () = 0;
  virtual void c () = 0;
};

struct B : public A
{
  ~B () { foo (); }
  void a () { foo (); }
  void b () { foo (); }
  void c () { delete this; }
};

void
test ()
{
  A *y = new B ();
  y->a ();
  y->b ();
  y->c ();
}
