[LLVMdev] Optimization feasibility

Joachim Durchholz jo at durchholz.org
Mon Dec 24 13:43:59 PST 2007


Hi all,

I'm in a very preliminary phase of a language project which requires 
some specific optimizations to be reasonably efficient.

LLVM already looks very good; I'd just like to know whether I can push 
these optimizations through LLVM to the JIT phase (which, as far as I 
understand the docs, is a pretty powerful part of LLVM).

The optimizations that I need to get to work are:

* Tail call elimination.
* Constant evaluation. To implement this, the JIT phase would have to
   evaluate the constant and somehow store it so that future runs don't
   need to reevaluate it.
* Dead code elimination, enabled by constant evaluation.
* Monomorphisation, i.e. constant evaluation may establish that some
   data structures aren't polymorphic, so it would be worth generating
   code that keeps integers in registers instead of generating boxed
   representations on the heap. Again, constant evaluation can enable
   this optimization.

I'll be happy to know the answer for each optimization, whether it's 
"yes", "not yet", or a flat "no".
The answers probably won't affect whether I use LLVM. They will, 
however, tell me how much work I can shove off to LLVM ;-)

Regards,
Jo



More information about the llvm-dev mailing list