next up previous
Next: About this document ... Up: Annotated Bibliography Harpoon Project Previous: Annotated Bibliography Harpoon Project

Bibliography

1
Sungdo Moon, Mary W. Hall, and Brian R. Murphy.
Predicated array data-flow analysis for run-time parallelization.
In ICS '98. Conference proceedings of the 1998 international conference on Supercomputing, pages 204-211, Melbourne, Australia, July 1998.
Predication in an array analysis context.

2
Adam Brooks Webber.
Program analysis using binary relations.
In Proceedings of the ACM SIGPLAN '97 Conference on Programming Language Design and Implementation (PLDI), pages 249-259, Las Vegas, Nevada, May 1997.
Very powerful analysis/optimization technique. Originally presented for LISP basic blocks only. With phi and sigma functions we can extend the analysis to the whole program and incorporate elements of reachability analysis. Analysis extracts relations between pairs of variables, and is very type-flexible. Fairly complicated implementation, however.

3
Jean-Raymond Gagné and John Plaice.
The non-standard semantics of Esterel.
In Advances in Computing Science -- ASIAN '97. Third Asian Computing Conference. Proceedings, pages 381-382, Kathmandu, Nepal, 1997.
Presents rationale for using a (time+delta) timeline instead of Esterel's integer-valued instantaneous time model. Claims that Esterel really uses the (time+delta) timeline without realizing it.

4
Gérard Berry.
Esterel on hardware.
In Mechanized Reasoning and Hardware Design, pages 87-103. Prentice Hall, 1992.
a simple hardware implementation of a subset of esterel, using 4 type of fundamental logic blocks. Optimizers based on BDDs. Very useful bibliography.

5
Gérard Berry.
The Esterel v5 language primer.
Lots of dry technical detail on the language, but also some enlightening discussion of the rationale behind the design. See especially sections on `Transformational, Interactive, and Reactive Systems,' `Write Things Once,' and preemption., March 1998.

6
Gérard Berry.
Hardware and software synthesis, optimization, and verification from Esterel programs.
In Tools and Algorithms for the Construction and Analysis of Systems. Third International Workshop, TACAS '97. Proceedings, pages 1-3, Enschede, The Netherlands, April 1997.
Two-page overview of the Esterel system. At least it has a decent bibliography.

7
Raj S. Mitra, Bishnupriya Bhattacharya, and Luciano Lavagno.
Asynchronous implementation of synchronous Esterel specifications.
In Proceedings. Tenth International Conference on VLSI Design, pages 348-353, Hyderabad, India, January 1997.
In which we learn that Esterel is inherently a synchronous language (surprise!). Semantics have to change to support asynchronous implementation; this paper shows how. Not useful to us.

8
Pascalin Amagbégnon, Loïc Besnard, and Paul Le Guernic.
Implementation of the data-flow synchronous language SIGNAL.
In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation (PLDI), pages 163-173, La Jolla, California, June 1995.
Not terribly useful. Intriguing use of the word `arborescent' for `tree-structured'.

9
Tai M. Chung and Hank G. Dietz.
Language constructs and transformation for hard real-time systems.
ACM SIGPLAN Notices, 30(11):41-49, November 1995.
Presents a simple set of language-independent extensions to specify real-time constraints. Also contains the interesting claim that the real-time compilation problem has been solved, and references an unpublished paper to prove it.

10
Daniel Weise, Roger F. Crew, Michael Ernst, and Bjarne Steensgaard.
Value dependence graphs: Representation without taxation.
In Proceedings of the 21st ACM Symposium on Principles of Programming Languages (POPL), pages 297-310, Portland, Oregon, January 1994.
Dataflow representation useful; also recursive/loop structure useful.

11
Seongsoo Hong and Richard Gerber.
Compiling real-time programs into schedulable code.
In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pages 166-176, Albuquerque, New Mexico, June 1993.
Code motion for timing optimization. Are all real-time schedulers iterative?

12
Evelyn Duesterwald, Rajiv Gupta, and Mary Lou Soffa.
A practical data flow framework for array reference analysis and its use in optimizations.
In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pages 68-77, Albuquerque, New Mexico, June 1993.
Not terribly useful. REREAD LATER.

13
Cliff Click and Michael Paleczny.
A simple graph-based intermediate representation.
In The First ACM SIGPLAN Workshop on Intermediate Representations, San Francisco, California, January 1995.
Interesting examples of C++ code, but light on optimization results. We really want to peek at Cliff Click's PhD thesis. [Ed note: I found it!].

14
Vugranam C. Sreedhar and Guang R. Gao.
A linear time algorithm for placing $\phi$-nodes.
In Proceedings of the 22nd ACM Symposium on Principles of Programming Languages (POPL), pages 62-73, San Francisco, California, January 1995.
Just what the title says. I need to implement this eventually.

15
Vugranam C. Sreedhar, Guang R. Gao, and Yong-fong Lee.
A new framework for exhaustive and incremental data flow analysis using DJ graphs.
In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation (PLDI), pages 278-290, Philadelphia, Pennsylvania, May 1996.
Emphasis on Incremental. If we decide to use DJ graphs, this paper could be useful for its examples. Not much new, though, compared to the N other DJ graph papers these authors have cranked out.

16
Vugranam C. Sreedhar, Guang R. Gao, and Yong-fong Lee.
Incremental computation of dominator trees.
ACM Transactions on Programming Languages and Systems, 19(2):239-252, March 1997.
Seems to work well, but I don't think we need incremental updates for Harpoon. Maybe I'm wrong. Very similar to their other papers on this topic. <wry grin>.

17
Torbjörn Granlund and Peter L. Montgomery.
Division by invariant integers using multiplication.
In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI), pages 61-72, Orlando, Florida, June 1994.
*Very* useful for eliminating logic complexity. Also includes lots of references for deconstructing multiplies. In conjunction with induction variable analysis, some very powerful optimizations are possible. The optimization of the radix conversion code is nothing short of brilliant.

18
Greg DeFouw, David Grove, and Craig Chambers.
Fast interprocedural class analysis.
In Proceedings of the 25th ACM Symposium on Principles of Programming Languages (POPL), pages 222-246, San Diego, California, January 1998.
This basically tells us that class/type analysis will be very slow. We can make it faster, but we lose much precision. In hardware compilation we don't care so much about speed, perhaps, so maybe we just suck up and deal. Return to this paper before implementing our type inference engine. [theory practice conflict: the idea I've got in my head doesn't seem as slow as the fastest algorithm presented here. Reconcile this.] [Further thought: these algorithms look like they should be integrated with an (SSA?) constant-propagation/dead-code analysis to come up with the most precise class information possible. Will be slow, but worth it. This paper's optimizations result in less class/type precision, which is unacceptable to us.].

19
Cliff Click.
Global code motion / global value numbering.
In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation (PLDI), pages 246-257, La Jolla, California, June 1995.
Simple and works, but relies on heuristic to place, and seems overly wedded to basic blocks (which we want to eliminate). I like SSAPRE better, even though it is *much* more complicated. Reassessment: Maybe basic blocks aren't so bad.

20
Fred Chow, Sun Chan, Robert Kennedy, Shin-Ming Liu, Raymond Lo, and Peng Tu.
A new algorithm for partial redundancy elimination based on SSA form.
In Proceedings of the ACM SIGPLAN '97 Conference on Programming Language Design and Implementation (PLDI), pages 273-286, Las Vegas, Nevada, May 1997.
Powerful but very, very complicated. Probably worth implementing if we stay in SSA form, although dataflow-based methods (see Click's IR) may be simpler. Also non-linear complexity for simple implementations.

21
Cliff Click and Keith D. Cooper.
Combining analyses, combining optimizations.
ACM Transactions on Programming Languages and Systems, 17(2):181-196, March 1995.
Very theoretical==not terribly useful.

22
Cliff Click.
Combining Analyses, Combining Optimizations.
PhD thesis, Rice University, February 1995.
Lots of very useful optimization information, plus a very powerful optimistic analysis algorithm, which I plan to extend into our `extended type analysis' pass.

23
Micah Beck, Richard Johnson, and Keshav Pingali.
From control flow to dataflow.
Journal of Parallel and Distributed Computing, 12(2):118-129, June 1991.
The paper that started it all. Uses an over-restrictive control model, though, and funky store stuff.

24
Richard Johnson and Keshav Pingali.
Dependence-based program analysis.
In Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pages 78-89, Albuquerque, New Mexico, June 1993.
An O(EV) algorithm for merge and switch placement.

25
Richard Johnson, David Pearson, and Keshav Pingali.
The program structure tree: Computing control regions in linear time.
In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI), pages 171-185, Orlando, Florida, June 1994.
An O(EV) algorithm for computing SESE regions.

26
Richard Johnson, David Pearson, and Keshav Pingali.
Finding regions fast: Single entry single exit and control regions in linear time.
Technical Report TR 93-1365, Cornell University, Ithaca, NY 14853-7501, July 1993.
SESE regions through cycle equivalence. Most complete algorithm description.

27
Keshav Pingali, Micah Beck, Richard C. Johnson, Mayan Moudgill, and Paul Stodghill.
Dependence flow graphs: An algebraic approach to program dependencies.
Technical Report TR 90-1152, Cornell University, Ithaca, NY 14853-7501, September 1990.
interesting variation on `dependence-based program analysis'; defines a formal executable semantics for a DFG-like program representation, with special loop constructs.

28
Martin C. Rinard and Pedro C. Diniz.
Commutivity analysis: A new analysis technique for parallelizing compilers.
ACM Transactions on Programming Languages and Systems, 19(6):942-991, November 1997.
Not terribly relevant to the current project, but interesting nonetheless. Perhaps we can perform some commutivity analysis in Harpoon to free up parallelism?

29
Johan Janssen and Henk Corporaal.
Making graphs reducible with controlled node splitting.
ACM Transactions on Programming Languages and Systems, 19(6):1031-1052, November 1997.
How to make any control flow graph reducible using a minimum number of splits/duplicates. VERY USEFUL if we need reducible graphs. (I suspect that the properties of Java give us this for free.) Good results.

30
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.
Very powerful technique for induction variable analysis using a variant of the SSA form. Requires a symbolic math package for full power, but can accomplish classification easily. mu and nu nodes are used in addition to phi nodes; they might be worthwhile subclasses. Min/max bounds can often be computed. Useful useful stuff. Reference to paper on `loop distribution' and `loop interchanging' that might be worthwhile to track down. Implementable algorithms.

31
Frank Mueller and David B. Whalley.
Avoiding conditional branches by code replication.
In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation (PLDI), pages 56-66, La Jolla, California, June 1995.
Just what the title says. Probably not useful for a hardware compiler. Only mildly useful in its original domain, for that matter.

32
David Harel and Chaim-arie Kahana.
On statecharts with overlapping.
ACM Transactions on Software Engineering and Methodology, 1(4):399-421, October 1992.
Here we basically learn that overlapping statecharts are a Bad Thing. Do not attempt.

33
Doron Drusinsky and David Harel.
Using statecharts for hardware description and synthesis.
IEEE Transactions on Computer-Aided Design, 8(7):798-807, July 1989.
A good description of what statecharts are, and a variety of implementation methodologies using various types of PLAs and FSMs. The infamous traffic light example. Basic idea: implement statecharts as multi-level Mealy/Moore machines. [See Esterel `latch optimization' paper for how to best create hardware from state machines.].

34
David Harel and Eran Gery.
Executable object modeling with statecharts.
Computer, 30(7):31-42, July 1997.
Not useful at all. A waste of time. Although some of the ideas of mapping methods to events are similar to our approach.

35
Rajat Aggarwal, Rajeev Murgai, and Masahiro Fujita.
Speeding up technology-independent timing optimization by network partitioning.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 83-90, San Jose, California, November 1997.
Useful, but presupposes a basic optimizer. Some good references to basic optimizers, which may prove useful. Presents a timing-driven partitioning technique.

36
Valeria Bertacco and Maurizio Damiani.
The disjunctive decomposition of logic functions.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 78-82, San Jose, California, November 1997.
Computationally very expensive. Enables creation of a compact, canonical multi-level circuit directly from a BDD representation, which is a Good Thing. "We found the final netlist to be often close to the output of more complex dedicated optimization tools." Probably worth implementing, or at least researching further. BIG DRAWBACK: "For the largest benchmarks, the limited set of BDD transformations... do not compensate for the exceptional growth of the BDD representation with respect to the original representation." I wish I knew what the "original representation" was.

37
Yuji Kukimoto, Wilsin Gosti, Alexander Saldanha, and Robert K. Brayton.
Approximate timing analysis of combinational circuits under the XBD0 model.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 176-181, San Jose, California, November 1997.
Good overview of timing analysis. Uses a SAT solver to compute approximate timing. May be useful.

38
Majid Sarrafzadeh and Maogang Wang.
NRG: Global and detailed placement.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 532-537, San Jose, California, November 1997.
Not enough detail given to be useful.

39
Srinivasa R. Arikati and Ravi Varadarajan.
A signature based approach to regularity extraction.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 542-545, San Jose, California, November 1997.
The signature idea is a good one. Not enough info for an implementation, though. And our regularity information should come from a much higher level. Might be worthwhile referencing to prove that logic synthesis folk spend a lot of effort reconstructing the high-level patterns thrown away by the compiler. Not otherwise useful.

40
Morgan Enos, Scott Hauck, and Majid Sarrafzadeh.
Replication for logic bipartitioning.
In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD), pages 342-349, San Jose, California, November 1997.
We can create a better logic partition if we are allowed to duplicate some logic. Good idea and good overview of partitioning methods. VERY USEFUL if we need to partition. We want to use the Strawman algorithm, apparently; we need to look up papers on it.

41
Charles E. Leiserson, Flavio M. Rose, and James B. Saxe.
Optimizing synchronous circuitry by retiming.
In R. Bryant, editor, Third Caltech Conference on Very Large Scale Integration, pages 87-116, Pasadena, California, March 1983.
Three good references on other optimization types. This paper describes how to optimize register placement to obtain the smallest possible clock cycle time. *DON'T HAVE COMPLETE PAPER*. Useful. Includes algorithms to compute the clock period of a circuit, among other things.

42
Sharad Malik, Ellen M. Sentovich, Robert K. Brayton, and Alberto Sangiovanni-Vincentelli.
Retiming and resynthesis: Optimizing sequential networks with combinational techniques.
IEEE Transactions on Computer-Aided Design, 10(1):74-84, January 1991.
Useful extension of Leiserson's Retiming paper. Perhaps more information can be found in malik93? Basic idea is that we can push registers to the periphery and disconnect cycles, optimize the resulting circuit, and then push all the registers back in and reconnect the feedback loops. Makes sense. We still have to find a valid combinational optimization technique to plug in the middle, though.

43
Jianzhong Shi, Akash Randhar, and Dinesh Bhatia.
Macro block based FPGA floorplanning.
In Proceedings. Tenth International Conference on VLSI Design, pages 21-26, Hyderabad, India, January 1997.
Interesting paper when we get to floorplanning our hardware. Authors note that it is difficult to find hierarchically-structured designs/testcases; hopefully our compiler will change this somewhat.

44
Madhav Y. Chikodikar, Shridhar Laddha, and Ashish Sirasao.
A technology mapper for Xilinx FPGAs.
In Proceedings. Tenth International Conference on VLSI Design, pages 57-61, Hyderabad, India, January 1997.
"This paper presents a method for area optimal technology mapping for Xilinx FPGAs." Maps logic onto CLBs; 10% better than the Xilinx method. If we ever need to do this, this is the method to use. [Hopefully we can use their code!].

45
C.P. Ravikumar and R. Aggarwal.
A graph-theoretic approach for register file based synthesis.
In Proceedings. Tenth International Conference on VLSI Design, pages 118-123, Hyderabad, India, January 1997.
In-house know-how! Interesting paper; replace registers with register *files*... complete algorithms. Meant for datapath synthesis. "[A]ssumes as input a scheduled data flow graph.".

46
Kimberly D. Emerson.
Asynchronous design--an interesting alternative.
In Proceedings. Tenth International Conference on VLSI Design, pages 318-320, Hyderabad, India, January 1997.
Good overview of asynch. design and the rationale behind it. Briefly: clock skew, power consumption, handling of metastability, and elimination of critical path delay. Circuits run in `average case' time instead of `worst case' time.

47
Fu-Chiung Cheng, Stephen H. Unger, Michael Theobald, and Wen-Chung Cho.
Delay-insensitive carry-lookahead adders.
In Proceedings. Tenth International Conference on VLSI Design, pages 322-328, Hyderabad, India, January 1997.
Pretty typical example of async design, using dual-rail signalling. Proposes DICLASP adder, compares to DIRCA adder. O(n) logic complexity, O(log log n) average case time complexity. About twice as transistor-expensive as the standard O(n) * O(n) synchronous ripple-carry adder.

48
K. Nanda, S. K. Desai, and S. K. Roy.
A new methodology for the design of asynchronous digital circuits.
In Proceedings. Tenth International Conference on VLSI Design, pages 342-347, Hyderabad, India, January 1997.
Proposes a way-out revamp of logic design for async systems. Replaces the conventional dual-rail system with a "non-return-to-zero event driven" scheme, and invents a "universal gate" which acts as and/or/not for this system. Completely delay-insensitive; *however* very area expensive. Might be useful for automated async design, though.

49
Scott Hauck.
Asynchronous design methodologies: An overview.
Technical Report TR-93-05-07, University of Washington, May 1993.
Very good overview of state of the art in asynchronous design. As of 1993, there were significant problems with each async design methodology presented. Is there recent work overcoming some of these difficulties?

50
Bernd Becker and Rolf Drechsler.
Decision diagrams in synthesis: Algorithms, applications, and extensions.
In Proceedings. Tenth International Conference on VLSI Design, pages 46-50, Hyderabad, India, January 1997.
Excellent overview of BDDs and its related cousins. Lengthy bibliography. Also overview the extensions to BDDs to handle (for example) multipliers.

51
Rolf Drechsler.
Pseudo kronecker expressions for symmetric functions.
In Proceedings. Tenth International Conference on VLSI Design, pages 511-513, Hyderabad, India, January 1997.
An optimizer based of PSDKROs for symmetric functions is described; seems to work pretty well on non-symmetric functions, too. Tenth-of-a-second execution times; 1000x faster than comparable methods. Go Go Go!

52
Rakefet Kol and Ran Ginosar.
Kin: A high performance asynchronous processor architecture.
In ICS '98. Conference proceedings of the 1998 international conference on Supercomputing, pages 433-440, Melbourne, Australia, July 1998.
Why asynchronous design will take over the world.

53
David I. August, Wen mei W. Hwu, and Scott A. Mahlke.
A framework for balancing control flow and predication.
In MICRO 30. Proceedings of the thirtieth annual IEEE/ACM international symposium on Microarchitecture, pages 92-103, Research Triangle Park, North Carolina, December 1997.
Interesting IR with predication bits.

54
Jaejin Lee, David A. Padua, and Samuel P. Midkiff.
Basic compiler algorithms for parallel programs.
In Proceedings of the 7th ACM SIGPLAN symposium on Principles and practice of parallel programming (PPoPP), pages 1-12, Atlanta, Georgia, May 1999.
SSA form for explicitly parallel programs.

55
Shih-Wei Liao, Amer Diwan, Robert P. Bosch Jr., Anwar Ghuloum, and Monica S. Lam.
SUIF explorer: An interactive and interprocedural parallelizer.
In Proceedings of the 7th ACM SIGPLAN symposium on Principles and practice of parallel programming (PPoPP), pages 37-48, Atlanta, Georgia, May 1999.
Interprocedural SSA form.

56
Kenneth R. Traub.
A compiler for the MIT tagged-token dataflow architecture.
Technical Report MIT/LCS/TR-370, Massachusetts Institute of Technology, Cambridge, MA 02139, August 1986.
Very interesting, historically. Intraloop, not interloop, parallelism.

57
Paul Havlak.
Interprocedural Symbolic Analysis.
PhD thesis, Rice University, Houston, Texas, May 1994.
TGSSA form.

58
Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante.
Automatic construction of sparse data flow evaluation graphs.
In Proceedings of the 18th ACM Symposium on Principles of Programming Languages (POPL), pages 55-66, Orlando, Florida, January 1991.
Definition and algorithm for ``pruned'' SSA form. Incorrectly referenced by [66].

59
A. Benveniste and G. Berry.
The synchronous approach to reactive and real-time systems.
Proceedings of the IEEE: Another look at real time programming, 79(9):1270-1282, September 1991.
Referenced by [4] as source of the perfect synchrony hypothesis.

60
Jean-Raymond Gagné and John Plaice.
A non-standard temporal deductive database system.
Journal of Symbolic Computation, 22(5-6):649-664, November-December 1996.
Referenced by [3] to support the idea of ``non-standard numbers'' in ennumerating time.

61
David Galloway.
The Transmogrifier C hardware description language and compiler for FPGAs.
In IEEE Symposium on FPGAs for Custom Computing Machines. Proceedings, pages 136-144, April 1995.

62
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.

63
Nabeel Shirazi, Al Walters, and Peter Athanas.
Quantitative analysis of floating point arithmetic on FPGA based Custom Computing Machines.
In IEEE Symposium on FPGAs for Custom Computing Machines. Proceedings, pages 155-162, Napa Valley, California, April 1995.

64
Andrew W. Appel.
Modern Compiler Implementation in Java.
Cambridge University Press, 1998.
The standard practical compilers text.

65
Tim Lindholm and Frank Yellin.
The Java Virtual Machine Specification.
Addison-Wesley, September 1996.

66
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck.
Efficiently computing static single assignment form and the control dependence graph.
ACM Transactions on Programming Languages and Systems, 13(4):451-490, October 1991.
One of the canonical SSA form papers.

67
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck.
An efficient method of computing static single assignment form.
In Proceedings of the 16th ACM Symposium on Principles of Programming Languages (POPL), pages 25-35, Austin, Texas, January 1989.
The other canonical SSA form paper.

68
Ron K. Cytron and Jeanne Ferrante.
Efficiently computing $\phi$-nodes on-the-fly.
ACM Transactions on Programming Languages and Systems, 17(3):487-506, May 1995.
Contains: ``Since one reason for introducing $\phi$-functions is to eliminate potentially quadratic behavior when solving actual data flow problems, such worst-case behavior during SEG or SSA construction could be problematic. Clearly, avoiding such behavior necessitates placing $\phi$-functions without computing or using dominance frontiers.''.

69
B. Alpern, Mark N. Wegman, and F. Kenneth Zadeck.
Detecting equality of variables in programs.
In Proceedings of the 15th ACM Symposium on Principles of Programming Languages (POPL), pages 1-11, San Diego, California, January 1988.
Earliest SSA reference?

70
Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck.
Global value numbers and redundant computations.
In Proceedings of the 15th ACM Symposium on Principles of Programming Languages (POPL), pages 12-27, San Diego, California, January 1988.

71
Gordon D. Plotkin.
A structural approach to operational semantics.
Technical Report DAIMI FN-19, Aarhus University, 1981.
Referenced in [27].

72
Robert M. Shapiro and H. Saint.
The representation of algorithms.
Technical Report CA-7002-1432, Massachusetts Computer Associates, February 1970.
Referenced in [24] as the original SSA form paper.

73
Fred Chow, Sun Chan, Shin-Ming Liu, Raymond Lo, and Mark Streich.
Effective representation of aliases and indirect memory operations in SSA form.
In Proceedings of the Sixth International Conference on Compiler Construction, pages 253-267, April 1996.
Referenced in [20] for HSSA form; also documentation of SGI's use of SSA-variant in their production MIPSpro compiler (release 7.2).

74
Robert A. Ballance, Arthur B. Maccabe, and Karl J. Ottenstein.
The Program Dependence Web: A representation supporting control-, data-, and demand-driven interpretation of imperative languages.
In Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation (PLDI), pages 257-271, White Plains, New York, June 1990.
PDW canonical reference.

75
Peng Tu and David Padua.
Efficient building and placing of gating functions.
In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation (PLDI), pages 47-55, La Jolla, California, June 1995.
Efficiently constructing GSSA form.

76
J. H. Reif and R. E. Tarjan.
Symbolic program analysis in almost-linear time.
SIAM Journal on Computing, 11(1):81-93, February 1981.
Introduction of ``birthpoints,'' which Havlek [57] claims was the direct ancestor of SSA form.


C. Scott Ananian
1999-06-10