[LLVMdev] How to insert a basic block in an edge

Chayan Sarkar chayan.ju at gmail.com
Sun Jul 18 11:10:20 PDT 2010


I have tried to use SplitEdge function, but failed. Actually the third
parameter is a variable of type Pass and it need to be non-null. But I
could not figure out how to use it. Please help me out.


On Sat, Jul 17, 2010 at 10:16 PM, Nick Lewycky <nicholas at mxc.ca> wrote:
> Chayan Sarkar wrote:
>> Hi all,
>> Suppose in a CFG bb1 has two succesor bb3 and bb4, and bb3 has two
>> predecessor bb1 and bb2. Now how can I insert a basic block between
>> bb1 and bb3 that at the edge bb1-->bb3 .
>> In general how can I insert a basic block on an edge?
> Use llvm::SplitEdge in Transforms/Utils/BasicBlockUtils.h.
> The technique is to create a new bb with a single branch to bb3, then modify
> bb1's use of bb3 to point to 'new bb' instead, then fix up any phi nodes in
> bb3 by replacing uses of bb1 with 'new bb'.
> Nick

More information about the llvm-dev mailing list