Recent advances in languages, software design methodologies, and archi
tecture have prompted the development of improved compile-time methods
for analyzing the effects of procedure calls, pointer references, and
array accesses. Such sophistication, however, generally implies that
compilers and programming environments will experience a corresponding
increase in the volume of analysis information, which may be difficul
t to use efficiently. In this paper, we consider the practical accommo
dation of such information. Our results show how to engineer a compile
r such that its optimization phase takes time proportional to the bene
fit, rather than the size, of such information.