We present a new approach that enables compiler optimization of procedure calls and loop nests containing procedure calls. We introduce two interprocedural transformationsthat move loops across procedure boundaries, exposing them to traditional optimizations on loop nests. These transformations are incorporated into a code generation algorithm for a shared-memorymultiprocessor. The code generator relies on a machine model to estimate the expected bene ts of loop parallelization and parallelism-enhancing transformations. Several transformation strategies are explored and one that minimizestotal execution timeis selected. E cient support of this strategy is provided by an existing interprocedural compilationsystem. We demonstrate the potential of these techniques by applying this code generation strategy to two scienti c applications programs.
Mary W. Hall, Ken Kennedy, Kathryn S. McKinley