Overview
The IR is the middle of the decompiler and the part that does the real work.
Data Model
The two types every pass and every emitter operates on:ir_expr (an expression).
Control Flow & SSA
The analysis layer beneath the passes.
Passes
The optimization pipeline that turns raw lifted IR into something that reads like source.
Writing a Pass
Practical guide to developing a pass, the signature, the iteration model, the mutation rules, and the one invariant that keeps sixty passes from corrupting each other.
Helper Functions
The toolkit a pass is built from.
Customization
The IR is target-independent, but real targets are not identical.
Types
Lowered code has no types: a register is just bits, and add eax, ecx says nothing about whether those bits are a signed int, an unsigned count, or a pointer.