Evaluating interprocedural code optimization techniques
Stephen Richardson · 1992
Compilers traditionally base optimization techniques on intraprocedural information. That is, the information contains little knowledge about specific events that may happen at the point of a procedure call. We analyze such techniques in their traditional intraprocedural contexts and evaluate their extension to the interprocedural domain. A brief study of the information used by compilers to optimize computer programs provides the basis for a look at past and future optimization techniques. In particular, we examine ways of gathering and using interprocedural information in an attempt to more accurately perform traditional optimization techniques. We discuss the results of a scientific experiment using interprocedural dataflow information to optimize a set of benchmarks. As an alternative to interprocedural dataflow analysis, we examine the established technique of procedure integration, also called procedure inlining. More experimentation serves to point out the strengths and weaknesses of this technique in the context of global program optimization. Finally, we use the knowledge gained thus far to present a new optimization technique, tailored integration. Tailored integration builds on the strengths of procedure integration, while avoiding some of the pitfalls associated with using integration in an optimizing compiler.