Practical and Accurate Low-Level Pointer Analysis [abstract] (IEEE Xplore, PDF)
Bolei Guo, Matthew J. Bridges, Spyridon Triantafyllis, Guilherme Ottoni, Easwaran Raman, and David I. August
Proceedings of the Third International Symposium on
Code Generation and Optimization (CGO), March 2005.
Pointer analysis is traditionally performed once, early in the
compilation process, upon an intermediate representation (IR) with
source-code semantics. However, performing pointer analysis only once
at this level imposes a phase-ordering constraint, causing alias
information to become stale after subsequent code transformations.
Moreover, high-level pointer analysis cannot be used at link time or
run time, where the source code is unavailable. This paper advocates performing pointer analysis on a low-level
intermediate representation. We present the first context-sensitive
and partially flow-sensitive points-to analysis designed to operate at
the assembly level. As we will demonstrate, low-level pointer analysis
can be as accurate as high-level analysis. Additionally, our low-level
pointer analysis also enables a quantitative comparison of propagating
high-level pointer analysis results through subsequent code
transformations, versus recomputing them at the low level. We show
that the former practice is considerably less accurate than the latter.