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

时间:2018-06-26 17:21:17

标签: clang llvm link-time-optimization

对于gcc,此answer告诉我们如何验证链接时间优化是否已执行。对于clang,我看不到任何类似于.gnu.lto的条目。

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

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

2 个答案:

答案 0 :(得分:1)

一种选择是尝试在您的.o文件之一上运行<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>。如果实际执行了LTO,则.o文件包含llvm位代码,而llvm-dis将生成包含人类可读的llvm ir的.ll文件。否则,它将产生错误消息“错误:无效的位码签名”。

答案 1 :(得分:0)

onCreateEvent(title: string, start: any) { this.events = [...this.events, {title: title, start: start}] } 实用程序将报告该文件为“ LLVM IR位码”。 LLVM / clang的LTO工具不会产生“胖”对象文件,而只是IR。