Clang:如何检查是否执行了 LTO

mrk*_*rks 6 llvm clang link-time-optimization

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

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

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

jbe*_*man 6

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


小智 5

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