added LLVMBuilder to help generate llvmir that doesn't mess up the optimizing passes