2010/1/13 Devang Patel <span dir="ltr"><<a href="mailto:devang.patel@gmail.com">devang.patel@gmail.com</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5">On Wed, Jan 13, 2010 at 2:27 PM, James Williams <<a href="mailto:junk@giantblob.com">junk@giantblob.com</a>> wrote:<br>
> Hi,<br>
><br>
> Can anyone tell me if there's a straighforward way to create a new<br>
> BasicBlock without inserting it into a function's basic block list? I want<br>
> to do this so I can create a forward reference to a block that's position in<br>
> the function is not yet known.<br>
><br>
> I've tried:<br>
><br>
> Function function<br>
> Builder builder;<br>
><br>
> bb = BasicBlock::Create(function,...)<br>
> bb.eraseFromParent()<br>
><br>
> ...<br>
> add other blocks to function and build instructions in those blocks<br>
> ...<br>
><br>
> function.getBasicBlockList.push_back(bb)<br>
><br>
><br>
> but I get an assert failure from push_back:<br>
><br>
> t1: SymbolTableListTraitsImpl.h:68: void<br>
> llvm::SymbolTableListTraits<ValueSubClass,<br>
> ItemParentClass>::addNodeToList(ValueSubClass*) [with ValueSubClass =<br>
> llvm::BasicBlock, ItemParentClass = llvm::Function]: Assertion<br>
> `V->getParent() == 0 && "Value already in a container!!"' failed.<br>
><br>
> Should I expect this to work? Can a BasicBlock only exist within a<br>
> Function's basic block list? Is there a better way to create a forward<br>
> reference for branch instructions to IR code that is not yet generated?<br>
<br>
</div></div>You can create BasicBlock without inserting it into a Function. Parent<br>
is an optional parameter for BasicBlock constructor. See<br>
include/llvm/BasicBlock.h<br></blockquote><div>Thanks.<br><br>-- James <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
-<br>
<font color="#888888">Devang<br>
<br>
</font></blockquote></div><br>