Introduction
to course
Getting
started: A simple one-pass compiler
Stack Machines: SaM
SaM jar file
SaM examples
Required reading: Parsing
Recursive-descent parsing and code
generation
Grammar Flow Graph and
Earley parser
Paper: A Graphical Model for Context-free
Grammar Parsing by Bilardi et al. (CC 2015)
Back-end optimizations
Intermediate Representations
Control-flow graphs
Solving fixpoint equations
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
Points-to analysis
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
Lectures 1
and 2
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
Vectorization:
Lectures 1
and 2
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
Student presentations