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