gcc 有薄 lto 吗?

Does gcc have thin lto?

Clang 允许使用精简的 lto 来加快编译时间,同时仍保留使用带选项 -flto=thin 的 lto 的大部分优点。 gcc 是否有 clang 的 thin lto 的等价物?

GCC 有一个相当于 Thin LTO 的东西:WHOle Program optimizer (WHOPR)

WHOPR 是 GCC LTO 功能的扩展。您可以使用 -fwhopr(添加到标准 LTO 选项)启用它。

  • 标准 LTO 是完全单体的(就像 clang 中的标准 LTO)
  • WHOPR 是一个两级 LTO(类似于 clang Thin LTO)

两个阶段是

  • WPA:做一些全局优化和分区 IR 的串行部分
  • LTRANS:并行后端在每个分区中进行优化

现在,在实践中,GCC WHOPR 需要比 Clang Thin LTO 多得多的内存和时间,但最近这个数字一直在改善。