2017-06-01 58 views
0

我一直在探索LLVM优化最近,但有一个小问题:LLVM优化传递需要使用什么级别?

我们怎么知道,一个内置的通过(不LLVM通行证,我们写的),可以在功能层面(使用FunctionPassManager)应用,或模块级别等?

示例 - 如万花筒教程4中可以看出:

TheFPM->add(createCFGSimplificationPass()); 

这一个是相当明显的,它应该是在函数级别但对于其他的通行证?他们是否都准备好在任何级别(BasicBlock,Function,Module等)正确工作?

+0

我会建议你让你的问题标题更具体,否则它太宽泛。 –

+0

感谢您的建议,我现在改变了它。 – mal

回答

1

我想你可以通过查看源代码找到。 例如,here是SimplifyCFGPass的代码,它继承了FunctionPass,here是MemoryDe​​pendencyAnalysisPass的源代码,正如您所看到的,它是一个函数级别传递。

+0

当我获得超过15的声望后,我会满意答复。非常感谢,这很有帮助。 – mal