【问题标题】:replacement for "fvtable-gc" in GCC替换 GCC 中的“fvtable-gc”
【发布时间】:2013-07-01 00:28:54
【问题描述】:
GCCv4.7.1 中的“fvtable-gc”选项是否有任何替代品(GCCv3.x 支持)?我想在联动过程中移除未使用的虚函数。
fvtable-gc
为虚表和虚函数引用发出特殊的重定位,以便链接器可以识别未使用的虚函数并将引用它们的虚表槽清零。这对 -ffunction-sections 和 -Wl,--gc-sections 最有用,以便同时丢弃函数本身。
【问题讨论】:
标签:
c++
optimization
gcc
virtual-functions
vtable
【解决方案1】:
看起来这个功能太有问题了,所以几年前就被删除了。我认为没有等效的替代品。
虽然我还没有找到官方的说法,但至少在 GCC 3.x 系列中,有几个 cmets fvtable-gc 被破坏了,可能更早。例如(source: cris.h; claiming to be part of GCC):
...当从 -fvtable-gc 中删除错误时(-fforce-addr 导致 tinfo.cc 中的 .vtable_entry asm 无效,并且在 GCC 3.0-pre 中根本没有任何作用)...
多年后的今天,编译器应该更加先进。也许 GCC 的整个程序优化器足够聪明,可以检测和消除未使用的虚函数,但我不确定。