port to llvm 3.4