The Ant And The Grasshopper: Fast And Accurate Pointer Analysis For Millions Of Lines Of Code

PLDI(2007)

引用 292|浏览319
暂无评分
摘要
Pointer information is a prerequisite for most program analyses, and the quality of this information can greatly affect their precision and performance. Inclusion-based (i.e. Andersen-style) pointer analysis is an important point in the space of pointer analyses, offering a potential sweet-spot in the trade-off between precision and performance. However, current techniques for inclusion-based pointer analysis can have difficulties delivering on this potential.We introduce and evaluate two novel techniques for inclusion-based pointer analysis-one lazy, one eager(1)-that significantly improve upon the current state-of-the-art without impacting precision. These techniques focus on the problem of online cycle detection, a critical optimization for scaling such analyses. Using a suite of six open-source C programs, which range in size from 169K to 2.17M LOC, we compare our techniques against the three best inclusion-based analyses-described by Heintze and Tardieu [11], by Pearce et al. [21], and by Berndl et al. [4]. The combination of our two techniques results in an algorithm which is on average 3.2 x faster than Heintze and Tardieu's algorithm, 6.4 x faster than Pearce et al. 's algorithm, and 20.6 x faster than Berndl et al. 's algorithm.We also investigate the use of different data structures to represent points-to sets, examining the impact on both performance and memory consumption. We compare a sparse-bitmap implementation used in the GCC compiler with a BDD-based implementation, and we find that the BDD implementation is on average 2 x slower than using sparse bitmaps but uses 5.5 x less memory.
更多
查看译文
关键词
pointer analysis
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要