[LLVMdev] Basic Block Chaining

Vikram Adve vadve at cs.uiuc.edu
Thu Nov 20 07:54:01 PST 2003


This seems hard to use safely.  First, it implies that the last 
inserted BB will be at the end of the list.  Second, and more serious, 
it has very different behavior if the last BB does or  does not have a 
terminator, which does not seem to be a desirable thing (this could be 
fixed by making this function illegal, i.e., asserting out, if the last 
BB does have a terminator).

--Vikram
http://www.cs.uiuc.edu/~vadve
http://llvm.cs.uiuc.edu/

On Nov 20, 2003, at 2:39 AM, Reid Spencer wrote:

> Newbie Question .. (sorry if its redundant/silly) ..
>
> As I've started to develop Stacker, I  had assumed that simply adding 
> BasicBlocks to a function in sequence would imply that there is an 
> implicit unconditional branch from the end of one basic block to the 
> start of the next block. Based on the assertion checks that I get when 
> I tried this, I assume that it is required to place a terminating 
> instruction at the end of every basic block even if that should simply 
> be a branch to the start of the next block. Is this indeed the case?
>
> If it is, it would be "user friendly" to simply supply the branch 
> instruction.  That is, provide a method on Function that appends a 
> BasicBlock to the end of the block list. If the existing final basic 
> block doesn't have a terminating instruction, simply add one that 
> points to the block being appended.  Is this the RightThing(tm) or are 
> there good reasons this can't or shouldn't be done? 
>
> The method I'm thinking of is something like:
>
>
> Function::chainBasicBlock( BasicBlock* bb )
> {
>     BasicBlock& previous = this->back();
>     TerminatorInst* terminator = previous.getTerminator();
>     if ( ! terminator )
>     {
>         BranchInst* branch = new BranchInst(bb);
>         previous.push_back( branch );
>     }
>     BranchList.push_back( bb );
> }
>
> Reid
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 1837 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20031120/bade0f49/attachment.bin>


More information about the llvm-dev mailing list