LLVM is a great platform for compiler research. It has a simple and easy to understand representation and a completely
modular system for adding passes to the compiler. LLVM also provides extensive assertions
to pinpoint bugs when they occur, an IR verifier, and tools
to automatically identify and narrow down bugs in arbitrary compiler transformations.