Summary
In this chapter, you gained enough knowledge to feel comfortable reading and writing the textual LLVM IR representation. You learned enough to dig into the full LLVM language reference specification if you ever get stuck or feel unsure about the syntax or semantics of some of the LLVM structures.
In the process, you learned the benefits of using an IR in a compiler and discovered that while LLVM IR can represent target-agnostic constructs, an actual instance of LLVM IR is likely tainted by some target-specific concepts starting with the ABI.
Finally, you were able to map the concepts and APIs learned in previous chapters to the textual IR representations. This knowledge should boost your ability to manipulate LLVM IR and further strengthen your mental model of how the IR is structured, making you a more productive compiler engineer in the long run.
The next chapter will go a little bit deeper into the LLVM infrastructure by giving you a survey of the existing passes...