To eliminate dead code I use GCC's compiler options -fdata-sections -ffunction-sections
and linker option -Wl,--gc-sections
. It's work fine except the case of unused methods of virtual classes.
For example,
class A {
public:
virtual void f();
};
class B: public A {
public:
void unused();
};
class C {
public:
void unused();
};
GCC keep B::unused()
, but remove C::unused()
.
How to force GCC remove unused methods of virtual classes?
UPD. I've googled -fvtable-gc
option, but it doesn't work.