The impact of interprocedural analysis and optimization on the design of a software development environment

One of the primary goals of the IR n programming environment project is to mount a concerted attack on the problems of performing interprocedural analysis and optimization in a compiler. Few commercial optimizing compilers employ interprocedural techniques because the cost of gathering the requisite information in a traditional compiler is too great. Computing the side effects of a procedure call requires detailed knowledge of the internals of both the called procedure and any procedures invoked either directly or indirectly from it. Thus, the compiler potentially needs information about the internals of every procedure to determine the side effects of procedure calls, even separately compiled procedures. Gathering this information would require examining the source of every procedure in the program - an expensive process, particularly unfortunate since the primary goal of separate compilation is to reduce the amount of recompilation required in response to changes in an individual procedure. The existence of a software development environment like the IR n programming environment [HoKe 84] changes the compilation process enough to make computing such information palatable. Since all modules are developed and all programs are defined using tools of the environment, these tools can cooperate to record the information necessary to do a good job of interprocedural analysis and optimization. Whenever the compiler needs information about possible side effects of a particular procedure, it can simply extract this information from the environment's central database. Because the only mechanism for changing modules or programs is through the tools provided by the environment, the compiler is assured that it will be notified of any changes. Thus, it can use information derived from previous analysis with certain knowledge that the information reflects the current state of the program and its procedures.

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

[2]  Thomas Reps,et al.  Programming Techniques and Data Structures , 1981 .

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

[4]  David Notkin,et al.  Gandalf: Software development environments , 1986, IEEE Transactions on Software Engineering.

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

[6]  Thomas C. Spillman,et al.  Exposing Side-Effects in a PL/I Optimizing Compiler , 1971, IFIP Congress.

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

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

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

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

[11]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

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

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

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

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

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

[17]  Warren Teitelman,et al.  A Display Oriented Programmer's Assistant , 1977, IJCAI.

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

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