type checker for llvm ir