This has actually come up in the context of a JIT, but I think that having the functionality in general could be useful.
Currently, there does not appear to be an API in LLVM to query for LLVM version information. In the particular context where this came up, LLVM is used as a shared library and various functionality (and bug fixes) used by the JIT is available in various LLVM versions. So it would be quite convenient to be able to dynamically determine the version that happens to be loaded.
Honestly, I am not completely clear on what the best place for something like this would be, but it appears that the following seems like a natural choice:
llvm::VersionPrinter in lib/Support/CommandLine.cpp already queries this data so it might make sense for it to expose the following API’s (as part of VersionPrinter, accessed through the instance):