检查LLVM LTO和ThinLTO优化吗?

时间:2019-02-27 19:37:38

标签: llvm llvm-ir lld

通常,在编译器优化之后,我们会获得文本LLVM IR,以便我们可以比较优化前后的IR及其原因。在LTO中,我们通常将IR位码文件输入到链接器(lld)并获取本机目标文件。 LTO通过后,是否有任何方法可以获取单个整体式LLVM IR(文本表示形式)?除了查看目标文件的文本部分之外,还有什么有效的方法可以分析目标代码以找出优化方法。

谢谢

如果您需要更多信息,请告诉我!

1 个答案:

答案 0 :(得分:1)

LTO优化与普通编译期间应用于代码的优化大致相同。区别在于,要优化的模块来自链接程序的所有模块。

因此,您可以将所有源代码编译为LLVM IR(例如,使用-flto,然后使用llvm-link链接目标文件(实际上是位代码文件),然后运行优化opt上由此产生的位码。在lib/Transforms/IPO/PassManagerBuilder.cpp, populateLTOPassManager()中可以看到LTO阶段应用的通行证列表。还有一个不错的opt选项,称为-print-after,可以在应用给定通行证之后发出文本IR表示。