How does LLVM support functions?