通常,在编译器优化之后,我们得到文本LLVM IR,以便我们可以在优化和推理之前和之后比较IR。在LTO中,我们通常将IR bitcode文件输入到链接器(lld)并获取本机对象文件。在LTO通过后,有没有办法获得单一的单片LLVM IR(文本表示)?是否有任何有效的方法来分析目标代码,以找出优化,而不仅仅是看到目标文件的文本部分。
谢谢
如果您需要更多信息,请告诉我!
LTO优化或多或少与在正常编译期间应用于代码的优化相同。不同之处在于,优化模块来自链接程序的所有模块。
因此,您可以将所有源代码编译为LLVM IR(例如使用-flto
),然后使用llvm-link
链接目标文件(实际上是bitcode文件),然后在此生成的bitcode上运行opt
优化。在LTO阶段应用的通行证列表可以在lib/Transforms/IPO/PassManagerBuilder.cpp, populateLTOPassManager()
中看到。还有一个很好的opt
选项叫做-print-after
,在应用给定的传球后发出文本的IR表示。