Global code motion/global value numbering

We believe that optimizing compilers should treat the machine-independent optimizations (e.g., conditional constant propagation, global value numbering) and code motion issues separately.’ Removing the code motion requirements from the machine-independent optimization allows stronger optimizations using simpler algorithms. Preserving a legal schedule is one of the prime sources of complexity in algorithms like PRE [18, 13] or global congruence finding [2, 20].

[1]  John Cocke,et al.  Programming languages and their compilers: Preliminary notes , 1969 .

[2]  John Cocke,et al.  Programming languages and their compilers , 1969 .

[3]  Robert E. Tarjan Testing flow graph reducibility , 1973, STOC '73.

[4]  Michael A. Malcolm,et al.  Computer methods for mathematical computations , 1977 .

[5]  Etienne Morel,et al.  Global optimization by suppression of partial redundancies , 1979, CACM.

[6]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[7]  John Cocke,et al.  Register allocation via graph coloring , 1981 .

[8]  Gregory J. Chaitin,et al.  Register allocation and spilling via graph coloring , 2004, SIGP.

[9]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[10]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[11]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[12]  Manfred P. Stadel,et al.  A solution to a problem with Morel and Renvoise's “Global optimization by suppression of partial redundancies” , 1988, TOPL.

[13]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[14]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[15]  Matthias Felleisen,et al.  The semantics of program dependence , 1989, PLDI '89.

[16]  Mark N. Wegman,et al.  An efficient method of computing static single assignment form , 1989, POPL '89.

[17]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.

[18]  M. Wegman,et al.  Constant propagation with conditional branches , 1991, TOPL.

[19]  Michael D. Ernst,et al.  Value dependence graphs: representation without taxation , 1994, POPL '94.

[20]  Keith D. Cooper,et al.  Effective partial redundancy elimination , 1994, PLDI '94.

[21]  Christopher A. Vick SSA-based reduction of operator strength , 1994 .

[22]  Bernhard Steffen,et al.  Partial dead code elimination , 1994, PLDI '94.

[23]  Keith D. Cooper,et al.  Combining analyses, combining optimizations , 1995, TOPL.