[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