some llvm functions