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