nicolas.geoffray at lip6.fr
Wed May 20 06:51:54 PDT 2009
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