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

Hon*_*hen 15 c++ llvm llvm-ir llvm-c++-api

现在我们按照本教程实现llvm的分析传递.并需要将一个额外的参数传递给插件,如下所示:

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Oak*_*Oak 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"));
Run Code Online (Sandbox Code Playgroud)

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

举个例子,看一下内置循环展开传递 - 它定义了两个无符号和两个布尔选项,就在源文件的顶部,使用cl::opt<unsigned>cl::opt<bool>.