[LLVMdev] Block management

Chris Lattner clattner at apple.com
Mon Jun 14 08:28:08 PDT 2010


On Jun 14, 2010, at 12:19 AM, Duncan Sands wrote:

> Hi Chris,
> 
>>> In my code generator, I need to prepare a block and add instructions to it, then insert this block in a function defined later (that is I cannot create the function at the beginning stage become some info are not available yet). I tried to create a block without any "parent" (BasicBlock::Create(getGlobalContext(), "init"), fill it, but how to link it with the created function? (i read about "moveBefore" and "moveAfter" but these methods are not usable in this context...
>> 
>> You can use Function::getBasicBlockList().  That list supports fully general list operations like "insert", so you can just plop it in wherever you'd like it.
> 
> methods like the basic block constructor or BasicBlock::setParent muck around
> with the LeakDetector.  I don't know what the LeakDetector is - does St├ęphane
> need to do something like this too?

Nope, insertion into the basic block list automatically manages all that.

-Chris



More information about the llvm-dev mailing list