Fall 2002: Room 1046, 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.
General Background - see a good undergraduate textbook
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.
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.
The dominator calculation is described in Section 9.3.2 of
Engineering a Compiler.
"Global Common Subexpression Elimination", J. Cocke,
Proceedings of a Symposium on Compiler Construction,
SIGPLAN Notices 5(7), pages 20-24, July 1970.
"A Survey of Data-flow Analysis Techniques," Ken Kennedy,
in Program Flow Analysis: Theory and Applications
(N.D. Jones and S.S. Muchnick, editors), Prentice-Hall, 1981.
<--This paper convers a broader variety of data-flow
algorithms and techniques than we will cover in the course. It will,
however, serve you well to read it before taking the C-exam in code
optimization.
F.E. Allen and J. Cocke, "A Program Data Flow Analysis Procedure,"
Communications of the ACM, 19(3), March 1976, pages 137-147.
M. Burke, "An Interval-based Approach to Exhaustive and
Incremental Interprocedural Data-Flow Analysis," ACM Transactions
on Programming Languages and Systems, 12(3),
July 1990, pages 341-395.
B.G. Ryder and M.D. Carroll, "An Incremental Algorithm for Software
Analysis," Proceedings of the Second ACM SIGSOFT/SIGPLAN Software
Engineering Symposium on Practical Software Development Environments
, Palo Alto, CA, USA, 1987, pages 171-179. (Also, ACM SIGPLAN
Notices, 22(1), January 1987, pages 171-179)
M.S. Hecht and J.D. Ullman, "A Simple Algorithm for Global Data Flow
Analysis Problems", SIAM Journal of Computing, 4(4),
December 1975, pages 519-532.
B.G. Ryder and M.C. Paull, "Elimination Algorithms for Data Flow
Analysis,", ACM Computing Surveys, 18(3), September 1986,
pages 277-316.
B.G. Ryder and M.C. Paull, "Incremental Data-Flow Analysis Algorithms,"
ACM Transactions on Programming Languages and Systems 10(1),
January 1988, pages 1-50.
K. Kennedy, "A Survey of Data Flow Analysis Techniques,"
Appeared as a chapter in Jones & Muchnick's book
Program Flow Analysis; preprint of that chapter is
on the web page.
M.N. Wegman and F.K. Zadeck, "Constant Propagation with
Conditional Branches", ACM Transactions on Programming
Languages and Systems (TOPLAS), 13(2), April 1991,
pages 181--210.
K. Pettis and R.C. Hansen, "Profile-guided Code Positioning",
Proceedings of the ACM SIGPLAN 90 Conference on Programming
Language Design and Implementation
(PLDI 90), June 1990, pages 16-27.
Operator Strength Reduction," K.D. Cooper, L.T. Simpson and C.A. Vick,
ACM Transactions on Programming Languages and Systems
(TOPLAS), 23(September 2001, pages 603--625.
J. Knoop, O. Ruthing, and B. Steffen, "Lazy Code Motion,"
Proceedings of the ACM SIGPLAN 92 Conference on Programming
Language Design and Implementation (PLDI), June 1992.
K. Drechsler and M. Stadel, "A Variation of Knoop, Ruthing,
and Stefen's Lazy Code Motion", SIGPLAN Notices, 28(5), May 1993.
P. Briggs and K.D. Cooper, "Effective Partial Redundancy Elimination",
Proceedings of the ACM SIGPLAN 94 Conference on Programming
Language Design and Implementation (PLDI), June 1994.
R. Cytron, A. Lowry, and F.K. Zadeck, "Code Motion of Control
Structures in High-Level Languages," Proceedings of the 13th
ACM SIGPLAN/SIGACT Symposium on Principles of Programming
Languages, (POPL), January 1986, pages 70-84.
V. Markstein, J. Cocke, and P. Markstein, "Optimization of
Range Checking," Proceedings of the 1982 ACM SIGPLAN Conference
on Compiler Construction, Boston, MA, USA,
SIGPLAN Notices 17(6), June 1982, pages 114-119.
R. Gupta, "Optimizing Array Bound Checks Using Flow Analysis,"
ACM Letters on Programming Languages and Systems
(LOPLAS), 2(1-4), March-December 1993, pages 135-150.
J. Cocke and P. Markstein, "Measurement of Program Improvement
Algorithms," Proceedings of the 1980 IFIP Congress,
North Holland Publishers, 1980. (Also, IBM RC 8111, 1980)
M. Auslander and M. Hopkins, "An Overview of the PL.8 Compiler,",
Proceedings of the 1982 ACM SIGPLAN Symposium on Compiler
Construction, Boston, MA, USA, June 1982. (Also, SIGPLAN
Notices 17(6))
K.D. Cooper and T. Waterman, "Understanding Energy Consumption on
the C6x,", Workshop on Compilers and Operating Systems For
Low Power, Charlottesville, VA, USA, September 2002.
H. Mehta, R.M. Owens, M.J. Irwin, R. Chen, and D. Ghosh, "Techniques
for Low Energy Software," Proceedings of the International
Symposium on Low Power Electronics and Design, August 1997,
pages 72-75.
Phillip B. Gibbons and Steven S. Muchnick, "Efficient Instruction
Scheduling for a Pipelined Architecture," Proceedings of the 1986
SIGPLAN Symposium on Compiler Construction (SIGPLAN 86),
June, 1986 (Palo Alto, CA, USA), pages 11-16. (Also,
ACM SIGPLAN Notices 21(7), July, 1986.)
Philip J. Schielke, "Stochastic Instruction Scheduling," Ph.D. Thesis,
Rice University, May 2000. (Rice CS TR00-370)
Ravi Sethi and J.D. Ullman, "The Generation of Optimal Code for
Arithmetic Expressions," Journal of the ACM, 17(4), October
1970, pages 715-728
James R. Goodman and Wei-Chung Hsu, "Code Scheduling and Register
Allocation in Large Basic Blocks," Proceedings of the Second
International Conference on Supercomputing, St. Malo, FR, 1988,
pages 442-452.
W.W. Hwu, S.A. Mahlke, W.Y. Chen, P.P. Chang, N.J. Warter, R.A.
Bringmann, R.G. Ouellette, R.E. Hank, J.G. Holm, and D.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.
J.A. Fisher, "Trace Scheduling: A Technique For Global Microcode
Compaction", IEEE Transactions on ComputersC-30(7),
pages 478-490, July 1981.
Daniel R. Kerns and Susan J. Eggers, "Balanced scheduling: instruction scheduling when memory latency is uncertain",
PLDI '93: Proceedings of the ACM SIGPLAN 1993 conference on
Programming language design and implementation, Albuquerque, New
Mexico, USA, June, 1993.
Monica Lam, "Software Pipeling: an Effective Scheduling Technique
for VLIW Machines," Proceedings of the ACM SIGPLAN 1988 Conference
on Programming Language Design and Implementation (PLDI 88),
Atlanta, GA, USA, June 1988, pages 318--328.
(Also, ACM SIGPLAN Notices 23(7), July 1988.)
Edmar Wienskoski, "Improved Software Pipelining for Superscalar
Architectures," Ph.D. Thesis, Rice University, April 1998.
Keith D. Cooper and Philip J. Schielke, "Non-local Instruction
Scheduling with Limited Code Growth," Proceedings of the ACM
SIGPLAN Workshop on Languages, Compilers, and Tools for
Embedded Systems, Montreal, CA, June 1998, pages 193--207.
Joseph A. Fisher, "Trace Scheduling: A Technique for Global Microcode
Compaction," IEEE Transactions on Computers, C-30, 1981, pages
478--490.
D. Callahan and B. Koblenz, "Register Allocation via Hierarchical Graph Coloring",
PLDI '91: Proceedings of the ACM SIGPLAN 1991 conference on
Programming language design and implementation.
K. Cooper, A. Dasgupta, J. Eckhardt,
"Revisiting Graph Coloring Register Allocation: A Study of the Chaitin-Briggs and Callahan-Koblenz Algorithms", Proceedings of LCPC 2005.
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).
Classic interprocedural problems:
K.D. Cooper, M.W. Hall, K. Kennedy, and L. Torczon,
"Interprocedural Analysis and Optimization,"
Communications on Pure and Applied Mathematics 48,
1995 (pages 947-1003).
The bibliography of this paper list myriad relevant papers.
K. Cooper, K. Kennedy, and L. Torczon,
"The Impact of Interprocedural Analysis and Optimization in the Rn
Programming Environment," ACM Transactions on Programming Languages
and Systems (TOPLAS), 8(4), October 1986, pages 491-523.
D. Callahan, K. Cooper, K. Kennedy, and L. Torczon,
"InterproceduralConstant Propagation",
Proceedings of the 1986 SIGPLAN Symposium on
Compiler Construction (SIGPLAN '86), pages 152-161.
K. Cooper, K. Kennedy, and L. Torczon, "Interprocedural
Optimization: Limiting Unnecessary Recompilation",
Proceedings of the 1986 SIGPLAN Symposium on
Compiler Construction (SIGPLAN '86), pages 58-67.
K. Cooper and K. Kennedy, "Interprocedural Side Effect Analysis
in Linear Time", Proceedings of the 1988 SIGPLAN Conference on
Progamming Language Design and Implementation (PLDI) , pages 57--66
Call Graph Construction:
B.G. Ryder, "Constructing the Call Graph of a Program,"
IEEE Transactions on Software Engineering, May 1979.
D. Callahan, A. Carle, M.W. Hall, and K. Kennedy
"Constructing the Procedure Call Multigraph,"
IEEE Transactions on Software Engineering, 16(4), Apr 1990.
M. Burke, "An Interval-based Approach to Exhaustive
and Incremental Interprocedural Analysis," Michael Burke,
ACM Transactions on Programming Languages and Systems,
(TOPLAS) 12(3), July 1990.
"Efficient Call Graph Analysis", Mary W. Hall and Ken Kennedy,
ACM Letters on Programming Languages and Systems
(LOPLAS), 1(3), September 1992.
Pointer Analysis:
B.G. Ryder, W. Landi, P.A Stocks, S. Zhang, and R. Altucher,
"A Scheme for Interprocedural Modiciation Side Effect Analysis
with Pointer Aliasing,"
ACM Transactions on Programming Languages and Systems
(TOPLAS), 23(2), March 2001.
M. Das, "Unification-based Pointer Analysis with Directional
Assignments," Proceedings of the ACM SIGPLAN 2000 Conference
on Programming Language Design and Implementation (PLDI),
SIGPLAN Notices, 35(5), May 2000, pages 35-46.
Interprocedural register allocation:
F.C. Chow, "Minimizing Register Usage Penalty at Procedure Calls,"
Proceedings of the ACM SIGPLAN 1988 Confernce
on Programming Language Design and Implementation (PLDI),
June 1988, pages 85-94.
D.W. Wall, "Register Windows versus Register Allocation,",
Proceedings of the ACM SIGPLAN 1988 Confernce
on Programming Language Design and Implementation (PLDI),
June 1988, pages 67--78.
Impact:
D. Grove and L. Torczon,
"Interprocedural Constant Propgation: A Study of Jump Function
Implementations,"
Proceedings of the ACM SIGPLAN 1993 Conference on Programming
Language Design and Implementation, (PLDI)
ACM SIGPLAN Notices 28(6), June 1993, pages 90-99.
R. Metzger and S. Stroud,
"Interprocedural Constant Propagation: An Empirical Study,"
ACM Letters on Programming Languages and Systems
(LOPLAS), 2(1-4), 1993, pages 213-232.
R. Scheifler, "An Analysis of Inline Substitution For a
Structured Programming Language,"
Communications of the ACM (CACM), 20(9),
September, 1977, pages 647-654.
L.P Deutsch and A.M Schiffman, "Efficient Implementation of the
Smalltalk-80 System," ACM Symposium on Principles of Programming
Languages (POPL), 1984.
V. Bala, E. Duesterwald, and S. Banerjia, "Dynamo: A Transparent
Dynamic Optimizaiton System,", Proceedings of the ACM SIGPLAN 2000
Conference on Programming Language Design and Implementation (PLDI),
Vancouver, BC, CA, 2000.
This site is maintained by Keith D. Cooper.
He is a terrible e-mail correspondent.