是否可以在llvm中为用户定义的传递添加参数

时间:2012-11-29 13:33:57

标签: c++ llvm llvm-c++-api llvm-ir

现在我们正在this tutorial之后为 llvm 实施分析通道。并需要将另一个参数传递给插件,如下所示:

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc

但是我没有找到任何手册告诉我该怎么做。所以我想知道这是否有可能在实践中。

提前致谢。

1 个答案:

答案 0 :(得分:12)

您应该使用内置LLVM的CommandLine库。基本上,你只需要放在传递的.cpp文件的顶部:

#include "llvm/Support/CommandLine.h"

static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));

但我建议您查看上面的链接,它有完整的参考+方便的快速入门部分。

举个例子,看一下内置的loop unrolling pass - 它使用cl::opt<unsigned>和{{1}在源文件的顶部定义了两个无符号和两个布尔选项。 }}