[LLVMdev] CallGraph

Duncan Sands baldrick at free.fr
Fri Apr 26 04:24:35 PDT 2013


Hi,

On 26/04/13 13:17, Alexandru Ionut Diaconescu wrote:
> Thanks for the response.
> I looked and I cannot see what exactly I need. I saw getCalledFunction() so I
> need CallSite CS(cast<Value>(II)) where II is a basic block iterator, so an
> instruction. It seems not easier than the "unelegant" version....if I am still
> at the Instruction level...

the call graph gives you a graph where the nodes are functions, and there is an
edge from function F to function G if function F calls function G.

>
> I need a method that takes from a "leaf" basic block from a function (Maybe
> there is the possibility not to have only one "end" basic block) the connection
> with an entry basic block of another function.

Most functions don't end in a call to another function, they end by returning
control to the function that called them.

Ciao, Duncan.

>
> Thank you !
>
>
>
> On Fri, Apr 26, 2013 at 1:04 PM, Duncan Sands <baldrick at free.fr
> <mailto:baldrick at free.fr>> wrote:
>
>     Hi,
>
>
>     On 26/04/13 11:19, Alexandru Ionut Diaconescu wrote:
>
>         Hello,
>
>         I try to make a big CFG (control flow graph) by combining all the CFG-s
>         from all
>         the functions of a module. I still have one problem : I want to get the
>         links
>         between functions.
>
>         For CFG-s, I used CallGraphNode->second->__getFunction, then
>         Function_iterators
>         and succ_iterators, so I have all the links between BBs. Now, the
>         questions is
>         how do I link BBs from different functions?
>
>         I can do it in a way not so elegant. Take the last BB of every function,
>         then
>         getTerminator and see that function it is called and then link to
>         (instruction-2-instruction).
>
>
>     calls don't have to be terminators, so that wouldn't work properly anyway.
>
>
>
>         There must be there a better way to get the linkage between BBs that are in
>         different functions.
>
>
>     Sure, take a look at include/llvm/Analysis/__CallGraph.h
>
>     Ciao, Duncan.
>     _________________________________________________
>     LLVM Developers mailing list
>     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
>     http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev
>     <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
>
>
>
>
> --
> Best regards,
> Alexandru Ionut Diaconescu




More information about the llvm-dev mailing list