我想写一个llvm传递以进行内联优化,因此我调用方法getAnalysis()但我有Segmentation fault ..为什么?这是我正在使用的代码:
using namespace llvm;
namespace {
struct MyInline : public ModulePass {
static char ID;
MyInline2() : ModulePass(ID) {}
virtual bool runOnModule(Module &M) {
errs() << "Hello2: ";
CallGraph &CG = getAnalysis<CallGraph>();
return false;
}
};
}
char MyInline::ID = 0;
static RegisterPass<MyInline> X("MyInline", "MyInline Pass", false, false);
答案 0 :(得分:1)
要使用getAnalysis()
,您必须先覆盖getAnalysisUsage()
,大概是为您设置必要的分析数据。
getAnalysisUsage - 应该通过传递覆盖此函数 需要分析信息来完成他们的工作。如果传递指定它 对此函数使用特定的分析结果,然后可以使用 getAnalysis()函数,在下面。