当前位置: X-MOL 学术IEEE Trans. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Pearl: A Multi-Derivation Approach to Efficient CFL-Reachability Solving
IEEE Transactions on Software Engineering ( IF 6.5 ) Pub Date : 2024-08-05 , DOI: 10.1109/tse.2024.3437684
Chenghang Shi 1 , Haofeng Li 1 , Yulei Sui 2 , Jie Lu 1 , Lian Li 1 , Jingling Xue 2
Affiliation  

Context-free language (CFL) reachability is a fundamental framework for formulating program analyses. CFL-reachability analysis works on top of an edge-labeled graph by deriving reachability relations and adding them as labeled edges to the graph. Existing CFL-reachability algorithms typically adopt a single-reachability relation derivation (SRD) strategy, i.e., one reachability relation is derived at a time. Unfortunately, this strategy can lead to redundancy, hindering the efficiency of the analysis. To address this problem, this paper proposes Pearl , a multi-derivation approach that reduces derivation redundancy for CFL-reachability solving, which significantly improves the efficiency of CFL-reachability analysis. Our key insight is that multiple edges can be simultaneously derived via batch propagation of reachability relations. We also tailor our multi-derivation approach to tackle transitive relations that frequently arise when solving CFL-reachability. Specifically, we present a highly efficient transitive-aware variant, PearlPG , which enhances Pearl with propagation graphs , a lightweight but effective graph representation, to further diminish redundant derivations. We evaluate the performance of our approach on two clients, i.e., context-sensitive value-flow analysis and field-sensitive alias analysis for C/C++. By eliminating a large amount of redundancy, our approach outperforms two baselines including the standard CFL-reachability algorithm and a state-of-the-art solver Pocr specialized for fast transitivity solving. In particular, the empirical results demonstrate that, for value-flow analysis and alias analysis respectively, PearlPG runs 3.09 $\times$ faster on average (up to 4.44 $\times$ ) and 2.25 $\times$ faster on average (up to 3.31 $\times$ ) than Pocr , while also consuming less memory.

中文翻译:


Pearl:高效求解 CFL 可达性的多推导方法



上下文无关语言 (CFL) 可达性是制定程序分析的基本框架。 CFL 可达性分析在边标记图的基础上进行,通过导出可达性关系并将其作为标记边添加到图中。现有的CFL可达性算法通常采用单可达性关系推导(SRD)策略,即一次推导一个可达性关系。不幸的是,这种策略可能会导致冗余,从而降低分析的效率。针对这一问题,本文提出了Pearl ,一种多导数方法,减少了CFL可达性求解的导数冗余,显着提高了CFL可达性分析的效率。我们的主要见解是,可以通过可达性关系的批量传播同时导出多个边。我们还定制了多推导方法来解决解决 CFL 可达性时经常出现的传递关系。具体来说,我们提出了一种高效的传递感知变体Pearl PG ,它通过传播图(一种轻量级但有效的图表示)增强了Pearl ,以进一步减少冗余推导。我们评估了我们的方法在两个客户端上的性能,即 C/C++ 的上下文敏感值流分析和字段敏感别名分析。通过消除大量冗余,我们的方法优于两个基线,包括标准 CFL 可达性算法和专门用于快速传递性求解的最先进的求解器Pocr 。 特别是,实证结果表明,对于价值流分析和别名分析, Pearl PG 的平均运行速度平均快 3.09 $\times$(高达 4.44 $\times$),平均快 2.25 $\times$(高达 4.44 $\times$)。比Pocr低至 3.31 $\times$ ),同时消耗的内存也更少。
更新日期:2024-08-05
down
wechat
bug