Title :
Practical and accurate low-level pointer analysis
Author :
Guo, Bolei ; Bridges, Matthew J. ; Triantafyllis, Spyridon ; Ottoni, Guilherme ; Raman, Easwaran ; August, David I.
Author_Institution :
Dept. of Comput. Sci., Princeton Univ., NJ, USA
Abstract :
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, for C programs, the former practice is considerably less accurate than the latter.
Keywords :
C++ language; optimising compilers; source coding; storage allocation; C program; compilation process; context-sensitive analysis; intermediate representation; partially flow-sensitive analysis; phase-ordering constraint; pointer analysis; points-to analysis design; source-code semantics; Algorithm design and analysis; Assembly; Bridges; Computational complexity; Computer science; Information analysis; Optimizing compilers; Performance analysis; Scheduling; Tail;
Conference_Titel :
Code Generation and Optimization, 2005. CGO 2005. International Symposium on
Print_ISBN :
0-7695-2298-X
DOI :
10.1109/CGO.2005.27