Abstract
We present a sparse evaluation technique that is effectively applicable to a set of elaborate semantic-based static analyses. Existing sparse evaluation techniques are effective only when the underlying analyses have comparably low precision. For example, if a pointer analysis precision is not affected by numeric statements like x:=1 then existing sparse evaluation techniques can remove the statement, but otherwise, the statement cannot be removed. Our technique, which is a fine-grained sparse evaluation technique, is effectively applicable even to elaborate analyses. A key insight of our technique is that, even though a statement is relevant to an analysis, it is typical that analyzing the statement involves only a tiny subset of its input abstract memory and the most are irrelevant. By exploiting this sparsity, our technique transforms the original analysis into a form that does not involve the fine-grained irrelevant semantic behaviors. We formalize our technique within the abstract interpretation framework. In experiments with a C static analyzer, our technique improved the analysis speed by on average 14x.
Original language | English |
---|---|
Pages (from-to) | 99-111 |
Number of pages | 13 |
Journal | Computer Languages, Systems and Structures |
Volume | 40 |
Issue number | 3-4 |
DOIs | |
Publication status | Published - 2014 Oct 1 |
Externally published | Yes |
Bibliographical note
Funding Information:This work was supported by the Engineering Research Center of Excellence Program of Korea Ministry of Science, ICT & Future Planning (MSIP)/National Research Foundation of Korea (NRF) (Grant NRF-2008-0062609 ).
Publisher Copyright:
© 2014 Elsevier Ltd. All rights reserved.
Keywords
- Abstract interpretation
- Data-flow analysis
- Sparse evaluation
- Static analysis
ASJC Scopus subject areas
- Software
- Computer Networks and Communications