Abstract
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.
Acknowledgements
We dedicate this article to Hans Langmaack. It presents a profile of our work on optimizing compilation under the perspective of soundness and completeness, a focal point of his research interests. We appreciate his constant encouragement and support, and gratefully acknowledge the inspiring and stimulating impact of his advice and attitude towards computer science on our research.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
M. Auslander and M. Hopkins. An overview of the PL.8 compiler. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction (SCC‘82) (Boston, Massachusetts), volume 17, 6 of ACM SIGPLAN Notices, pages 22–31, 1982.
S. Benkner, S. Andel, R. Blasko, P. Brezany, A. Celic, B. M. Chapman, M. Egg, T. Fahringer, J. Hulman, E. Kelc, E. Mehofer, H. Moritsch, M. Paul, K. Sanjari, V. Sipkova, B. Velkov, B. Wender, and H. P. Zima. Vienna Fortran Compilation System-Version 1.2-User’s Guide. Institute for Software Technology and Parallel Systems, University of Vienna, Vienna, Austria, 1996.
P. Cousot. Abstract interpretation. ACM Computing Surveys, 28(2):324–328, 1996.
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the 4th Annual Symposium on Principles of Programming Languages (POPL‘77) (Los Angeles, California), pages 238–252. ACM, New York, 1977.
P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Conference Record of the 6th Annual Symposium on Principles of Programming Languages (POPL‘79) (San Antonio, Texas), pages 269–282. ACM, New York, 1979.
P. Cousot and R. Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511–547, 1992.
K.-H. Drechsler and M. P. Stadel. A variation of Knoop, Rüthing and Steffen’s LAZY CODE MOTION. ACM SIGPLAN Notices, 28(5):29–38, 1993.
M. S. Hecht. Flow Analysis of Computer Programs. Elsevier, North-Holland, 1977.
J. B. Kam and J. D. Ullman. Monotone data flow analysis frameworks. Acta Informatica, 7:305–317,1977.
G. A. Kildall. A unified approach to global program optimization. In Conference Record of the 1st Annual Symposium on Principles of Programming Languages (POPL‘73) (Boston, Massachusetts), pages 194–206. ACM, New York, 1973.
M. Klein, J. Knoop, D. Koschützki, and B. Steffen. DFA&OPT-MetaFrame: A tool kit for program analysis and optimization. In Proceedings of the 2nd International Workshop on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘96) (Passau, Germany), Lecture Notes in Computer Science, vol. 1055, pages 422–426. Springer-Verlag, Heidelberg, Germany, 1996.
J. Knoop. Eliminating partially dead code in explicitly parallel programs. Theoretical Computer Science, 196(1-2):365–393, 1998. (Special issue devoted to Euro-Par‘96).
J. Knoop. Formal callability and its relevance and application to interprocedural data-flow analysis. In Proceedings of the 6th IEEE Computer Society 1998 International Conference on Computer Languages (ICCL‘98) (Chicago, Illinois), pages 252–261. IEEE Computer Society, Los Alamitos, 1998.
J. Knoop. Optimal Interprocedural Program Optimization: A new Framework and its Application. PhD thesis. University of Kiel, Germany, 1993. Lecture Notes in Computer Science Tutorial, vol. 1428, Springer-Verlag, Heidelberg, Germany, 1998.
J. Knoop. From DFA-frameworks to DFA-generators: A unifying multiparadigm approach. In Proceedings of the 5th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘99) (Amsterdam, The Netherlands), Lecture Notes in Computer Science, vol. 1579, pages 360–374. Springer-Verlag, Heidelberg, Germany, 1999.
J. Knoop and W. Golubski. Abstract interpretation: A uniform framework for type analysis and classical optimization of object-oriented programs. In Proceedings of the 1st International Symposium on Object-Oriented Technology “The White OO Nights” (WOON‘96) (St. Petersburg, Russia), pages 126–142, 1996.
J. K noop, D. Koschützki, and B. Steffen. Basic-block graphs: Living dinosaurs? In Proceedings of the 7th International Conference on Compiler Construction (CC‘98) (Lisbon, Portugal), Lecture Notes in Computer Science, vol. 1383, pages 65–79. Springer-Verlag, Heidelberg, Germany, 1998.
J. Knoop and E. Mehofer. Interprocedural distribution assignment placement: More than just enhancing intraprocedural placing techniques. In Proceedings of the 5th IEEE International Conference on Parallel Architectures and Compilation Techniques (PACT‘97) (San Francisco, California), pages 26–37. IEEE Computer Society, Los Alamitos, 1997.
J. Knoop and E. Mehofer. Optimal distribution assignment placement. In Proceedings of the 3rd European Conference on Parallel Processing (Euro-Par‘97) (Passau, Germany), Lecture Notes in Computer Science, vol. 1300, pages 364–373. Springer-Verlag, Heidelberg, Germany, 1997.
J. Knoop, O. Rüthing, and B. Steffen. Lazy code motion. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘92) (San Francisco, California), volume 27,7 of ACM SIGPLAN Notices, pages 224–234, 1992.
J. Knoop, O. Rüthing, and B. Steffen. Optimal code motion: Theory and practice. ACM Transactions on Programming Languages and Systems, 16(4):1117–1155, 1994.
J. Knoop, O. Rüthing, and B. Steffen. Partial dead code elimination. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘94) (Orlando, Florida), volume 29,6 of ACM SIGPLAN Notices, pages 147–158, 1994.
J. Knoop, O. Rüthing, and B. Steffen. The power of assignment motion. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘95) (La Jolla, California), volume 30,6 of ACM SIGPLAN Notices, pages 233–245, 1995.
J. Knoop, O. Rüthing, and B. Steffen. Towards a tool kit for the automatic generation of interprocedural data flow analyses. Journal of Programming Languages, 4(4):211–246, 1996.
J. Knoop, O. Rüthing, and B. Steffen. Code motion and code placement: Just synomyms? In Proceedings of the 7th European Symposium on Programming (ESOP‘98) (Lisbon, Portugal), Lecture Notes in Computer Science, vol. 1381, pages 154–169. Springer-Verlag, Heidelberg, Germany, 1998.
J. Knoop and F. Schreiber. Analysing and optimizing strongly typed objectoriented languages: A generic approach and its application to Oberon-2. In Proceedings of the 2nd International Symposium on Object-Oriented Technology “The White OO Nights★#x201D; (WOON‘97) (St. Petersburg, Russia), pages 252–266, 1997.
J. Knoop and B. Steffen. Code motion for explicitly parallel programs. In Proceedings of the 7th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP‘99) (Atlanta, Georgia), pages 13–14, 1999.
J. Knoop and B. Steffen. The interprocedural coincidence theorem. In Proceedings of the 4th International Conference on Compiler Construction (CC‘92) (Paderborn, Germany), Lecture Notes in Computer Science, vol. 641, pages 125–140. Springer-Verlag, Heidelberg, Germany, 1992.
J. Knoop, B. Steffen, and J. Vollmer. Parallelism for free: Bitvector analyses → No state explosion! In Proceedings of the 1st International Workshop on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘95) (Aarhus, Denmark), Lecture Notes in Computer Science, vol. 1019, pages 264–289. Springer-Verlag, Heidelberg, Germany, 1995.
J. Knoop, B. Steffen, and J. Vollmer. Parallelism for free: Efficient and optimal bitvector analyses for parallel programs. ACM Transactions on Programming Languages and Systems, 18(3):268–299, 1996.
K. Marriot. Frameworks for abstract interpretation. Acta Informatica, 30:103–129, 1993.
E. Morel and C. Renvoise. Global optimization by suppression of partial redundancies. Communications of the ACM, 22(2):96–103, 1979.
E. Morel and C. Renvoise. Interprocedural elimination of partial redundancies. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 160–188. Prentice Hall, Englewood Cliffs, New Jersey, 1981.
R. Morgan. Building an Optimizing Compiler. Digital Press, 1998.
S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, California, 1997.
S. S. Muchnick and N. D. Jones, editors. Program Flow Analysis: Theory and Applications. Prentice Hall, Englewood Cliffs, New Jersey, 1981.
F. Nielson. A bibliography on abstract interpretations. ACM SIGPLAN Notices, 21:31–38, 1986.
J. Palsberg and M. I. Schwartzbach. Object-oriented Type Systems. John Wiley & Sons, 1994.
Jens Palsberg. Type inference for objects. ACM Computing Surveys, 28(2):358–359, June 1996.
O. Rüthing. Bidirectional data flow analysis in code motion: Myth and reality. In Proceedings of the 5th Static Analysis Symposium (SAS‘98) (Pisa, Italy), Lecture Notes in Computer Science, vol. 1503, pages 1–16. Springer-Verlag, Heidelberg, Germany, 1998.
O. Rüthing. Interacting Code Motion Transformations: Their Impact and Their Complexity. PhD thesis. University of Kiel, Germany, 1997. Lecture Notes in Computer Science, vol. 1539, Springer-Verlag, Heidelberg, Germany, 1998.
O. Rüthing. Optimal code motion in the presence of large expressions. In Proceedings of the 6th IEEE Computer Society 1998 International Conference on Computer Languages (ICCL‘98) (Chicago, Illinois), pages 216–225. IEEE Computer Society, Los Alamitos, 1998.
O. Rüuthing, J. Knoop, and B. Steffen. Sparse code motion. Technical Report 712/1999, Department of Computer Science, University of Dortmund, Germany, 1999.
M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 189–233. Prentice Hall, Englewood Cliffs, New Jersey, 1981.
VFCS/VFC Homepage. Institute for Softwaretechnology and Parallel Systems, University of Vienna, Austria, http://www.par.univie.ac.at/research/langcomp/ lang-comp.html.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Knoop, J., Rüthing, O. (1999). Optimization Under the Perspective of Soundness, Completeness, and Reusability. In: Olderog, ER., Steffen, B. (eds) Correct System Design. Lecture Notes in Computer Science, vol 1710. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48092-7_13
Download citation
DOI: https://doi.org/10.1007/3-540-48092-7_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66624-0
Online ISBN: 978-3-540-48092-1
eBook Packages: Springer Book Archive