There are two kinds of intermediate representation (IR) in compiler design, briefly introduced here: graphical (e.g. abstract syntax tree) and linear (e.g. LLVM IR). What are the pros and cons of the two?
I noticed Clang implemented both, but it seems only the linear representation (LLVM IR) is used in the LLVM backend.