gcc有薄lto吗?

Posted

技术标签:

【中文标题】gcc有薄lto吗?【英文标题】:Does gcc have thin lto? 【发布时间】:2020-11-22 13:10:58 【问题描述】:

Clang 允许使用瘦 lto 来加快编译时间,同时仍然保留使用带有选项 -flto=thin 的 lto 的大部分优点。 gcc 有相当于 clang 的瘦 lto 吗?

【问题讨论】:

【参考方案1】:

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 更多的内存和时间,但最近这个数字一直在提高。

【讨论】:

我使用的是 gcc 11.2,我认为它不支持 -fwhopr 确实,它已经不存在了。似乎-flto=n 应该非常相似,但并不完全确定。

以上是关于gcc有薄lto吗?的主要内容,如果未能解决你的问题,请参考以下文章

24 GCC LTO - Link Time Optimization

防止 GCC LTO 删除函数

可以跨 C 和 C++ 方法优化 gcc 或 clang 的 LTO

如何将 GCC LTO 与不同优化的目标文件一起使用?

GCC LTO 是不是执行跨文件死代码消除?

Ubuntu下多个gcc版本之间的切换