added some ugly LLVM code generation