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