blob: 852bc5d04549ca0c4866f3618c558d2a0fb16d94 [file] [log] [blame]
struct A
{
virtual void foo();
virtual void bar();
};
void A::foo() { } // keep
void A::bar() { } // loose
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();
}
// 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() { }