MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Partial Redundancy Elimination in SSA Form (1999) [28 citations — 0 self]

by Robert Kennedy ,  Sun Chan ,  Shin-ming Liu ,  RAYMOND LO ,  Peng Tu ,  Fred Chow
ACM Transactions on Programming Languages and Systems
Add To MetaCart

Abstract:

This paper presents a new approach called SSAPRE [Chow et al. 1997] that shares the optimality properties of the best prior work [Knoop et al. 1992; Knoop et al. 1994; Drechsler and Stadel 1993] and that is based on static single assignment form. Static single assignment form (SSA) is a popular program representation in modern optimizing compilers. Its versatility stems from the fact that, in addition to representing the program, it provides accurate use-definition (use-def) relationships among the program variables in a concise form [Cytron et al. 1991; Wolfe 1996; Chow et al. 1996]. Many efficient global optimization algorithms have been developed based on SSA. Among these optimizations are dead store elimination [Cytron et al. 1991], constant propagation [Wegman and Zadeck 1991], value numbering [Alpern et al. 1988; Rosen et al. 1988; Briggs et al. 1997], induction variable analysis [Gerlek et al. 1995; Liu et al. 1996], live range computation [Gerlek et al. 1994] and global code motion [Click 1995]. Until recently, most uses of SSA have been restricted to solving problems based essentially on program variables. SSA could not readily be applied to solving expression-based problems because the concept of use-def for expressions is less obvious than for variables. This difficulty was mentioned by Dhamdhere et al. in the conclusion of [Dhamdhere et al. 1992]. They state, essentially, that there is no clear connection between the use-def information for variables represented by SSA form and the redundancy properties for expressions. By demonstrating such a connection and exploiting it, our work shows that an SSA-based approach to PRE and other expression-based problems is not only plausible, but also enlightening and practical. Although this paper addresses only the PRE ...

Citations

713 Advanced Compiler Design and Implementation – Muchnick - 1997
644 Efficiently computing static single assignment form and the control dependence graph – Cytron, Ferrante, et al. - 1991
553 High performance compilers for parallel computing – Wolfe
265 Constant propagation with conditional branches – Wegman, Zadeck - 1991
167 Global optimization by suppression of partial redundancies – Morel, Renvoise - 1979
148 Global value numbers and redundant computation – Rosen, Wegman, et al. - 1988
143 Lazy code motion – Knoop, RĂ¼thing, et al.
107 Optimal code motion: Theory and practice – Knoop, uthing, et al. - 1994
106 Automatic construction of sparse data flow evaluation graphs – Choi, Cytron, et al. - 1991
94 Beyond induction variables, detecting and classifying sequences using a demanddriven ssa form – Gerlek, Stoltz, et al. - 1995
79 Effective partial redundancy elimination – Briggs, Cooper - 1994
73 Minimizing register usage penalty at procedure calls – Chow - 1988
66 A portable machine-independent global optimizer { design and measurements – Chow - 1983
63 A new algorithm for partial redundancy elimination based on SSA form – Chow, Chan, et al. - 1997
58 How to analyze large programs efficiently and informatively – Dhamdhere, Rosen, et al.
50 Value numbering – Briggs, Cooper, et al. - 1997
40 The program structure tree: Computing control regions in linear time – Johnson, Pearson - 1994
38 A solution to a problem with Morel and Renvoise's "Global optimization by suppression of partial redundancies – Drechsler, Stadel - 1988
35 Register promotion by sparse partial redundancy elimination of loads and stores – Lo, Chow, et al. - 1998
29 Value-Driven Redundancy Elimination – Simpson - 1996
28 A fast algorithm for code movement optimization – Dhamdhere - 1988
26 A variation of Knoop, Ruthing, and Steffen's lazy code motion – Drechsler, Stadel - 1993
24 Lazy strength reduction – Knoop, Ruthing, et al. - 1993
21 Global code motion, global value numbering – Click - 1995
21 A linear time algorithm for placing OE-nodes – Sreedhar, Gao - 1995
19 A composite hoisting-strength reduction transformation for global program optimization (part II – Joshi, Dhamdhere - 1982
18 Detecting Equality of Values in Programs – Alpern, Wegman, et al. - 1988
13 A new algorithm for composite hoisting and strength reduction optimisation – Dhamdhere - 1989
13 An optimizer for Ada - design, experiences and results – Schwarz, Kirchgassner, et al. - 1988
12 Incremental Computation of Static Single Assignment Form – Choi, Sarkar, et al. - 1996
11 Strength reduction via SSAPRE – Kennedy, Chow, et al. - 1998
8 Strength reduction of large expressions – Dhaneshwar, Dhamdhere - 1995
7 Safety of code motion – Kennedy - 1972
7 Loop induction variable canonicalization in parallelizing compilers – Liu, Lo, et al. - 1996
4 Engineering a RISC compiler – Chow, Himelstein, et al. - 1986
3 A reference chain approach for live variables – Gerlek, Wolfe, et al. - 1994
1 Effective representation of aliases and – Chow, Chan, et al. - 1996