LLVM is too low-level for doing meaningful optimisations. For example, memory access optimisations often require alias analysis which is expensive and has to be very conservative. In Haskell we can take advantage of immutability and type knowledge. LLVM's optimiser is also rather slow for a JIT. Lambdachine uses a custom bytecode to enable better and quicker optimisations.

Lambdachine is currently designed for lazy functional languages. It's possible to extend that to other languages, but that's way off into the future.