标签: optimization llvm
我最近一直在探索LLVM优化,但有一个小问题:
我们怎么知道可以在功能级别(使用FunctionPassManager)或模块级别等应用内置传递(不是我们编写的LLVM传递)?
FunctionPassManager
示例 - 如KaleidoScope教程4中所示:
TheFPM->add(createCFGSimplificationPass());
这个很明显,它应该在功能级别,但其他传递呢?它们是否都适合在任何级别(BasicBlock,Function,Module等)正常工作?
答案 0 :(得分:1)
我认为你可以通过查看源代码找到它。 例如,here是SimplifyCFGPass的代码,它继承了FunctionPass,而here是MemoryDependencyAnalysisPass的源代码,你可以看到它是一个函数级传递。