Mari
Mari

Reputation: 83

how to write an inline llvm pass

I want to write an llvm pass in order to make inline optimization therefore I call the method getAnalysis() but I have Segmentation fault.. Why? this is the code I am using:

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);

Upvotes: 0

Views: 746

Answers (1)

Joachim Isaksson
Joachim Isaksson

Reputation: 181077

To use getAnalysis(), you must first override getAnalysisUsage(), presumably to have the necessary analysis data set up for you.

getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. If a pass specifies that it uses a particular analysis result to this function, it can then use the getAnalysis() function, below.

Upvotes: 1

Related Questions