A pretty printing library that was inspired by the LLVM binding by Lennart Augustsson. The library provides a monadic interface to a pretty printer, that allows functions to be defined and called, generating the corresponding LLVM assembly when run.
Currently, llvm-pretty
supports LLVM versions up through 17. As a result of
the broad version coverage, the llvm-pretty
AST is a superset of all versions
of the LLVM AST. This means that the manner in which certain information is
presented in the llvm-pretty
AST (e.g., during pretty printing) will be
different depending on the LLVM version used to originate the information.
Conversely, it is possible to construct an llvm-pretty
AST that cannot be
represented in a specific (or any) LLVM version.
llvm-pretty
strives to support a reasonable variety of LLVM language
features, but there are places where our
coverage of the LLVM language is incomplete. If you need a LLVM feature that is
not currently supported by llvm-pretty
, please file an
issue.
llvm-pretty
supports almost everything that one would want to do with LLVM
ASTs. One notable exception is parsing: llvm-pretty
deliberately does not
support parsing an LLVM module AST from a bitcode file. This functionality is
factored out into a separate
llvm-pretty-bc-parser
library. llvm-pretty-bc-parser
generally tries to stay in sync with all of
the LLVM language features that llvm-pretty
supports, but it may be the case
that some valid llvm-pretty
ASTs cannot be parsed by llvm-pretty-bc-parser
.
If you encounter an occurrence of this issue, please file an
issue at the
llvm-pretty-bc-parser
issue tracker.