Initial version based on LLVM 3.2