Large spurious cycle in global static analyses and its algorithmic mitigation

Research output: Chapter in Book/Report/Conference proceedingConference contribution

6 Citations (Scopus)

Abstract

We present a simple algorithmic extension of the classical call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, 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 traditional call-strings-based context-sensitive static analysis, because the number of distinguished contexts must be 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%. Since 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
Title of host publicationProgramming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings
Pages14-29
Number of pages16
DOIs
Publication statusPublished - 2009 Dec 28
Externally publishedYes
Event7th Asian Symposium on Programming Languages and Systems, APLAS 2009 - Seoul, Korea, Republic of
Duration: 2009 Dec 142009 Dec 16

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume5904 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349

Conference

Conference7th Asian Symposium on Programming Languages and Systems, APLAS 2009
CountryKorea, Republic of
CitySeoul
Period09/12/1409/12/16

Fingerprint

Semantics
Static analysis
Cycle
Static Analysis
Strings
Fixpoint
Degradation
Inaccurate
Correctness
Covering
Context
Iteration
Experiments
Output
Experiment

ASJC Scopus subject areas

  • Theoretical Computer Science
  • Computer Science(all)

Cite this

Oh, H. (2009). Large spurious cycle in global static analyses and its algorithmic mitigation. In Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings (pp. 14-29). (Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics); Vol. 5904 LNCS). https://doi.org/10.1007/978-3-642-10672-9_4

Large spurious cycle in global static analyses and its algorithmic mitigation. / Oh, Hakjoo.

Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings. 2009. p. 14-29 (Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics); Vol. 5904 LNCS).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Oh, H 2009, Large spurious cycle in global static analyses and its algorithmic mitigation. in Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), vol. 5904 LNCS, pp. 14-29, 7th Asian Symposium on Programming Languages and Systems, APLAS 2009, Seoul, Korea, Republic of, 09/12/14. https://doi.org/10.1007/978-3-642-10672-9_4
Oh H. Large spurious cycle in global static analyses and its algorithmic mitigation. In Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings. 2009. p. 14-29. (Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)). https://doi.org/10.1007/978-3-642-10672-9_4
Oh, Hakjoo. / Large spurious cycle in global static analyses and its algorithmic mitigation. Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings. 2009. pp. 14-29 (Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)).
@inproceedings{5fd07af37c914d47b3dcf66f61cc8f71,
title = "Large spurious cycle in global static analyses and its algorithmic mitigation",
abstract = "We present a simple algorithmic extension of the classical call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, 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 traditional call-strings-based context-sensitive static analysis, because the number of distinguished contexts must be 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{\%}. Since 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.",
author = "Hakjoo Oh",
year = "2009",
month = "12",
day = "28",
doi = "10.1007/978-3-642-10672-9_4",
language = "English",
isbn = "3642106714",
series = "Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)",
pages = "14--29",
booktitle = "Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings",

}

TY - GEN

T1 - Large spurious cycle in global static analyses and its algorithmic mitigation

AU - Oh, Hakjoo

PY - 2009/12/28

Y1 - 2009/12/28

N2 - We present a simple algorithmic extension of the classical call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, 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 traditional call-strings-based context-sensitive static analysis, because the number of distinguished contexts must be 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%. Since 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 classical call-strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, 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 traditional call-strings-based context-sensitive static analysis, because the number of distinguished contexts must be 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%. Since 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.

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

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

U2 - 10.1007/978-3-642-10672-9_4

DO - 10.1007/978-3-642-10672-9_4

M3 - Conference contribution

AN - SCOPUS:72449200546

SN - 3642106714

SN - 9783642106712

T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

SP - 14

EP - 29

BT - Programming Languages and Systems - 7th Asian Symposium, APLAS 2009, Proceedings

ER -