懒惰指针分析
摘要:流敏感上下文敏感指针分析通常被认为对于大型程序来说过于昂贵;大多数工具在可扩展性方面会放宽其中一个或两个要求。我们提出了一个懒散的流敏感上下文敏感指针分析,其意义如下:只为活跃指针计算指向信息,并且在其传播中稀疏化(仅限于各指针的活跃范围内)。此外,我们的分析:(a)使用了强健的活跃度,有效地包括了无用代码消除;(b)随后从可能指向信息中计算出必须指向信息,而不是使用互相的固定点;(c)在过程间分析中,使用基于值的调用字符串终止(从而显著减少了调用字符串的数量)。 在GCC-4.6.0中,我们以朴素的实现对SPEC2006进行了分析时间和指针度量大小。使用活跃度将指向信息的量减少了一个数量级,而且没有失去精度。对于所有小于30kLoC的程序,发现我们的结果比gcc的分析更加精确。然而,令人惊喜的是,在这个临界点以下,我们朴素的链表实现比主要用于效率的流敏感上下文不敏感分析更快。我们推测,懒惰的流敏感上下文敏感分析可能不仅更精确,而且更高效于当前的方法。
作者:Uday P. Khedker, Alan Mycroft, Prashant Singh Rawat
论文ID:1112.5000
分类:Programming Languages
分类简称:cs.PL
提交时间:2011-12-22