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 |
Keywords
- Abstract interpretation
- Data-flow analysis
- Sparse evaluation
- Static analysis
ASJC Scopus subject areas
- Software
- Computer Networks and Communications