[LLVMdev] How to create forward reference to BasicBlock?
devang.patel at gmail.com
Wed Jan 13 14:54:39 PST 2010
On Wed, Jan 13, 2010 at 2:27 PM, James Williams <junk at giantblob.com> wrote:
> Can anyone tell me if there's a straighforward way to create a new
> BasicBlock without inserting it into a function's basic block list? I want
> to do this so I can create a forward reference to a block that's position in
> the function is not yet known.
> I've tried:
> Function function
> Builder builder;
> bb = BasicBlock::Create(function,...)
> add other blocks to function and build instructions in those blocks
> but I get an assert failure from push_back:
> t1: SymbolTableListTraitsImpl.h:68: void
> ItemParentClass>::addNodeToList(ValueSubClass*) [with ValueSubClass =
> llvm::BasicBlock, ItemParentClass = llvm::Function]: Assertion
> `V->getParent() == 0 && "Value already in a container!!"' failed.
> Should I expect this to work? Can a BasicBlock only exist within a
> Function's basic block list? Is there a better way to create a forward
> reference for branch instructions to IR code that is not yet generated?
You can create BasicBlock without inserting it into a Function. Parent
is an optional parameter for BasicBlock constructor. See
More information about the llvm-dev