A Programming Environment for Fortran
Hood, Robert T.
Although it has many flaws by comparison with more modern programming languages, Fortran remains the standard language for numerical programming - partly because there is a large body of important software coded in it, partly because good optimizing compilers can be written for it, and partly because it is reasonably easy to transport Fortran programs from one machine to another. The numerical analysis community has developed reliable packages of subroutines to solve various kinds of problems (e.g. LINPACK, EISPACK and MINPACK) and these packages are widely distributed. Yet, in spite of its popularity, most of the sophisticated new tools for program development have not been extended to support it. As a part of the <em>R^n</em> project at Rice University, we are building a retargetable interactive programming environment for Fortran. At the heart of the environment is project management software that maintains a data base on all the program modules. The data base contains not only the source for each module in the system but also related information such as the composition of programs, cross-module procedure call information, interprocedural data flow information, and specifications for calls to existing procedures. The data base is used by all the other tools in the environment: an intelligent editor that knows enough Fortran to assist the user in preparing programs, an interactive source-level debugging system, and an optimizing compiler with extensive interprocedural analysis. Of particular interest, because of our previous work on compiler optimization, is the assistance such a system can give to interprocedural data flow analysis and optimization. Because all the modules of a program are saved in the data base, the information needed to analyze data flow effects and improve code across procedure boundaries is conveniently available to the optimizing compiler. Thus, the environment will permit us to build compilation systems which optimize the program as a whole rather than module by module - something which has not been possible with conventional compilation techniques.
Citable link to this pagehttps://hdl.handle.net/1911/101563
MetadataShow full item record
- CAAM Technical Reports