The authors provide an overview of the tasks performed by an interprocedural optimizer package built for the use of imperative language programmers on a specific series of supercomputers. The optimizer package comprises ten different algorithms that perform a variety of analyses and improve on the realization of certain optimizations, including constant propagation, dead-code elimination, loop-strip mining for vectorization, dependency analysis and loop interchange for vectorization, parallelization, and memory hierarchy optimization.
The authors present pseudocode for the interprocedural constant propagation algorithm that they have utilized in their implementation and point out that the current implementation does not handle character constant propagation. By comparing their implementation with similar ones, the authors show the superiority of their implementation, even when conceding that they did not use the feedback approach suggested by Wegman and Zadeck [1]. The main focus of this paper, however, is the empirical study, in which they compiled a variety of FORTRAN programs in scientific and engineering problem domains to demonstrate that their optimizer package performs its intended function efficiently and effectively. Propagation of constant values, effectiveness of cloning, types of constant propagation, and so on are individually presented in the form of tables to enable the reader to realize how the algorithm achieves the stated speedup in the benchmark speedup table. Software analysts and engineers interested in optimization will benefit from this paper.