Many context-sensitive data flow analyses can be formulated as a variant of the all-pairs Dyck-CFL reachability problem, which, in general, is of sub-cubic time complexity and quadratic space complexity. Such high complexity significantly limits the scalability of context-sensitive data flow analysis and is not affordable for analyzing large-scale software. This paper presents \textsc{Flare}, a reduction from the CFL reachability problem to the conventional graph reachability problem for context-sensitive data flow analysis. This reduction allows us to benefit from recent advances in reachability indexing schemes, which often consume almost linear space for answering reachability queries in almost constant time. We have applied our reduction to a context-sensitive alias analysis and a context-sensitive information-flow analysis for C/C++ programs. Experimental results on standard benchmarks and open-source software demonstrate that we can achieve orders of magnitude speedup at the cost of only moderate space to store the indexes. The implementation of our approach is publicly available.
翻译:许多对背景敏感的数据流分析可以作为全孔Dyck-CFL可达性问题的变体,一般而言,可达性问题具有分立时间复杂性和四面空间复杂性,这种高度复杂性极大地限制了对背景敏感的数据流分析的可伸缩性,而且无法为分析大型软件提供负担得起。本文介绍了“Ctextsc{Flare}”,从CFL可达性问题到常规图形可达性问题,以进行对背景敏感的数据流分析。这一减少使我们能够受益于可达性指数化办法的最新进展,这种可达性办法往往耗用几乎直线空间在几乎固定的时间内回答可达性查询。我们已经将我们的削减应用于对背景敏感的别类分析和C/C++方案对背景敏感的信息流分析。标准基准和开放源软件的实验结果表明,我们只能以中度空间的成本实现数量级加速,储存指数。我们的方法的实施是公开的。