Optimization Under the Perspective of Soundness, Completeness, and Reusability

While soundness and completeness are unchallengedly the surveyor's rod for evaluating the worthiness of proof calculi in program verification, it is not common to refer to these terms for rating the worthiness of performance improving transformations in program optimization. In this article we reconsider optimization under the perspective of soundness, completeness, and, additionally, reusability. Soundness can here be interpreted as semantics preservation, completeness as optimality in a specific, well-defined sense, and reusability as paradigm-transcending robustness of the rationale guaranteeing soundness and completeness of an optimization for a specific setting. Using partial redundancy elimination (PRE) for illustration, we demonstrate that these rationales are usually quite sensitive to paradigm changes. Neither completeness nor soundness are generally preserved. Hence, the reuse of optimization strategies in new paradigms requires usually paradigm-specific adaptations in order to accommodate their specifics. We exemplify this for PRE, and demonstrate that it is generally worth the effort, and an effective means for mastering the complexity of compiler construction in the specific field of code optimization.

[1]  Patrick Cousot,et al.  Abstract interpretation , 1996, CSUR.

[2]  Martin Hopkins,et al.  An overview of the PL.8 compiler , 1982, SIGPLAN '82.

[3]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[4]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

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

[6]  Manfred P. Stadel,et al.  A variation of Knoop, Rüthing, and Steffen's Lazy Code Motion , 1993, SIGP.

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

[8]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[9]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

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

[11]  J. Knoop Formal callability and its relevance and application to interprocedural data-flow analysis , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[12]  Jens Knoop Optimal Interprocedural Program Optimization: A New Framework and Its Application , 1999 .

[13]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[14]  Bernhard Steffen,et al.  Lazy code motion , 1992, PLDI '92.

[15]  Peter Brezany,et al.  Vienna Fortran Compilation System - Version 1.2 - User's Guide , 1996 .

[16]  Oliver Rüthing,et al.  Bidirectional Data Flow Analysis in Code Motion: Myth and Reality , 1998, SAS.

[17]  Jens Knoop,et al.  Interprocedural distribution assignment placement: more than just enhancing intraprocedural placing techniques , 1997, Proceedings 1997 International Conference on Parallel Architectures and Compilation Techniques.

[18]  O. Ruthing,et al.  Optimal code motion in the presence of large expressions , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[19]  Jens Knoop,et al.  Optimal Distribution Assignment Placement , 1997, Euro-Par.

[20]  Bernhard Steffen,et al.  Basic-Block Graphs: Living Dinosaurs? , 1998, CC.

[21]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

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

[23]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[24]  Jens Knoop,et al.  From DFA-Frameworks to DFA-Generators: A Unifying Multiparadigm Approach , 1999, TACAS.

[25]  Jens Palsberg Type inference for objects , 1996, CSUR.

[26]  C. Robert Morgan,et al.  Building an Optimizing Compiler , 1998 .

[27]  Bernhard Steffen,et al.  Sparse code motion , 2000, POPL '00.

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

[29]  Bernhard Steffen,et al.  Parallelism for Free : E cient and Optimal Bitvector Analyses for Parallel Programs , 1996 .

[30]  Bernhard Steffen,et al.  DFA&OPT-METAFrame: A Tool Kit for Program Analysis and Optimazation , 1996, TACAS.

[31]  Bernhard Steffen,et al.  Code motion for explicitly parallel programs , 1999, PPoPP '99.

[32]  Jens Knoop Eliminating Partially Dead Code in Explicitly Parallel Programs , 1998, Theor. Comput. Sci..

[33]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[34]  Bernhard Steffen,et al.  Parallelism for Free: Bitvector Analyses -> No State Explosion! , 1995, TACAS.

[35]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

[36]  Oliver Rüthing Interacting Code Motion Transformations: Their Impact and Their Complexity , 2000, Lecture Notes in Computer Science.

[37]  Pierre Wolper,et al.  Where is the algorithmic support? , 1996, CSUR.