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
Control-flow graphs
Live variables and
copy propagation
Dataflow
analysis frameworks
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
Using SSA for
optimization
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
Abstract Interpretation: "All
the world is an abstract interpretation" by David Schmidt.
Vectorization:
tutorial by
Professor David Padua, UIUC
Analysis and transformation of dense array
programs:
Loop transformations, dependence
analysis, solving Diophantine equations
Dependence abstractions
Code
generation using Fourier-Motzkin elimination
Unimodular transformations
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.