4

对于 gcc,这个答案告诉我们如何验证是否执行了链接时间优化。对于 clang,我看不到任何类似于.gnu.lto.

更具体地说,我有一个二进制文件,我很确定 LTO 应该有很大的好处,但我什么也没看到。我想知道 cmake 是否真的做正确的事。

有没有办法通过查看二进制文件或 *.o 文件来判断 clang 是否执行了 LTO?

4

2 回答 2

3

一种选择是尝试llvm-dis在您的一个 .o 文件上运行。如果实际执行了 LTO,则 .o 文件包含 llvm 位码,llvm-dis并将生成包含人类可读 llvm ir 的 .ll 文件。否则会产生错误信息“error: Invalid bitcode signature”。

于 2018-06-29T14:06:27.200 回答
2

file实用程序将报告该文件是“LLVM IR 位码”。LLVM/clang 的 LTO 工具不会产生“胖”目标文件,它只是 IR。

于 2019-03-08T03:36:59.083 回答