1. INITIALIZE_PASS(passName, arg, name, cfg, analysis)
参数说明:
passName
:YourPassName;arg
:opt调用时所用的命行参数;name
:此pass的简要说明;cfg
:如果一个遍历CFG而不修改它,那么这个参数被设置为true;analysis
:如果一个Pass是一个分析Pass,例如dominator tree pass,那么这个参数被设置为true。
例子:
INITIALIZE_PASS(CallGraphPrinter, "dot-callgraph", "Print call graph to 'dot' file", false, false)
2. RegisterPass(const char *PassArg, const char *Name, bool CFGOnly = false, bool is_analysis = false)
上面这个是RegisterPass
的构造函数。
参数说明:
template<typename passName>
:YourPassName;PassArg
:opt调用时所用的命行参数;Name
:此pass的简要说明;CFGOnly
:如果一个遍历CFG而不修改它,那么这个参数被设置为true;is_analysis
:如果一个Pass是一个分析Pass,例如dominator tree pass,那么这个参数被设置为true。
例子:
static RegisterPass<Hello> X("hello", "Hello World Pass", false, false);
Hello
是pass name
,X
是RegisterPass<Hello>
的一个实例。