如何在GCC中删除未使用的虚拟类方法?

时间:2014-03-03 14:16:43

标签: gcc compiler-optimization

为了消除死代码,我使用GCC的编译器选项-fdata-sections -ffunction-sections和链接器选项-Wl,--gc-sections。除了虚拟类的未使用方法的情况外,它的工作正常。

例如,

class A {
public:
    virtual void f();
};

class B: public A {
public:
    void unused();
};

class C {
public:
    void unused();
};

GCC保留B::unused(),但删除C::unused()

如何强制GCC删除未使用的虚拟类方法?

UPD。我用Google搜索-fvtable-gc选项,但它不起作用。

1 个答案:

答案 0 :(得分:0)

您无法删除类的虚方法,因为您永远不知道何时可以通过派生类对象的指针调用