[LLVMdev] Problem of use CallGraph

Hongbin Zheng etherzhhb at gmail.com
Fri Aug 17 01:36:03 PDT 2012


On Fri, Aug 17, 2012 at 4:23 PM, Jianfei Hu <hujianfei258 at gmail.com> wrote:
> Hello,
>        I want to  traverse CallGraph
>
> code segment:
>
>
>                 virtual void getAnalysisUsage(AnalysisUsage &AU) const
>                 {
>                         AU.addRequired<CallGraph>();
>                 }
>
>                 virtual bool runOnModule(Module &F)
>                 {
>                         CallGraph &g = getAnalysis<CallGraph>();
>                         for ( CallGraph::iterator i = g.begin(); i != g.end(); i++)
>                         {
>                                 errs()<<"-----------------\n";
You may try something like this:
                                   if (CallGraphNode *CGN = i->second)
                                      ... CGN->getFunction()->getName() ...
>                                 errs()<<i->second->getFunction()->getName()<<"\n";
>                         }
>                         return false;
>                 }
>
> Compile:
> g++ -fPIC -shared `llvm-config --cxxflags` -o MPIAnalysis.so MPIAnalysis.cpp,
>
> when I use following command to run:
> opt -load ./MPIAnalysis.so  -hello < main
> it shows the error:
>
> -----------------
> 0  opt 0x085cddc8
> Stack dump:
> 0.      Program arguments: opt -load ./MPIAnalysis.so -hello
> 1.      Running pass 'Hello World Pass' on module '<stdin>'.
> Segmentation Error
>
> I found similar Problem in
> http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-July/033133.html
> But all function are defined in single binary IR file 'main', none of
> them are external.
>
> Why could not print the name of CallGraphNode's function name?
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list