CS265 References


This is a list of books and papers for CS265, Spring 2003, taught by Prof. Susan Graham. (Actually, it's gradually morphing from the list from Spring 2000). Some of the listed papers will be assigned readings - they are indicated in red; others are here as supplementary material. As the readings for the semester are chosen, they will be added to this list, along with links to e-versions of some of the papers. The reading assignments are given in Reading Assignments.

Textbooks

ARZ92
F. Allen, B. K. Rosen, and K. Zadeck, editors. Optimization in Compilers. Draft, 1992. Available only to CS265 students.
This is a draft of a book that was never completed, but it has some useful material. It is available for purchase from a local copy center.

Muchnick97
Steven S. Muchnick. Advanced Compiler Design and Implementation . Morgan Kaufmann, 1997.
Get your copy from an online bookseller such as amazon.com
Be sure to see the errata.

ASU86
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.
(This is the book that's often used as an undergraduate text. Chapters 1-8 are for review. Chapters 9 and 10 cover course material.)

Papers

Code Generation

PG88
Eduardo Pelegri-Llopart and Susan L. Graham. Optimal Code Generation for Expression Trees: An Application of BURS Theory. In Proceedings of the 1988 ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages , pages 294-308, January 1988.

FHP92
Christopher. W. Fraser, Robert R. Henry, and Todd A. Proebsting. BURG -- Fast Optimal Instruction Selection and Tree Parsing. ACM SIGPLAN Notices 27 , 4:68-76, April 1992.
The BURG distribution is also available.

Pro95
Todd A. Proebsting. BURS Automata Generation. ACM Transactions on Programming Languages and Systems, 17(3):461-486, May 1995

See Also
PW96
Todd A. Proebsting and Benjamin A. Whaley. One-Pass, Optimal Tree Parsing - With Or Without Trees. CC'96 April 1996.

FH91
Christopher W. Fraser and Robert R. Henry. Hard-coding bottom-up code generation tables to save time and space. Software-Practice and Experience 21 , (1):1-12, January 1991

FP99
Christopher W. Fraser and Todd A. Proebsting. Finite-state Code Generation. ACM SIGPLAN'99 Conference on Programming Language Design and Implementation, pages 270-280, May 1999

MSRR00
Maya Madhavan, Priti Shankar, Siddhartha Rai, and U. Ramakrishna. Extending Graham-Glanville Techniques for Optimal Code Generation. ACM Transactions on Programming Languages and Systems, 22(6):973-1001, November 2000

Knu71
Donald Knuth. An Empirical Study of FORTRAN Programs. Software:Practice and Experience , 1(2):105-133, April/June 1971

Hoa73
D.C. Hoaglin. An Analysis of the Loop Optimization Scores in Knuth's `Empirical Study of Fortran Programs'. Software:Practice and Experience , 3(2):161-169, April/June 1973.

Lamb81
David A. Lamb Construction of a Peephole Optimizer. Software:Practice and Experience , 11(6):639-647, June 1981.

DF80
Jack W. Davidson and Christopher W. Fraser. The Design and Application of a Retargetable Peephole Optimizer. ACM Transactions on Programming Languages and Systems, 2(2):191-202, April 1980.

Kes86
Peter B. Kessler. Discovering Machine -Specific Code Improvements. In Proceedings of the 1986 ACM SIGPLAN Symposium on Compiler Construction. ACM SIGPLAN Notices , 21(7):249-254, July 1986.

DF84
Jack W. Davidson and Christopher W. Fraser. Code Selection through Object Code Optimization. ACM Transactions on Programming Languages and Systems, 6(4):505-526, October 1984.

Code Compression

DEMS00
Saumya K. Debray, William Evans, Robert Muth, and Bjorn de Sutter. Compiler Techniques for Code Compaction. ACM Transactions on Programming Languages and Systems, 22(2):378-415, March 2000

Flow Analysis

Ram99
G. Ramalingam Identifying Loops in Almost Linear Time. ACM Transactions on Programming Languages and Systems, 21(2):175-188, March 1999

TH92
Steven W. K. Tjiang and John L. Hennessy. Sharlit - A tool for building optimizers. In Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 82-93, June 1992.

Optimizing Transformations

BGS94
David F. Bacon, Susan L. Graham, and Oliver J. Sharp. Compiler Transformations for High-Performance Computing. ACM Computing Surveys, 26(4):347-420, December 1994

BGS00
Rastislav Bodik, Rajiv Gupta, and Vivek Sarkar. ABCD: eliminating array bounds checks on demand. In Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, pages 321-333, June 2000

Gup93
Rajiv Gupta. Optimizing Array Bound Checks using Flow Analysis ACM Letters on Programming Languages and Systems, 2(1-4):135-150, December 1993

KRS94
Jens Knoop, Oliver Rüthing and Bernhard Steffen. Optimal code motion: theory and practice. ACM Transactions on Programming Languages and Systems, 16(4):1117-1155, July 1994

LGC02
Sorin Lerner, David Grove, and Craig Chambers. Composing Dataflow Analyses and Transformations. In Proceedings of the 2002 ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages , January 2002.

LIU99
Yanhong A. Liu. Efficient Computation via Incremental Computation. Technical report, Dept. of Computer Science, Univ. Indiana , 1999.

WZ91
Mark N. Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems, 13(2):181-210, April 1991

Intermediate Forms and Intermediate Languages

LTS02
Christopher League, Valery Trifonov, and Zhong Shao. Type-preserving compilation of Featherweight Java. ACM
Transactions on Programming Languages and Systems (TOPLAS),
24(2):112-152, March 2002.
BOSW98
Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler. Making the future safe for the past: Adding
genericity to the Java programming language.
In Craig Chambers, editor, ACM Symposium on Object-Oriented
Programming: Systems, Languages, and Applications (OOPSLA)
, pages 183-200, Vancouver, British Columbia, 1998.
 
CFRW91
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, and Mark N. Wegman. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems, 13(4):451-490, October 1991

GLW95
Susan L. Graham, Steven Lucco, and Robert Wahbe. Adaptable Binary Programs. Proceedings of the 1995 USENIX Winter Conference , January 1995.

Runtime Code Generation and Optimization

BDB00
Vasanth Bala, Evelyn Duesterwald and Sanjeev Banerjia. Dynamo: A Transparent Dynamic Optimization System. Proceedings of the ACM SIGPLAN'00 Conference on Programming Language Design and Implementation, pages 1-12, June 2000
MCE00
M. Mock, C. Chambers, and S. J. Eggers. Calpa: A tool for automating selective dynamic compilation.  In 33rd Annual International Symposium on Microarchitecture (Micro-33), pages 291-302, Monterey, California, December 2000.
 
LL96
 
Peter Lee and Mark Leone. Optimizing ML with run-time code generation., Proceedings of the ACM SIGPLAN'96 Conference on Programming Language Design and Implementation, May 1996.

GMPCE97
B. Grant, M. Mock, M. Philipose, C. Chambers, S.J. Eggers, Annotation-Directed Run-Time Specialization in C, Symposium on Partial Evaluation and Semantics-Based Program Manipulation, June 1997.

APCEB96
J. Auslander, M. Philipose, C. Chambers, S.J. Eggers and B.N. Bershad, Fast, Effective Dynamic Compilation, Proceedings of the ACM SIGPLAN'96 Conference on Programming Language Design and Implementation, May 1996.

Interprocedural Analysis

CK88
Keith D. Cooper and Ken Kennedy. Efficient Computation of Flow Insensitive Interprocedural Summary Information -- A Correction. ACM SIGPLAN Notices 23 , 4, April 1988.

Feedback-directed Compilation

CL99
Robert Cohn and P. Geoffrey Lowney. Feedback directed optimization in Compaq's compilation tools for Alpha. ACM Workshop on Feedback-directed Optimization , November 1999

AL98
G. Ammons and J. Larus. Improving Data-flow Analysis with Path Profiles. ACM SIGPLAN'98 Conference on Programming Language Design and Implementation, pages 72-84, June 1998

Loop Analysis

GSW95
Michael P. Gerlek, Eric Stoltz, and Michael Wolfe. Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA Form. ACM Transactions on Programming Languages and Systems, 17(1):85-122, January 1995

Compilation of Object-oriented Languages

ACLPS98
Ali-Reza Adl-Tabatabai, Michal Cierniak, Guei-Yuan Lueh, Vishesh M. Parikh, and James M. Stichnoth. Fast, Effective Code Generation in a Just-In-Time Java Compiler. Proceedings of the ACM SIGPLAN'98 Conference on Programming Language Design and Implementation, pages 280-290, June 1998

AH96
Gerald Aigner and Urs Holzle. Eliminating Virtual Function Calls in C++ Programs. ECOOP'96 - Tenth European Conference on Object-Oriented Programming. , Lecture Notes in Computer Science, 1098:142-166, Springer Verlag, July 1996.

Dol97
Julian Dolby. Automatic Inline Allocation of Objects. ACM SIGPLAN'97 Conference on Programming Language Design and Implementation, pages 7-17, June 1997

IKYTOSOKN99
Kazuaki Ishizaki, Motohiro Kawahito, Toshiaki Yasue, Mikio Takeuchi, Takeshi Ogasawara, Toshio Suganuma, Tamiya Onodera, Hideaki Komatsu, and Toshio Nakatani. Design, Implementation, and Evaluation of Optimizations in a Just-In-Time Compiler. ACM 1999Java Grande Conference , San Francisco, June 12-14, 1999

FKRST99
Fitzgerald, Robert ; Knoblock, Todd B. ; Ruf, Erik ; Steensgard, Bjarne ; Tarditi, David. Marmot: An Optimizing Compiler for Java. Microsoft Research Report MSR-TR-99-33 June 1999.

UA96
Urs Holzle and Ole Agesen. Dynamic vs. Static Optimization Techniques for Object-Oriented Languages (TAPOS 1996)

Pointer Analysis

YHR99
Suan Hsi Yong, Susan Horwitz and Thomas Reps. Pointer Analysis for Programs with Structures and Casting. In Proceedings of the ACM SIGPLAN '99 Conference on Programming Language Design and Implementation , pages 91-103, May 1999.

Steen96
Bjarne Steensgaard. Points-to Analysis in Almost Linear Time. In Proceedings of the 1996 ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages , pages 32-41, January 1996.

Das00
Manuvir Das. Unification-based Pointer Analysis with Directional Assignments. In Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, June 2000.

Vectorization and Parallelism

LP01
Jaejin Lee and David A. Padua. Hiding Relaxed Memory Consistency with a Compiler. IEEE Transactions on Computers: Special Issue on Parallel Architectures and Compilation Techniques , 50(8):824-833, August 2001

MP90
S. Midkiff and D. Padua. Issues in the Compile-time Optimization of Parallel Programs. Proceedings of the International Conference on Parallel Processing (ICPP90), II:105-113, August 1990

PW86
David A. Padua and Michael J. Wolfe. Advanced Compiler Optimizations for Supercomputers. Communications of the ACM, 29(12):1184-1201, December 1986

AK87
J. Randy Allen and Ken Kennedy. Automatic translation of FORTRAN programs to vector form. ACM Transactions on Programming Languages and Systems, 9(4):491-542, October 1987

VLIW

The Transmeta Crusoe system is described in The Technology Behind Crusoe(TM) Processors, Alexander Klaiber, Transmeta Corporation, January 2000. Some public information about the Merced chip is available. See Background Material , John Crawford's Talk, and his Slides.

Implementation of Functional Programming Languages

MMH96
Yasuhiko Minamide, Greg Morrisett, and Robert Harper. Typed Closure Conversion. In Proceedings of the 1996 ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages , pages 271-283, January 1996.

MWCG99
Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language. ACM Transactions on Programming Languages and Systems, 21(3):527-568, May 1999

AJ89
Andrew W. Appel and Trevor Jim. Continuation-Passing, Closure-Passing Style. In Proceedings of the 1988 ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages , pages 293-302, January 1989.

Roz92
Guillermo Juan Rozas. Taming the Y Operator. Proceedings of the 1992 ACM SIGPLAN Conference on Lisp and Functional Programming , San Francisco, June 1992.

Implementation of Embedded Software

AM98
Guido Araujo and Sharad Malik. Code generation for fixed-point DSPs. ACM Transactions on Design Automation of Electronic Systems, 3(2):136-161, April 1998

  HD98
Silvina Hanono and Srinivas Devadas. Instruction Selection, Resource Allocation, and Scheduling in the AVIV Retargetable Code Generator. Proceedings of the 35th Design Automation Conference, pages 510-515, June 1998.
 

  ZTB00
Eckart Zitzler, Jurgn Teich, and Shuvra S Bhattacharya. Evolutionary algorithms for the synthesis of embedded software. IEEE Transactions on Very Large Scale Integration(VLSI) Systems 8(4):452-455, August 2000

Program Slicing

BG96
David Binkley and Keith Brian Gallagher. Program Slicing. Advances in Computers 43 , Marvin Zelkowitz, Editor, Academic Press, 1996.

Debugging Optimized Code

TG00a
Caroline Tice and Susan L. Graham. Key Instructions: Solving the Code Location Problem for Optimized Code. Compaq SRC Research Report 164 , September 2000.

TG00b
Caroline Tice and Susan L. Graham. A Practical Approach for Recovery of Evicted Variables. Compaq SRC Research Report 167 , November 2000.

Cop94
Max Copperman. Debugging optimized code without being misled. ACM Transactions on Programming Languages and Systems, 16(3):387-427, May 1994.

Compiler Correctness

Nec00
George C. Necula. Translation Validation for an Optimizing Compiler. In Proceedings of the ACM SIGPLAN'00 Conference on Programming Language Design and Implementation, pages 83-94, June 2000.

 


graham@cs.berkeley.edu