Introduction to course (1
lecture)
   Getting started: A simple one-pass
compiler
(2 lectures)
   Stack Machines: SaM
   Required reading: Parsing
   Recursive-descent parsing
and code generation
   Back-end optimizations
   Intermediate Representations (1
lecture)
   Control-flow graphs
   Solving
fixpoint equations (1 lecture)
   Introduction to
the Galois framework (1 lecture)
   Distributed Graph-Word2Vec
(1 lecture)
   Live variables and copy
propagation (2 lectures)
   Dataflow
analysis frameworks
   Notes on
dataflow
  
Partial
redundancy elimination
   Lazy code motion (slides
from Cooper and Torczon, Rice University)
        Papers: Lazy
Code Motion by Jens Knoop et al (PLDI 1992)
                     Drechsler and Stadl's version
of Lazy Code Motion (SIGPLAN , May 1993)
   Strength Reduction
         Paper: Operator
strength reduction by Cooper et al (TOPLAS September 2001)
   Dominators,control
dependence,SSA (1 lecture)
         Papers:  The Program Dependence Graph and
its Use in Optimization by Ferrante et al 
                       Efficiently
computing the SSA form and control dependence by Ferrante et al (TOPLAS 1991)
                       Algorithms for Computing the
SSA Form by Bilardi et al (JACM, May 2003)
   
   Register
allocation (1 lecture)
   Points-to analysis (1 lecture)
         Papers: The ant and the grasshopper:
fast and accurate pointer analysis for millions of lines of code 
                       
by Hardekopf and Lin (PLDI 2007)   (efficient Andersen-style
analysis)
                      
Flow-sensitive pointer
analysis for millions of lines of code by Hardekopf and Lin (CGO 2011)
                        
(uses flow-insensitive analysis as a pre-processing step)
                        
 
Loop transformations (4 lectures)
  Cache models for locality analysis
  Auto-tuning for cache performance: ATLAS
        Papers: A
comparison of empirical and model-driven optimization
                              
Yotov et al, PLDI 2003
  Dependence analysis of affine
loops
         Papers:  The Omega test: a fast and practical integer
programming algorithm for dependence analysis
                                
Bill Pugh, CACM August 1992
                       
Access normalization: loop restructuring for NUMA
computers
                                
Wei Li and Keshav Pingali, ACM Transactions on Computer Systems (TOCS), 1993.
                       
A data locality optimizing algorithm
                               
Michael Wolf and Monica Lam, PLDI 1991. 
  Vectorization: slides from
David Padua's tutorial
  Unimodular loop
transformations
  Fractal Symbolic Analysis
          Paper: Fractal Symbolic Analysis
Programming
models for parallelism
 
   The operator formulation of algorithms
         Papers:  The TAO of parallelism in algorithms
                                 
Pingali et al. PLDI 2011