COMP 512: Advanced Compiler Construction

Professor Keith D. Cooper
Department of Computer Science
Rice University
Houston, Texas, USA
Spring 2009: Room 105, Keck Hall, Monday, Wednesday, Friday, 10am


This page contains both the PDF format copies of the lecture notes, and a lecture-by-lecture bibliography for the class. Some of the reading materials are available on the Rice Only readings page; others will require you to visit the ACM Digital Library or the university's library.

Finally, you can often find papers on Google Scholar. Look up the paper by author or title, then check to see if it has a copy of the actual document.

Lecture Notes

  1. Introduction to Optimization
    • General Background - see a good undergraduate textbook
    • Wikipedia entry on Compiler Optimization
    • Results on inline substitution: "An experiment with inline substitution", K.D. Cooper, M.W. Hall, and L. Torczon, Software--Practice and Experience 21(6), June 1991.

  2. Experience Paper: The Fortran H Compiler
  3. Terminology, Principles, and Concerns
  4. Terminology, Principles, and Concerns, Part II, with examples over extended basic blocks
  5. Terminology, Principles, and Concerns, Part III, examples of regional analysis and transformation
  6. Terminology, Principles, and Concerns, Part IV, examples of global analysis and transformation
  7. Optimizing at the Interprocedural Scope: Inline Substitution as an example
  8. Order from Chaos, a taxonomy of compiler-based code improvement transformations
  9. Data-flow Analysis in More Depth
  10. Proliferation of Data-flow Problems
  11. Information Chains, an antidote to the proliferation of data-flow analysis problems
  12. Static Single Assignment Form <-- Correction to dominance frontier algorithm!
  13. Static Single Assignment Form -- Part II
  14. Two sets of lecture notes:
            Static Single Assignment Form -- Part III: Out-of-SSA Translation and Dead Code Elimination
            Clean: Eliminating Useless Control Flow
  15. Replication & Consolidation, a return to optimization, after our detour through analysis
  16. Loop Invariant Code Motion, Part I
  17. Lazy Code Motion
  18. Code Motion of Control Structures in High-Level Languages
  19. Algebraic Reassociation of Expressions
  20. Operator Strength Reduction on SSA Form      <-- Takes two class periods
  21. The IBM PL.8 Compiler (experience paper)
  22. Optimization of Range Checking
  23. Efficient Implementation of Smalltalk-80 on a Commodity Microprocessor
  24. Sparse Constant Propagation and Sparse Conditional Constant Propagation
  25. Optimizing for Reduced Code Space
  26. Adaptive Compilation      <-- Two lectures
  27. Peephole Optimization and other Post-Compilation Techniques
  28. Combining Local Scheduling and Local Register Allocation
  29. Tim lectured on register allocation for four classes.

  30. Interprocedural Analysis and Optimization <--- Two lectures

This site is maintained by Keith D. Cooper.
He is a terrible e-mail correspondent.