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.