clang插件ASTConsumer

时间:2012-04-09 19:15:32

标签: plugins llvm clang

嘿我试图生成给定的.c或.cpp文件的调用图。我写了一个clang插件来生成调用图。我写了以下函数。

class CGASTActionConsumer:public ASTConsumer{
  CallGraph *CG;
    public:
        CGASTActionConsumer(CallGraph *inCG):CG(inCG){}
      virtual bool HandleTopLevelDecl(DeclGroupDef DG)
       {
         for(DeclGroupRef::iterator i=begin(),e=end();i!=e;++i)
          {
            if(FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
              {
                if(/* check function is valid for insertion to graph   */)
                  CG->addToCallGraph(FD,FD->isGlobal()); // add node in call graph
              }
          }
       }

}; 

当我尝试从外部HandleTopLevelDecl函数打印图形时,它不会打印任何东西。但是当我从HandleTopLevelDecl函数的print函数调用时,它将打印每个节点的输出。谁能告诉我为什么会这样? thnks。

0 个答案:

没有答案