edwinb/Idris-dev — pull request #363 by Ralith (2013-06-27 18:55:15+00:00)
Title: LLVM target

This implements --target llvm, which generates IR mapping closely to idris' internal Simplified representation. Performance on [one benchmark](https://github.com/Ralith/quasigroup-completion) is more than doubled compared to the C backend. This will provide a good platform for exploring unboxing and escape analysis for further performance improvement.

All tests except for test018 (which uses LFork) pass on Linux. The LLVM bindings fail at runtime on mingw, and there appear to be ABI issues on OSX. Floating point primitives are not implemented as I intend to submit another pull request modifying their representation soon.

This adds a buildtime dependency on `llvm-general>=3.3.0.3 && <3.4`, and on version 3.3 (the current stable release) of LLVM itself, and currently requires that `llc` be in PATH for the target to be used, though this will eventually be lifted, enabling Idris to generate object files entirely in-process.