Efficient flow-sensitive interprocedural data-flow analysis in the presence of pointers

29Citations
Citations of this article
28Readers
Mendeley users who have this article in their library.

This article is free to access.

Abstract

This paper presents a new worklist algorithm that significantly speeds up a large class of flow-sensitive data-flow analyses, including typestate error checking and pointer analysis. Our algorithm works particularly well for inter-procedural analyses. By contrast, traditional algorithms work well for individual procedures but do not scale well to interprocedural analysis because they spend too much time unnecessarily re-analyzing large parts of the program. Our algorithm solves this problem by exploiting the sparse nature of many analyses. The key to our approach is the use of interprocedural def-use chains, which allows our algorithm to re-analyze only those parts of the program that are affected by changes in the flow values. Unlike other techniques for sparse analysis, our algorithm does not rely on precomputed def-use chains, since this computation can itself require costly analysis, particularly in the presence of pointers. Instead, we compute def-use chains on the fly during the analysis, along with precise pointer information. When applied to large programs such as nn, our techniques improve analysis time by up to 90% - from 1974s to 190s - over a state of the art algorithm. © Springer-Verlag Berlin Heidelberg 2006.

Cite

CITATION STYLE

APA

Tok, T. B., Guyer, S. Z., & Lin, C. (2006). Efficient flow-sensitive interprocedural data-flow analysis in the presence of pointers. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 3923 LNCS, pp. 17–31). https://doi.org/10.1007/11688839_3

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free