Date: Sun, 12 May 2002 17:12:53 -0500 (CDT)
From: Chris Lattner <sabre@nondot.org>
To: "Vikram S. Adve" <vadve@cs.uiuc.edu>
Subject: LLVM change

There is a fairly fundemental change that I would like to make to the LLVM 
infrastructure, but I'd like to know if you see any drawbacks that I 
don't...

Basically right now at the basic block level, each basic block contains an 
instruction list (returned by getInstList()) that is a ValueHolder of 
instructions.  To iterate over instructions, we must actually iterate over 
the instlist, and access the instructions through the instlist.

To add or remove an instruction from a basic block, we need to get an 
iterator to an instruction, which, given just an Instruction*, requires a 
linear search of the basic block the instruction is contained in... just 
to insert an instruction before another instruction, or to delete an 
instruction!  This complicates algorithms that should be very simple (like 
simple constant propagation), because they aren't actually sparse anymore,
they have to traverse basic blocks to remove constant propogated 
instructions.

Additionally, adding or removing instructions to a basic block 
_invalidates all iterators_ pointing into that block, which is really 
irritating.

To fix these problems (and others), I would like to make the ordering of
the instructions be represented with a doubly linked list in the
instructions themselves, instead of an external data structure.  This is 
how many other representations do it, and frankly I can't remember why I 
originally implemented it the way I did.

Long term, all of the code that depends on the nasty features in the 
instruction list (which can be found by grep'ing for getInstList()) will 
be changed to do nice local transformations.  In the short term, I'll 
change the representation, but preserve the interface (including 
getInstList()) so that all of the code doesn't have to change.

Iteration over the instructions in a basic block remains the simple:
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) ...

But we will also support:
for (Instruction *I = BB->front(); I; I = I->getNext()) ...

After converting instructions over, I'll convert basic blocks and 
functions to have a similar interface.

The only negative aspect of this change that I see is that it increases 
the amount of memory consumed by one pointer per instruction.  Given the 
benefits, I think this is a very reasonable tradeoff. 

What do you think?

-Chris
