A unified approach to global program optimization

Gary A. Kildall

1973 · 901 citations · 29 references

Concepts

TL;DR

The paper introduces a general‑purpose program flow analysis algorithm that, through an optimizing function, enables compile‑time global optimization of object code for expressions. The algorithm is formally defined on a directed‑graph model of program flow, proven correct, and combined with optimizing functions such as constant propagation, common subexpression elimination, redundant register load elimination, and live expression analysis to perform global code optimization.

Abstract

A technique is presented for global analysis of program structure in order to perform compile time optimization of object code generated for expressions. The global expression optimization presented includes constant propagation, common subexpression elimination, elimination of redundant register load operations, and live expression analysis. A general purpose program flow analysis algorithm is developed which depends upon the existence of an "optimizing function." The algorithm is defined formally using a directed graph model of program flow structure, and is shown to be correct. Several optimizing functions are defined which, when used in conjunction with the flow analysis algorithm, provide the various forms of code optimization. The flow analysis algorithm is sufficiently general that additional functions can easily be defined for other forms of global code optimization.

References

29