Spring 2011: Room 1042 Duncan Hall
Monday, Wednesday, Friday, 10am
This page contains both the PDF format copies of the lecture notes, and
a lecture-by-lecture bibliography for the class.
Some of the reading materials are available on the
Rice Only readings page; others will require
you to visit the ACM Digital Library
or the university's library.
Finally, you can often find papers on
Google Scholar.
Look up the paper by author or title, then check to see if it has a copy of the
actual document.
Announcements
Deutsch Schiffman paper is now on the readings page.
General Background - see a good undergraduate textbook
Wikipedia entry on Compiler Optimization
Results on inline substitution: "An experiment with
inline substitution", K.D. Cooper, M.W. Hall, and L. Torczon,
Software--Practice and Experience 21(6), June 1991.
"Improved Optimization of Fortran Object Programs,"
R.G. Scarborough and H.G. Kolsky,
IBM Journal of Research and Development, pages 660-676,
November, 1980.
DEAD algorithm: "Efficiently Computing Static Single Assignment
Form and the Control Dependence Graph", R. Cytron, J. Ferrante, B.K.
Rosen, M.N. Wegman, and F.K. Zadeck, ACM TOPLAS 13(4),
October 1991, pages 451-490.
with modification by Rob Shillner, see Section 10.2 of EaC2e
CLEAN algorithm: see Section 10.2 of EaC2e (algorithm due to
Rob Shillner)
"Register Promotion in C Programs," K.D. Cooper and J. Lu, in PLDI 97,
pages 308-319, on the readings page or in the ACM Digital Library.
"A New Algorithm for Scalar Register Promotion Based on SSA Form,"
A.V.S. Sastry and R.D.C. Ju, in PLDI 98, pages 15-25, on the readings
page or in the ACM Digital Library.
"Register Promotion by Sparse Partial Redundancy Elimination of
Loads and Stores", R. Lo, F. Chow, R. Kennedy, S.M. Liu, P. Tu,
in PLDI 98, pages 26-37, on the readings page or in the ACM Digital
Library.
"Redundancy Elimination Revisited", K. Cooper, J. Eckhardt, and
K. Kennedy, in PACT 2008, pages 12-21, in the ACM Digital Library.
"Strength Reduction", P. Markstein, V. Markstein, and F.K. Zadeck,
Chapter 9 in Optimization in Compilers, F.E. Allen, B.K.
Rosen, and F.K. Zadeck editors, unpublished book, circa 1992.
K.D. Cooper, M.W. Hall, and L. Torczon,
"An Experiment with Inline Substitution",
Software--Practice and
Experience 21(6), June 1991, pages 581-601.
J.W. Davidson and A. Holler, "A Study of a C Function Inliner,"
Software--Practice and Experience 19(1), January
1988, pages 79-97.
J.W. Davidson and A. Holler,
"Subprogram Inlining: A Study of Its Effects on Program Execution
Time", IEEE Transactions on
Software Engineering, 18(2) 1992, pages 89-102.
K. Cooper, M. Hall, L. Torczon, "Unexpected Side Effects of Inline
Substitution: A Case Study," ACM Letters on Programming
Languages and Systems (LOPLAS) 1(1).
K. Cooper, T. Harvey, and T. Waterman, "An Adaptive Strategy
for Inline Substitution", Proceedings of CC 2008
J.B. Kam and J.D. Ullman, "Global Data-flow Analysis and
Iterative Algorithms", JACM 23(1), January 1976, pages 158-171.
J.B. Kam and J.D. Ullman, "Monotone Data-flow Analysis Frameworks",
Acta Informatica, 7(3), pages 305-317, 1977.
Ken Kennedy, "A Survey of Data Flow Analysis Techniques", in
Program Flow Analysis: Theory and Applications
(N.D. Jones and S.S Muchnick, editors), Prentice-Hall, 1981.
The iterative DOM computation is described in Chapter 9
of EaC (corrected in EaC2e).
and in a Rice CS TR by Cooper, Harvey, and Kennedy.
"Efficiently Computing Static Single Assignment Form and the
Control Dependence Graph", R. Cytron, J. Ferrante, B.K. Rosen, M.N.
Wegman, and F.K. Zadeck, ACM TOPLAS 13(4), October 1991, pages
451--490.
"Practical Improvements to the Construction and Destruction of
Static Single Assignment Form", P. Briggs, K.D. Cooper, T.J. Harvey,
and L.T. Simpson, Software--Practice and Experience 28(8)
July 1998, pages 859--891.
"Practical Improvements to the Construction and Destruction of
Static Single Assignment Form", P. Briggs, K.D. Cooper, T.J. Harvey,
and L.T. Simpson, Software--Practice and Experience 28(8)
July 1998, pages 859--891.
Benoit Boissinot, Alain Darte, Benoit Dupont de Dinechin, Christophe
Guillon, and Fabrice Rastello, "Revisiting Out-of-SSA Translation for
Correctness, Code Quality, and Efficiency", CGO 2009, March 2009.
M. Wegman and F.K. Zadeck, "Constant Propagation with Conditional
Branches", ACM Transactions on Programming Languages and Systems
(TOPLAS) 13(2), pages 181-210.
ACM Digital Library
M. Wegman and F.K. Zadeck, "Constant Propagation with Conditional
Branches", ACM Transactions on Programming Languages and Systems
(TOPLAS) 13(2), pages 181-210.
C. Click and K.D. Cooper, "Combining Analyses, Combining Optimizataions,"
ACM Transactions on Programming Languages and Systems (TOPLAS),
17(2), pages 181-196.
K. Pettis and R.C. Hansen, "Profile Guided Code Positioning,"
Proceedings of the ACM SIGPLAN 1990 Conference on Programming
Language Design and Implementation (PLDI), pages 16-27.
ACM Digital Library This paper was selected as one of the best 50 papers from
the first 20 years of PLDI.
F.E. Allen and J. Cocke, "A Program Data Flow Analysis Procedure,"
Communications of the ACM, 19(3), March 1976, pages 137-147.
in the ACM Digital Library
K. Kennedy, "A Comparison of Two Algorithms for Global Data Flow
Analysis," SIAM Journal on Computing 5(1), March 1976,
pages 158-180.
K. Kennedy, "A Survey of Data Flow Analysis Techniques," in
Program Flow Analysis, N.D. Jones and S.S. Muchnick editors,
1980.
Tim Harvey presented a three lecture series on global
register allocation
J. Knoop, O. Ruthing, and B. Steffen,
"Lazy Code Motion",
Proceedings of ACM SIGPLAN '92 Conference on Programming Language
Design and Implementation (PLDI), June 1992,
ACM Digital Library
K-H. Drechsler and M.P. Stadel,
"A variation of Knoop, Ruthing, and Steffen's Lazy Code Motion",
ACM SIGPLAN Notices, 28(5), May 1993,
ACM Digital Library
B. Alpern, M.N. Wegman, and F.K. Zadeck, "Detecting Equality of
Variables in Programs," Proceedings of the 15th ACM SIGPLAN-SIGACT
Symposium on Principles of Programming Languages (POPL 88), pages 1-11.
See also L.T. Simpson's Ph.D. thesis, "Value-Driven Redundancy
Elimination,", Rice University, Department of Computer Science,
April 1996. (available from Rice's Fondren Library; search term
"Rice Theses")
Cross Jumping: Wulf et al's book on the Bliss-11 Compiler
Procedure Abstraction: C. Fraser, G. Myers, and A. Wendt,
"Analyzing and Compressing Assembly Code", PLDI 94, pages 117-121,
K.D. Cooper and N. McIntosh, "Enhanced code compression for
embedded RISC processors", PLDI 99, pages 139-149.
Superoptimizer: H. Massalin, "Superoptimizer: a look at the
smallest program", ASPLOS I (1987), pages 122-126,
S. Bansal and A. Aiken, "Automatic generation of peephole
superoptimizers", ASPLOS XII (2006), pages 394-403.
Array Linearization: See F.E. Allen and J. Cocke, "A Catalog
of Optimizing Transformations", 1972.
Constrained Scheduling: K.D. Cooper and P.J. Schielke, "Non-local
instruction scheduling with limited code growth", LCTES 98,
pages 193-207.
Activation Record Merging: T.P. Murtagh, "An improved storage
management scheme for block-structured langauges", TOPLAS 13(3),
July 1991, pages 372-398.
Generate Smaller Code: K.D. Cooper, D.S. Subramanian, and
P.J. Schielke, "Optimizing for reduced code space using genetic
algorithms", LCTES 99, pages 1-9.
S. Richardson and M. Ganapathi, "Interprocedural optimization:
Experimental Results," Software--Practice and Experience,
19, 1989.
K.D. Cooper, M.W. Hall, and L. Torczon,
"An experiment with inline substitution",
Software--Practice and Experience 21(6), June 1991.
J.P. Banning, "An Efficient Way to Find the Side Effects of
Procedure Calls and the Aliases of Variables," Proceedings of
the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming
Languages (POPL '79),
ACM Digital Library
M.W. Hall and K Kennedy, "Efficient Call Graph Analysis,",
ACM Letters on Programming Languages and Systems (LOPLAS)
1(3), Sept 1992.
ACM Digital Library
D. Callahan, K.D. Cooper, K. Kennedy, and L. Torczon, "Interprocedural
Constant Propagation," Proceedings of ACM SIGPLAN 86 Conference
on Compiler Construction, July 1986 (Also SIGPLAN Notices 21(7)).
ACM Digital Library
D. Grove and L. Torczon, "Interprocedural Constant Propagation:
A Study of Jump Function Implementation", Proceedings of the ACM
SIGPLAN 93 Conference on Programming Language Design and
Implementation (PLDI), July 1993, pages 90-99.
R. Metzger and S. Stroud, "Interprocedural Constant Propagation:
An Empirical Study", ACM Letters on Programming Languages and
Systems (LOPLAS) 2, pages 213-232.
K.D. Cooper and K. Kennedy, "Interprocedural Side-effect Analysis
in Linear Time,", Proceedings of the ACM SIGPLAN 1988
Conference on Programming Language Design and Implementation,
(PLDI), July 1988 (Also SIGPLAN Notices 23(7)).
ACM Digital Library
K.D. Cooper and K. Kennedy, "Fast Interprocedural Alias Analysis,"
Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on
Principles of Programming Languages (POPL), January 1989.
ACM Digital Library
L. Andersen, "Program Analysis and Specialization for the
C Programming Language," Ph.D. Thesis, DIKU, University of
Copenhagen, May 1994. (Google will find it)