English

CFA2: a Context-Free Approach to Control-Flow Analysis

Programming Languages 2015-07-01 v6

Abstract

In a functional language, the dominant control-flow mechanism is function call and return. Most higher-order flow analyses, including k-CFA, do not handle call and return well: they remember only a bounded number of pending calls because they approximate programs with control-flow graphs. Call/return mismatch introduces precision-degrading spurious control-flow paths and increases the analysis time. We describe CFA2, the first flow analysis with precise call/return matching in the presence of higher-order functions and tail calls. We formulate CFA2 as an abstract interpretation of programs in continuation-passing style and describe a sound and complete summarization algorithm for our abstract semantics. A preliminary evaluation shows that CFA2 gives more accurate data-flow information than 0CFA and 1CFA.

Keywords

Cite

@article{arxiv.1102.3676,
  title  = {CFA2: a Context-Free Approach to Control-Flow Analysis},
  author = {Dimitrios Vardoulakis and Olin Shivers},
  journal= {arXiv preprint arXiv:1102.3676},
  year   = {2015}
}

Comments

LMCS 7 (2:3) 2011

R2 v1 2026-06-21T17:28:05.724Z