Pointer disambiguation via strict inequalities
Pointer disambiguation via strict inequalities
复制标题
通过严格的不等式消除指针歧义
DOI:
10.1109/cgo.2017.7863735
复制
发表时间:
2017
期刊:
影响因子:
--
通讯作者:
Fernando Magno Quintão Pereira
中科院分区:
文献类型:
--
作者:
Maroua Maalej;Vitor Paisante;P. Ramos;L. Gonnord;Fernando Magno Quintão Pereira
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 abstract interpretation to build strict less-than relations between pointers. We construct a program representation that bestows the Static Single Information (SSI) property onto our dataflow analysis. SSI gives us a sparse algorithm, whose correctness is easy to ensure. 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.