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
Machine-dependent transformations
- Register Allocation
- Instruction Scheduling
- Software Pipelining
Loop analyses and transformations in the polyhedral framework
Primary focus on vectorization and cache locality
Reasoning about programs
- Types
- Abstract interpretation
- Introduction to program verification