代替“;fvtable gc”;在GCC中

replacement for "fvtable-gc" in GCC

本文关键字:GCC gc fvtable 代替      更新时间:2023-10-16

GCCv4.7.1中的"fvtable gc"选项是否有替换项(GCCv3.x中支持它)?我想在链接过程中删除未使用的虚拟函数。

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

看起来这个功能太bug了,所以几年前就被删除了。我不认为有同等的替代品。

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

当从-fvtable gc中删除错误时(-force-addr导致tinfo.cc中的.vtable_entry asm无效,而GCC 3.0-pre中什么都不起作用)…

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