4

GCCv4.7.1 中的“fvtable-gc”选项是否有任何替代品(在 GCCv3.x 中受支持)?我想在链接过程中删除未使用的虚拟功能。

fvtable-gc 为 vtable 和虚函数引用发出特殊的重定位,以便链接器可以识别未使用的虚函数并将引用它们的 vtable 插槽清零。这对 -ffunction-sections 和 -Wl,--gc-sections 最有用,以便同时丢弃函数本身。

4

1 回答 1

1

看起来这个功能太有问题了,所以它在几年前就被删除了。我认为没有等效的替代品。

虽然我还没有找到官方声明,但fvtable-gc至少在 GCC 3.x 系列中,有几条评论被破坏了,也许更早。例如(来源:cris.h;自称是 GCC 的一部分)

...当从 -fvtable-gc 中删除错误时(-fforce-addr 导致 tinfo.cc 中的 .vtable_entry asm 无效,并且在 GCC 3.0-pre 中根本没有任何作用)...

多年后的今天,编译器应该更加先进。也许 GCC 的整个程序优化器足够聪明,可以检测和消除未使用的虚函数,但我不确定。

于 2014-01-29T02:49:44.573 回答