我最近一直在探索LLVM优化,但有一个小问题:
我们如何知道可以在功能级别(使用FunctionPassManager
(或模块级别等上应用内置通行证(不是我们编写的LLVM通行证(?
示例 - 如万花筒教程4:
所示TheFPM->add(createCFGSimplificationPass());
这个相当明显的是它应该处于功能级别,但是其他通过呢?它们是否要正确地在任何级别上工作(基本块,功能,模块等(?
我认为您可以通过查看源代码来找到它。例如,这是Simplefifycfgpass的代码,该代码继承了functionpass,这是内存依赖性的源代码,如您所见,它是函数级别通过。