I think I need some guidance in understanding this project. The typical LLVM-base compiler 'stack' looks like this:<p><pre><code> [Front-end] -> [LLVM AST] -> [Back-end]
</code></pre>
Where the front end compiles your language of choice to LLVM's AST format, and a back-end translates AST to machine code. All the really awesome code optimization stuff happens at the AST level before the back-end gets involved.<p>So is ErLLVM a back-end that emits Erlang (such that any front-end language can be translated to Erlang)? Or is it an LLVM <i>front-end</i> that compiles Erlang to LLVM AST? An in the latter case, if LLVM already targets ARM, why does ErLLVM need to do work related to ARM?