[LLVMdev] llvm-java

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed May 20 06:51:54 PDT 2009

Hi Fernando,

Thanks for the very clear explanation.

Fernando Magno Quintao Pereira wrote:
> simulation: it does not add instructions to LLVM IR. Instead, it builds an 
> interval representation for each variable. Each interval represents a 
> variable in SSI form, and will be associated to one or more constraints, 
> like v > 10, or v > a.length. A query will have to find the variable, 
> O(1), and then its interval, O(ln #intervals).
> transformation: it replaces a variable with new variables that have the 
> SSI property. In this case, it must add copies and new phi-functions into 
> LLVM IR. Queries are now O(1): just find the variable and recover the 
> constraints. The downside is that it increases the program size.

OK. Is it possible to do SSI Transformation --> Array Bounds 
Optimization --> SSI undo Transformation? Or would that render useless 
the speed gained with O(1) queries?

I think the LLVM philosophy is to favor O(1) queries, and the SSI is 
probably not increasing the program size that much. Besides, if we can 
undo, that's the approach I'd recommend.


More information about the llvm-dev mailing list