[LLVMdev] Problem of use CallGraph

Jianfei Hu hujianfei258 at gmail.com
Fri Aug 17 01:23:04 PDT 2012


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";
				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?



More information about the llvm-dev mailing list