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)
          
             Dataflow
            analysis
  
          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
            Dependence
            analysis and transformations 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. 
        Auto-tuning
              for cache performance: ATLAS
                    Papers: A
              comparison of empirical and model-driven optimization
                                          
Yotov
            et al, PLDI 2003
        
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