如何编写内联llvm传递

时间:2012-03-19 18:44:56

标签: optimization inline llvm

我想写一个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);

1 个答案:

答案 0 :(得分:1)

要使用getAnalysis(),您必须先覆盖getAnalysisUsage(),大概是为您设置必要的分析数据。

  

getAnalysisUsage - 应该通过传递覆盖此函数   需要分析信息来完成他们的工作。如果传递指定它   对此函数使用特定的分析结果,然后可以使用   getAnalysis()函数,在下面。