An algorithmic mitigation of large spurious interprocedural cycles in static analysis

Hakjoo Oh, Kwangkeun Yi

Research output: Contribution to journalArticle

8 Citations (Scopus)

Abstract

We present a simple algorithmic extension of the approximate call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, the key reasons for why approximate call-return semantics in both context-sensitive and-insensitive static analysis can make the analysis much slower than expected. In the approximate call-strings-based context-sensitive static analysis, because the number of distinguished contexts is finite, multiple call-contexts are inevitably joined at the entry of a procedure and the output at the exit is propagated to multiple return-sites. We found that these multiple returns frequently create a single large cycle (we call it 'butterfly cycle') covering almost all parts of the program and such a spurious cycle makes analyses very slow and inaccurate. Our simple algorithmic technique (within the fixpoint iteration algorithm) identifies and prunes these spurious interprocedural flows. The technique's effectiveness is proven by experiments with a realistic C analyzer to reduce the analysis time by 7-96%. As the technique is algorithmic, it can be easily applicable to existing analyses without changing the underlying abstract semantics, it is orthogonal to the underlying abstract semantics' context-sensitivity, and its correctness is obvious.

Original languageEnglish
Pages (from-to)585-603
Number of pages19
JournalSoftware - Practice and Experience
Volume40
Issue number8
DOIs
Publication statusPublished - 2010 Jul 1
Externally publishedYes

Fingerprint

Static analysis
Semantics
Degradation
Experiments

Keywords

  • Abstract interpretation
  • Fixpoint algorithm
  • Interprocedural analysis
  • Spurious cycles
  • Static analysis

ASJC Scopus subject areas

  • Software

Cite this

An algorithmic mitigation of large spurious interprocedural cycles in static analysis. / Oh, Hakjoo; Yi, Kwangkeun.

In: Software - Practice and Experience, Vol. 40, No. 8, 01.07.2010, p. 585-603.

Research output: Contribution to journalArticle

@article{35c8ac53d80d41608867f2041db4cf01,
title = "An algorithmic mitigation of large spurious interprocedural cycles in static analysis",
abstract = "We present a simple algorithmic extension of the approximate call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, the key reasons for why approximate call-return semantics in both context-sensitive and-insensitive static analysis can make the analysis much slower than expected. In the approximate call-strings-based context-sensitive static analysis, because the number of distinguished contexts is finite, multiple call-contexts are inevitably joined at the entry of a procedure and the output at the exit is propagated to multiple return-sites. We found that these multiple returns frequently create a single large cycle (we call it 'butterfly cycle') covering almost all parts of the program and such a spurious cycle makes analyses very slow and inaccurate. Our simple algorithmic technique (within the fixpoint iteration algorithm) identifies and prunes these spurious interprocedural flows. The technique's effectiveness is proven by experiments with a realistic C analyzer to reduce the analysis time by 7-96{\%}. As the technique is algorithmic, it can be easily applicable to existing analyses without changing the underlying abstract semantics, it is orthogonal to the underlying abstract semantics' context-sensitivity, and its correctness is obvious.",
keywords = "Abstract interpretation, Fixpoint algorithm, Interprocedural analysis, Spurious cycles, Static analysis",
author = "Hakjoo Oh and Kwangkeun Yi",
year = "2010",
month = "7",
day = "1",
doi = "10.1002/spe.969",
language = "English",
volume = "40",
pages = "585--603",
journal = "Software - Practice and Experience",
issn = "0038-0644",
publisher = "John Wiley and Sons Ltd",
number = "8",

}

TY - JOUR

T1 - An algorithmic mitigation of large spurious interprocedural cycles in static analysis

AU - Oh, Hakjoo

AU - Yi, Kwangkeun

PY - 2010/7/1

Y1 - 2010/7/1

N2 - We present a simple algorithmic extension of the approximate call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, the key reasons for why approximate call-return semantics in both context-sensitive and-insensitive static analysis can make the analysis much slower than expected. In the approximate call-strings-based context-sensitive static analysis, because the number of distinguished contexts is finite, multiple call-contexts are inevitably joined at the entry of a procedure and the output at the exit is propagated to multiple return-sites. We found that these multiple returns frequently create a single large cycle (we call it 'butterfly cycle') covering almost all parts of the program and such a spurious cycle makes analyses very slow and inaccurate. Our simple algorithmic technique (within the fixpoint iteration algorithm) identifies and prunes these spurious interprocedural flows. The technique's effectiveness is proven by experiments with a realistic C analyzer to reduce the analysis time by 7-96%. As the technique is algorithmic, it can be easily applicable to existing analyses without changing the underlying abstract semantics, it is orthogonal to the underlying abstract semantics' context-sensitivity, and its correctness is obvious.

AB - We present a simple algorithmic extension of the approximate call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, the key reasons for why approximate call-return semantics in both context-sensitive and-insensitive static analysis can make the analysis much slower than expected. In the approximate call-strings-based context-sensitive static analysis, because the number of distinguished contexts is finite, multiple call-contexts are inevitably joined at the entry of a procedure and the output at the exit is propagated to multiple return-sites. We found that these multiple returns frequently create a single large cycle (we call it 'butterfly cycle') covering almost all parts of the program and such a spurious cycle makes analyses very slow and inaccurate. Our simple algorithmic technique (within the fixpoint iteration algorithm) identifies and prunes these spurious interprocedural flows. The technique's effectiveness is proven by experiments with a realistic C analyzer to reduce the analysis time by 7-96%. As the technique is algorithmic, it can be easily applicable to existing analyses without changing the underlying abstract semantics, it is orthogonal to the underlying abstract semantics' context-sensitivity, and its correctness is obvious.

KW - Abstract interpretation

KW - Fixpoint algorithm

KW - Interprocedural analysis

KW - Spurious cycles

KW - Static analysis

UR - http://www.scopus.com/inward/record.url?scp=77956386343&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=77956386343&partnerID=8YFLogxK

U2 - 10.1002/spe.969

DO - 10.1002/spe.969

M3 - Article

VL - 40

SP - 585

EP - 603

JO - Software - Practice and Experience

JF - Software - Practice and Experience

SN - 0038-0644

IS - 8

ER -