The Low Level Virtual Machine project (LLVM, \cite{LLVM}, \cite{Lattner:MSThesis02})
is a framework for compiler construction. It provides its own intermediate
representation, the LLVM IR. This is a simple language that can be used to
-expres any program in a static single assignment (SSA) form that is easy to
-reason with and transform.
+express any program in a static single assignment (SSA) form that is easy to
+reason with and apply transformations to.
Additionally, LLVM provides a host of libraries to work with this IR. There is
code for: