Intermediate Representations |
- Trees and DAGs
- Basic blocks and control flow graphs
- Static single assignment (SSA) form
- Program dependence graph
|
Code Generation
|
- Basic ideas
- Register allocation and assignment; graph coloring
- Peephole optimization
|
Program Analysis |
- Control flow analysis: dominators and loops
- Data flow analysis (intra-procedural); formulation and
iterative solution of dataflow equations.
- Example analyses: reaching definitions,
liveness analysis, available expressions,
very busy expressions, constant propagation.
- Pointer analysis
- Array dependence analysis
- Inter-procedural analysis
|
Machine-Independent Code Optimization |
- Copy propagation
- Dead code elimination
- Common subexpression elimination
- Induction variable elimination
- Strength reduction
|
Machine-dependent
Code Optimization |
- Instruction scheduling
- Cache optimizations: profile-guided code layout
- Speculative optimizations
|
Current Topics
(as time permits) |
- Just-in-time code generation
- Dynamic code optimization
|