[LLVMdev] LLVMdev Digest, Vol 53, Issue 72

Duncan Sands baldrick at free.fr
Sun Mar 1 23:54:00 PST 2009


Hi Shweta,

> I am currently working on a project which requires me to generate a .bc file
> for given .c file and open the .bc file to identify various functions and
> the caller callee relationship amongst them. The end goal is to generate a
> type of callgraph for all the functions present in the original C code. I am
> quite new to llvm and will really appreciate if I can be provided some
> pointers. I am looking at various llvm passes, but I am not quite sure if
> thats the way to go.

suppose cg.c contains
	void f(void);
	void g(void) { f(); }
	void h(void) { g(); }

Then you can print the callgraph like this:

$ llvm-gcc -c -emit-llvm cg.c -o - | opt -print-callgraph -disable-output
CallGraph Root is: <<null function: 0x0x2029510>>
Call graph node <<null function: 0x0x2029510>>:
  Calls function 'g'
  Calls function 'f'
  Calls function 'h'

Call graph node for function: 'g'
  Calls function 'f'

Call graph node for function: 'f'
  Calls external node

Call graph node for function: 'h'
  Calls function 'g'



More information about the llvm-dev mailing list