struct A
{
  virtual void foo();
  virtual void bar();
};

void A::foo() { }			// keep
void A::bar() { }			// lose

struct B : public A
{
  virtual void foo();
};

void B::foo() { }			// keep

void _start() __asm__("_start");	// keep

A a;					// keep
B b;
A *getme() { return &a; }		// keep

void _start()
{
  getme()->foo();
#ifdef __GNUC__
#if (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
// gcc-2.95.2 gets this test wrong, and loses B::foo().
// Cheat.  After all, we aren't trying to test the compiler here.
  b.foo();
#endif
#endif
}

// In addition, keep A's virtual table.

// We'll wind up keeping `b' and thus B's virtual table because
// `a' and `b' are both referenced from the constructor function.

extern "C" void __main() { }
