By Yannis Smaragdakis, University of Athens, Greece, smaragd@di.uoa.gr | George Balatsouras, University of Athens, Greece, gbalats@di.uoa.gr
Pointer analysis is a fundamental static program analysis, with a rich literature and wide applications. The goal of pointer analysis is to compute an approximation of the set of program objects that a pointer variable or expression can refer to. We present an introduction and survey of pointer analysis techniques, with an emphasis on distilling the essence of common analysis algorithms. To this end, we focus on a declarative presentation of a common core of pointer analyses: algorithms are modeled as configurable, yet easy-to-follow, logical specifications. The specifications serve as a starting point for a broader discussion of the literature, as independent threads spun from the declarative model.
Pointer analysis is a fundamental static program analysis with a rich literature and wide applications. The goal of pointer analysis is to compute an approximation of the set of program objects that a pointer variable or expression can refer to.
This monograph introduces and surveys the most common modern approaches to pointer analysis, with an emphasis on distilling the essence of common analysis algorithms. With an eye towards ease of exposition and concreteness, the presentation aspires to be rather more tutorial and hands-on than other surveys of the pointer analysis area. To this end, the focus is on a declarative presentation of a common core of pointer analyses: algorithms are modeled as configurable, yet easy-to-follow, logical specifications. The specifications serve as a starting point for a broader discussion of the literature, as independent threads spun from the declarative model.