LLVM isn't the worlds greatest target for a dynamic language, as Rubinius and Unladen Swallow found out. It does a lot of low level optimization, but a basic prerequisite to that is being able to do some sort of optimistic type-based optimizations, and LLVM has no infrastructure for that.
It looks like HipHopVM uses tracing which is probably a better way to go.
It looks like HipHopVM uses tracing which is probably a better way to go.