Spring 2009: Room 105, Keck 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.
"Improved Optimization of Fortran Object Programs,"
R.G. Scarborough and H.G. Kolsky,
IBM Journal of Research and Development, pages 660-676,
November, 1980.
Original algorithm was described in Cocke and Schwartz's famous
unpublished work, "Programming Languages and Their Compilers".
"Value Numbering," P. Briggs, K.D. Cooper, and L.T. Simpson,
Software--Practice and Experience, 27(6), June 1997
"Global Common Subexpression Elimination", J. Cocke,
Proceedings of a Symposium on Compiler Construction,
SIGPLAN Notices 5(7), pages 20-24, July 1970.
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.
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,
(to appear in LNCS)
Order from Chaos, a taxonomy of compiler-based
code improvement transformations
See Chapter 10 of Engineering a Compiler
See the draft survey paper by Cooper, McKinley, and Torczon
on the
readings page
J.B. Kam and J.D. Ullman, "Global Data-flow Analysis and
Iterative Algorithms", JACM 23(1), January 1976, pages 158-171.
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 dominator computation is described in Section 9.3.2
of Engineering a Compiler and in the technical report by Cooper,
Harvey, and Kennedy on the readings page.
See Chapter 9 of Engineering a Compiler, along with the papers
listed for lecture 9.
Information Chains, an antidote to the
proliferation of data-flow analysis problems
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.
See Chapter 9 of Engineering a Compiler, along with the papers
listed for lecture 9.
"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.
Superblock construction:
Wen-Mei W. Hwu, Scott A. Mahlke, William Y. Chen, Pohua P. Chang,
Nancy J. Warter, Roger A Bringmann, Ronald G. Ouellette,
Richard E. Hank, John G. Holm, and Daniel M. Lavery,
"The Superblock: An Effective Technique for VLIW and
Superscalar Compilation",
Journal of Supercomputing -- Special Issue on Instruction
Level Parallelism, 7(1), pages 229-248, May 1993.
Procedure cloning: K.D. Cooper, M.W. Hall, and K. Kennedy, "A
Methodology for Procedure Cloning", Computer Languages, 19(2),
April 1993, pages 105-118.
Procedure abstraction:
C.W. Fraser, E. Myers, A.L. Wendt,
"Analyzing and Compressing Assembly Code",
Proceedings of the 1984 SIGPLAN Symposium on Compiler
Construction.
K.D. Cooper and N. McIntosh,
"Enhanced Code Compression for Embedded RISC Processors",
Proceedings of the ACM SIGPLAN '99 Conference on
Programming Language Design and Implementation (PLDI).
Jens Knoop, Oliver Ruthing, and Bernhard Steffen,
"Lazy Code Motion",
Proceedings of ACM SIGPLAN '92 Conference on Programming Language
Design and Implementation (PLDI), June 1992,
ACM Digital Library
Karl-Heinz Drechsler and Manfred P. Stadel,
"A variation of Knoop, Ruthing, and Steffen's Lazy Code Motion",
ACM SIGPLAN Notices, 28(5), May 1993,
ACM Digital Library
Ron Cytron, Andy Lowry, and Kenneth Zadeck,
"Code Motion of Control Structures in High-Level Languages,"
Lowry, and Zadeck on the readings page, or in the
ACM Digital Library.
J. Cocke and P. Markstein, "Measurement of Program Improvement
Algorithms," Information Processing 80, Proceedings of the IFIP
Congress 1980, Tokyo, Japan, October 1980. (North-Holland/IFIP)
M. Auslander and M. Hopkins, "An Overview of the PL.8 Compiler",
Proceedings of the ACM SIGPLAN 1982 Symposium on Compiler
Construction, June 1982,
ACM Digital Library
V. Markstein, J. Cocke, and P. Markstein, "Optimization of Range
Checking," Proceedings of the 1982 ACM SIPLGN Conference on Compiler
Construction, SIGPLAN Notices, pages 114-119.
ACM Digital Library
R. Gupta, "Optimizing Array Bound Checks Using Flow Analysis,"
ACM Letters on Programming Languages and Systems (LOPLAS),
2(1-4), pages 135-150.
ACM Digital Library
L.P Deutsch and A.M Schiffman, "Efficient Implementation of the
Smalltalk-80 System," ACM Symposium on Principles of Programming
Languages (POPL), 1984.
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.
ACM Digital Library
C. Click and K.D. Coper, "Combining Analyses, Combining Optimizations,"
ACM Transactions on Programming Languages and Systems
(TOPLAS) 17(2), pages 181-196.
ACM Digital
Library
W.M. McKeeman, "Peephole Optimization", Communications of the
ACM, 8(7), July 1965, pages 443-444.
ACM Digital Library
J.W. Davidson and C.W. Fraser, "Automatic Generation of Peephole
Optimizers", Proceedings of the 1984 ACM SIGPLAN Symposium on
Compiler Construction, pages 111-116. Also SIGPLAN Notices 19(6),
June 1984.
ACM Digital Library PLDI Best 50 Paper
J.W. Davidson and C.W. Fraser, "The Design and Applicaiton of a
Retargetable Peephole Optimizer", ACM Transactions on Programming
Languages and Systems (TOPLAS), 2(2), April 1980, pages 191-202.
ACM Digital
Library
P.B. Gibbons and S.S. Muchnick, "Efficient Instruction Scheduling
for a Pipelined Architecture,", Proceedings of the 1986
SIGPLAN Symposium on Compiler Construction,, Palo Alto, CA,
June 1986, pages 11-16. Also in SIGPLAN Notices 21(7), July 1986.
ACM Digital Library
D.H. Kim and H.J. Lee, "Inegrated Instruction Scheduling and Fine-Grain
Register Allocation for Embedded Processors," Proceedings of the
6th International Workshop on Embedded Computer Systems: Architectures,
Modeling, and Simulation, SAMOS 2006 (LNCS 4017),
Samos, Greece, July 2006, pages 269-278.
Springer
J.R. Goodman and W.C. Hsu, "Code Scheduling and Register Allocation
in Large Basic Blocks,", Proceeindgs of the 2nd International
Conference on Supercomputing, St. Malo, France, 1988,
pages 442-452.
ACM Digital Library
R. Sethi and J.D. Ullman, "The Generation of Optimal Code for Arithmetic
Expressions," Journal of the ACM 17(4), October 1970, page 715-728.
ACM Digital Library
S. Richardson and M. Ganapathi, "Interprocedural optimization:
Experimental Results," Software--Practice and Experience,
19, 1989.
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
MW 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, KD 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
KD 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
KD 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)
This site is maintained by Keith D. Cooper.
He is a terrible e-mail correspondent.