Clang:如何检查是否执行了 LTO
Clang: How to check if LTO was performed
对于 gcc,此 answer 告诉我们如何验证是否执行了 Link-时间优化。对于 clang,我看不到任何类似于 .gnu.lto
.
的条目
更具体地说,我有一个二进制文件,我很确定 LTO 应该有很大的好处,但我什么也没看到。我想知道 cmake 是否真的做了正确的事情。
有什么方法可以通过查看二进制文件或 *.o 文件来判断 clang 是否执行了 LTO?
一个选项是尝试 运行 llvm-dis
您的一个 .o 文件。如果实际执行了 LTO,.o 文件包含 llvm 位码,llvm-dis
将生成包含人类可读的 llvm ir 的 .ll 文件。否则会产生错误信息 "error: Invalid bitcode signature".
file
实用程序将报告文件为 "LLVM IR bitcode"。 LLVM/clang 的 LTO 设施不生成 "fat" 目标文件,它只是 IR。
对于 gcc,此 answer 告诉我们如何验证是否执行了 Link-时间优化。对于 clang,我看不到任何类似于 .gnu.lto
.
更具体地说,我有一个二进制文件,我很确定 LTO 应该有很大的好处,但我什么也没看到。我想知道 cmake 是否真的做了正确的事情。
有什么方法可以通过查看二进制文件或 *.o 文件来判断 clang 是否执行了 LTO?
一个选项是尝试 运行 llvm-dis
您的一个 .o 文件。如果实际执行了 LTO,.o 文件包含 llvm 位码,llvm-dis
将生成包含人类可读的 llvm ir 的 .ll 文件。否则会产生错误信息 "error: Invalid bitcode signature".
file
实用程序将报告文件为 "LLVM IR bitcode"。 LLVM/clang 的 LTO 设施不生成 "fat" 目标文件,它只是 IR。