Syllabus
This syllabus is only indicative. Our aim is to cover topics in the mid and back-end of a compiler.
Machine-independent analyses and transformations
- intermediate representations
- value numbering
- data flow analysis using the monotone framework
- available expressions
- liveness
- def-use
- dead code elimination (DCE)
- constant/copy propagation
- common subexpression elimination (CSE)
- partial redundancy elimination (PRE)
- reasoning in the monotone framework
- interprocedural analyses
- alias and points-to
- dominator analysis, control dependence graphs
- SSA representation
Reasoning about programs
- Types
- Abstract interpretation
- Symbolic execution
- Introduction to program verification
Machine-dependent transformations
- Register Allocation
- Instruction Scheduling
- Software Pipelining
Loop analyses and transformations
Primary focus on vectorization, cache locality, and use in ML compilers like Triton