Expansion-Based Removal of Semantic Partial Redundancies

We develop an expansion-based algorithm for semantic partial redundancy elimination (SPRE), which overcomes the central drawbacks of the state-of-the-art approaches, which leave the program structure invariant: they fail to eliminate all partial redundancies even for acyclic programs. Besides being optimal for acyclic programs, our algorithm is unique in eliminating all partial k-redundancies, a new class of redundancies which is characterised by the number k of loop iterations across which values have to be kept. These optimality results come at the price of an in the worst case exponential program growth. The new technique is thus tailored for optimizing the typically considerably small computational “hot” spots of a program. Here it is particularly promising because its structural simplicity supports extensions to uniformly capture further powerful optimisations like constant propagation or strength reduction in a mutually supportive way.

[1]  Bernhard Steffen,et al.  Property-Oriented Expansion , 1996, SAS.

[2]  Bernhard Steffen,et al.  Optimal Run Time Optimization Proved by a New Look at Abstract Interpretation , 1987, TAPSOFT, Vol.1.

[3]  Bernhard Steffen,et al.  The Value Flow Graph: A Program Representation for Optimal Program Transformations , 1990, ESOP.

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

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

[6]  Rajiv Gupta,et al.  Complete removal of redundant expressions , 1998, PLDI 1998.

[7]  Ken Kennedy,et al.  An algorithm for reduction of operator strength , 1977, Commun. ACM.

[8]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[9]  John H. Reif,et al.  Symbolic evaluation and the global value graph , 1977, POPL.

[10]  Cliff Click,et al.  Global code motion/global value numbering , 1995, PLDI '95.

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

[12]  Bernhard Steffen,et al.  Code Motion and Code Placement: Just Synonyms? , 1998, ESOP.

[13]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[14]  Rastislav Bodík,et al.  Path-sensitive value-flow analysis , 1998, POPL '98.

[15]  Mary Lou Soffa,et al.  An approach to ordering optimizing transformations , 1990, PPOPP '90.

[16]  Bernhard Steffen,et al.  Efficient Code Motion and an Adaption to Strength Reduction , 1991, TAPSOFT, Vol.2.

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

[18]  Bernhard Steffen,et al.  The power of assignment motion , 1995, PLDI '95.