CS 640 - Advanced Compilers
      Fall 2009 Schedule

      Important Dates:

      • Take-home Midterm: given out (electronically) Oct 21 (no class that night), due Oct 28 at classtime
      • No class Nov. 25
      • Final Exam due: Dec. 16 at classtime, will be handed out last day of class.
      Date Topics Slides Reading
      Sep 2 Introduction word
      pdf
      Dragon - Ch. 1.1, 1.2, 1.4, Ch. 2
      EAC - Ch. 1 - Ch. 7
      Sep 9 Control Flow Analysis word SSA Paper Section 2, Section 4 (don't worry about the proofs)
      Dragon - Ch. 8.4, 9.6
      EAC - p.415-417, p.439-441, 9.3.2 (p.457-463)
      Sep 16, 23 Redundant Expression Elimination word Dragon: 6.1, 9.1.4, 9.2.6
      EAC: 8.3, 8.5, 8.6
      Sept 23, 30 Iterative Dataflow Analysis
      word
      Dragon - Ch. 9.2 - 9.4
      EAC - Ch. 9.1 - 9.2
      Oct 7 Static Single Assignment
      word
      SSA paper - Section 1,3,5 in particular
      Dragon - Ch. 6.2.4
      EAC - Ch. 9.3
      Oct 14 Scalar Optimization word Dragon - Ch. 9.1
      EAC - Ch. 10 Some Examples
      Oct 28
      Register Allocation
      word Dragon - Ch. 8.6, 8.8
      EAC - Ch. 13
      Nov 4 Instruction Selection word EAC - Ch. 10
      Nov 11 Instruction Scheduling word Dragon - Ch. 10.2, 10.3, 10.5
      EAC - Ch. 12
      Nov 18, Dec. 2 Dependence Modelling
      Loop Transformations
      part1 in word ,
      part2 in word
      Loops paper, PDG paper
      Dragon 11.1 - 11.3
      Dec 9 Inter-procedural Analysis word Dragon - Ch. 12.1, 12.2, 12.4,.12.5
      EAC - Ch. 9.4.2

      Texts:

      • Dragon = Aho, Lam, Sethi, Ullman. Compiler: Principles, Techniques & Tool, 2007
      • EAC = Cooper, Torczon. Engineering a Compiler, 2004.
      Papers:
      • SSA Paper -- R. Cytron, J. Ferrante, B. Rosen, M. Wegman. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph, ACM Transactions on Programming Languages and Systems, Vol. 13, No. 4, October 1991, pp. 451-490.
      • PDG paper -- Ferrante, J., Ottenstein, K, and Warren, J. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3), 1987, pp. 310-349.
      • Loops paper -- D. Padua, M. Wolfe. Advanced Compiler Optimizations for SuperComputers. Communications of the ACM, 29,12, Dec. 1986, pp. 1184 -1201.
      Other papers: (in case you are interested):
      • SDG Susan Horwitz, Thomas Reps, David Binkley, Interprocedural Slicing using dependence graphs, ACM Transactions on Programming Languages and Systems, 12,pp 26-60, 1990.
      • Chaitin Chaitin, "Register Allocation and Spilling via Graph Coloring", SIGPLAN Symposium on Compiler Construction, June 1982
      • Briggs Briggs, Cooper, & Torczon, "Improvements to Graph Coloring Register Allocation," ACM Transactions on Programmign Languages and Systems 16(3), May, 1994.