The impact of interprocedural analysis and optimization in the Rn programming environment

In spite of substantial progress in the theory of interprocedural data flow analysis, few practical compiling systems can afford to apply it to produce more efficient object programs. To perform interprocedural analysis, a compiler needs not only the source code of the module being compiled, but also information about the side effects of every procedure in the program containing that module, even separately compiled procedures. In a conventional batch compiler system, the increase in compilation time required to gather this information would make the whole process impractical. In an integrated programming environment, however, other tools can cooperate with the compiler to compute the necessary interprocedural information incrementally. as the program is being developed, decreasing both the overall cost of the analysis and the cost of individual compilations. A central goal of the Rn project at Rice University is to construct a prototype software development environment that is designed to build whole programs, rather than just individual modules. It employs interprocedural analysis and optimization to produce high-quality machine code for whole programs. This paper presents an overview of the methods used by the environment to accomplish this task and discusses the impact of these methods on the various environment components. The responsibilities of each component of the environment for the preparation and use of interprocedural information are presented in detail.

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

[2]  J. E. Ball,et al.  Predicting the effects of optimization on a procedure body , 1979, SIGPLAN '79.

[3]  Ken Kennedy,et al.  A Programming Environment for Fortran , 1983 .

[4]  F. Kenneth Zadeck,et al.  Incremental data flow analysis in a structured program editor , 1984, SIGPLAN '84.

[5]  Ken Kennedy,et al.  Efficient computation of flow insensitive interprocedural summary information , 1984, SIGPLAN '84.

[6]  Marc J. Rochkind,et al.  The source code control system , 1975, IEEE Transactions on Software Engineering.

[7]  Walter F. Tichy A data model for programming support environments and its application , 1982 .

[8]  Ken Kennedy,et al.  PFC: A Program to Convert Fortran to Parallel Form , 1982 .

[9]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

[10]  Keith D. Cooper,et al.  Analyzing aliases of reference formal parameters , 1985, POPL.

[11]  Leon J. Osterweil,et al.  Dave—a validation error detection and documentation system for fortran programs , 1976, Softw. Pract. Exp..

[12]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[13]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[14]  A. P. Yershóv ALPHA—An Automatic Programming System of High Efficiency , 1966, JACM.

[15]  Robert E. Tarjan,et al.  A Unified Approach to Path Problems , 1981, JACM.

[16]  Ken Kennedy,et al.  A Parallel Programming Environment , 1985, IEEE Software.

[17]  Barry K. Rosen Data Flow Analysis for Procedural Languages , 1979, JACM.

[18]  Jeffrey D. Ullman,et al.  Global Data Flow Analysis and Iterative Algorithms , 1976, J. ACM.

[19]  Linda Marie Torczon Compilation dependences in an ambitious optimizing compiler (interprocedural, recompilation) , 1985 .

[20]  Mark N. Wegman,et al.  A Fast and Usually Linear Algorithm for Global Flow Analysis , 1976, J. ACM.

[21]  Eugene W. Myers A Precise and Efficient Algorithm for Determining Existential Summary Data Flow Information , 1980 .

[22]  Ken Kennedy,et al.  Programming Language Support for Supercomputers , 1983 .

[23]  Jeffrey D. Ullman,et al.  A Simple Algorithm for Global Data Flow Analysis Problems , 1975, SIAM J. Comput..

[24]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[25]  John Banning,et al.  : An Efficient , 2022 .

[26]  Joanne L. Martin Guest Editor's Introduction Operating Systems and Environments for Large-Scale Parallel Processors , 1985, IEEE Softw..

[27]  Keith Daniel Cooper Interprocedural data flow analysis in a programming environment , 1983 .

[28]  Robert E. Tarjan,et al.  Fast Algorithms for Solving Path Problems , 1981, JACM.

[29]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[30]  Jack Dongarra,et al.  LINPACK Users' Guide , 1987 .

[31]  N. S. Barnett,et al.  Private communication , 1969 .

[32]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[33]  Eugene W. Myers,et al.  A precise inter-procedural data flow algorithm , 1981, POPL '81.

[34]  B. Lampson,et al.  Organizing software in a distributed environment , 1983, SIGPLAN '83.

[35]  Jack Dongarra LINPACK Working Note #3: Fortran BLAS Timing , 1980 .

[36]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[37]  Walter F. Tichy,et al.  Smart Recompilation , 1985, POPL.

[38]  Larry Melvin Masinter,et al.  Global program analysis in an interactive environment , 1979 .