【发布时间】:2019-03-20 13:08:50
【问题描述】:
我做了一个小实验,看看如果我将一堆虚拟 C 源文件编译成单个 LLVM 位代码文件,Clang 是否会产生更好的代码(首先使用 -emit-llvm 编译为 .bc 文件,然后使用 @ 987654323@ 将它们压缩到一个.bc 文件中),然后编译成一个虚拟库,而不是通常编译到要链接的单个目标文件,并且它似乎能够执行一些 WPO(整个程序优化),例如内联跨不同翻译单元的功能,否则它不会这样做。我通过-flto 了解 LTO(链接时间优化),所以这更像是我的一个小实验,看看 Clang 在这种特殊情况下的行为会有多么不同。
但是,我的问题是,以这种方式构建二进制文件是否可取?最终结果与简单地使用-flto 有什么不同吗?如果是这样,无论是在过程还是最终结果方面,会有什么不同?如果不是,这只是一种更人为的调用 LTO 的方式吗?
【问题讨论】: