Lecture
Slides
Introduction to course
Getting started: A simple one-pass compiler
(3 lectures)
Stack Machines: SaM
Parsing
Recursive-descent
parsing and code generation
Back-end optimizations
Solving fixpoint
equations
Scalar
optimizations
Intermediate Representations
Control-flow graphs
Live variables and
copy propagation
Dataflow
analysis frameworks
Notes on dataflow
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 Notices, May
1993)
Strength
Reduction
Paper: Operator
strength reduction by Cooper et al (TOPLAS September 2001)
Dominators,control
dependence,SSA
Papers: The Program
Dependence Graph and its Use in Optimization by Ferrante et al
(TOPLAS July 1987)
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
Loop transformations
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