Goal-Directed Value Profiling
Scott Watterson Saumya Debray
Department of Computer Science
University of Arizona
Tucson, AZ 85721, U.S.A.
Abstract
Compilers can exploit knowledge that a variable has a fixed known value at a
program point for optimizations such as code
specialization and constant folding. Recent work has shown that
it is possible to take advantage of such optimizations, and thereby
obtain significant performance improvements, even if a variable cannot be
statically guaranteed to have a fixed constant value. To do this
profitably, however, it is necessary to take into account information
about the runtime distribution of values taken on by variables. This
information can be obtained though value profiling. Unfortunately,
existing approaches to value profiling incur high overheads, primarily
because profiling is carried out without consideration for
the way in which the resulting information will be used. In this
paper, we describe an approach to reduce the cost of value profiling
by making the value profiler aware of the utility of the value
profiles being gathered. This allows our profiler to avoid wasting
resources where the profile can be guaranteed to not be useful for
optimization. This results in significant reductions in both the time and
space requirements for value profiling. Our approach, implemented in the
context of the alto link-time optimizer, is an order of
magnitude faster, and uses about 5% of the space, of a straightforward
implementation.