[LLVMdev] CFG Manipulation is LLVM
Rohith Goparaju
rgoparaj at umail.iu.edu
Fri Mar 26 19:22:16 PDT 2010
Hi Duncan,
Does llvm have any specific methods to build dependenece graphs ?
Thanks,
Rohith.
On Fri, Mar 26, 2010 at 4:50 AM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Rohith,
>
>
> I'm actually working on building a dependence graph . I'm not able
>> to find the methods which llvm uses to build the CFG. Is it possible to
>> use the same functions do build a dependence graph ( i Know the CFG
>> nodes are basicblocks where as dependence graph nodes will be variables)?.
>>
>
> LLVM does not have explicit methods to build the CFG because it is created
> automatically when you build the IR. For example, each basic block must
> finish with a "terminator" instruction (branch, return, invoke, etc). Each
> terminator instruction specifies which other basic blocks control can
> reach.
> Thus to find the successor nodes of a basic block, you look at the last
> instruction of the basic block, and see where it says control flows to.
> There are of course helper methods that do this for you. Predecessors are
> also automatically set up.
>
> Similarly, the list of uses of "variables" (aka instructions) is maintained
> automatically.
>
> Ciao,
>
> Duncan.
>
> PS: Please reply to the list rather than me personally. I've CC'd the
> list.
>
>
>> Thanks,
>> Rohith.
>>
>> On Thu, Mar 18, 2010 at 4:55 PM, Rohith Goparaju <rgoparaj at umail.iu.edu
>> <mailto:rgoparaj at umail.iu.edu>> wrote:
>>
>> Thanks Duncan...That was helpful.
>>
>>
>> On Thu, Mar 18, 2010 at 4:54 AM, Duncan Sands <baldrick at free.fr
>> <mailto:baldrick at free.fr>> wrote:
>>
>> Hi Rohith,
>>
>> > Is there any API within llvm that provides methods to
>> access the CFG
>> > and do some manipulations on the CFG.
>>
>> the CFG is built into the LLVM IR: given a basic block (i.e. a
>> node of the
>> CFG) you can iterate over its successors and predecessors using
>> the methods
>> in include/llvm/Support/CFG.h. To modify the CFG you have to
>> modify the
>> basic blocks, usually by changing the basic block terminator.
>>
>> 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
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100326/62dad05c/attachment.html>
More information about the llvm-dev
mailing list