Pointer Disambiguation via Strict Inequalities
Abstract
The design and implementation of static analyses that disambiguate pointers
has been a focus of research since the early days of compiler construction.
One of the challenges that arise in this context is the analysis of languages
that support pointer arithmetics, such as C, C++ and assembly dialects.
This paper contributes to solve this challenge.
We start from an obvious, yet unexplored, observation: if a pointer
is strictly less than another, they cannot alias.
Motivated by this remark, we use the abstract interpretation framework to
build strict less-than relations between pointers.
To this end, we construct a program representation that bestows the Static
Single Information (SSI) property onto our dataflow analysis.
SSI gives us an efficient sparse algorithm, which, once seen as a
form of abstract interpretation, is correct by construction.
We have implemented our static analysis in LLVM.
It runs in time linear on the number of program variables, and, depending on
the benchmark, it can be as much as six times more precise than the pointer
disambiguation techniques already in place in that compiler.
Origin | Files produced by the author(s) |
---|
Loading...