[LLVMdev] CFG modifcations and code gen

Chris Lattner clattner at apple.com
Tue Oct 14 17:37:58 PDT 2008

On Oct 14, 2008, at 4:19 PM, Villmow, Micah wrote:

> After a bunch more investigate, I’ve seem to have figured out what  
> is going on here. The MachineFunction holds a vector of  
> MachineBasicBlocks and it is this vector that is traversed by the  
> MachineFunction iterator when printing out instructions. The problem  
> is occurring when a modification to the CFG moves around so that the  
> ordering of them is different. Even if the pred/succ blocks are  
> modified, their position in the MBBNumbering vector does not change.  
> This causes the CFG graph and the MachineFunction vector to become  
> out of sync causing all sorts of issues with code generation. (i.e.  
> having my return block being generated in the middle of a loop).
> I figured that sorting the vector based on the block id’s would fix  
> this issue, but the constructor required to sort correctly is marked  
> as private.
> So, my basic need is this. How do I re-order the MachineBasicBlocks  
> vector based on their Block ID numbers via the current API(2.3)?

The branch folding pass moves around blocks, please take a look at its  
implementation to see how it works,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081014/efc14b82/attachment.html>

More information about the llvm-dev mailing list