Abstract
Control Flow Analysis is a widely used approach for analysing functional and object oriented programs. Once the applications become more demanding also the analysis needs to be more precise in its ability to deal with mutable state (or side-effects) and to perform polyvariant (or context-sensitive) analysis. Several insights in Data Flow Analysis and Abstract Interpretation show how to do so for imperative programs but the techniques have not had much impact on Control Flow Analysis. We show how to incorporate a number of key insights from Data Flow Analysis (involving such advanced interprocedural techniques as call strings and assumption sets) into Control Flow Analysis (using Abstract Interpretation to induce the analyses from a collecting semantics).
Chapter PDF
References
F. Bourdoncle. Interprocedural abstract interpretation of block structured languages with nested procedures, aliasing and recursivity. In Proc. PLILP’ 90, volume 456 of Lecture Notes in Computer Science, pages 307–323. Springer, 1990.
F. Bourdoncle. Efficient chaotic iteration strategies with widenings. In Proc. Formal Methods in Programming and Their Applications, volume 735 of Lecture Notes in Computer Science, pages 128–141. Springer, 1993.
P. Cousot and R. Cousot. Static determination of dynamic properties of recursive procedures. In E. J. Neuhold, editor, Formal Description of Programming Concepts. North Holland, 1978.
P. Cousot and R. Cousot. Systematic Design of Program Analysis Frameworks. In Proc. POPL’ 79, pages 269–282, 1979.
A. Deutsch. On Determining Lifetime and Aliasing of Dynamically Allocated Data in Higher Order Functional Specifications. In Proc. POPL’ 90, pages 157–169. ACM Press, 1990.
K. L. S. Gasser, F. Nielson, and H. R. Nielson. Systematic realisation of control flow analyses for CML. In Proc. ICFP’ 97, pages 38–51. ACM Press, 1997.
M. S. Hecht. Flow Analysis of Computer Programs. North Holland, 1977.
N. Heintze. Set-based analysis of ML programs. In Proc. LFP’ 94, pages 306–317, 1994.
N. Heintze and J. Jaffar. An engine for logic program analysis. In Proc. LICS’ 92, pages 318–328, 1992.
S. Jagannathan and S. Weeks. Analyzing Stores and References in a Parallel Symbolic Language. In Proc. LFP’ 94, pages 294–305, 1994.
S. Jagannathan and S. Weeks. A unified treatment of flow analysis in higher-order languages. In Proc. POPL’ 95. ACM Press, 1995.
N. D. Jones and S. S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In Proc. POPL’ 82, pages 66–74. ACM Press, 1982.
J. Knoop and B. Steffen. The interprocedural coincidence theorem. In Proc. CC’ 92, volume 641 of Lecture Notes in Computer Science, pages 125–140. Springer, 1992.
W. Landi and B. G. Ryder. Pointer-Induced Aliasing: A Problem Classification. In Proc. POPL’ 91, pages 93–103. ACM Press, 1991.
R. Milner, M. Tofte, and R. Harper. The definition of Standard ML. MIT Press, 1990.
F. Nielson and H. R. Nielson. Infinitary Control Flow Analysis: a Collecting Semantics for Closure Analysis. In Proc. POPL’ 97. ACM Press, 1997.
H. R. Nielson and F. Nielson. Flow logics for constraint based analysis. In Proc. CC’ 98, volume 1383 of Lecture Notes in Computer Science, pages 109–127. Springer, 1998.
J. Palsberg. Global program analysis in constraint form. In Proc. CAAP’ 94, volume 787 of Lecture Notes in Computer Science, pages 255–265. Springer, 1994.
J. Palsberg. Closure analysis in constraint form. ACM TOPLAS, 17(1):47–62, 1995.
H. D. Pande and B. G. Ryder. Data-flow-based virtual function resolution. In Proc. SAS’ 96, volume 1145 of Lecture Notes in Computer Science, pages 238–254. Springer, 1996
E. Ruf. Context-insensitive alias analysis reconsidered. In Proc. PLDI’ 95, pages 13–22. ACM Press, 1995.
M. Sagiv, T. Reps, and S. Horwitz. Precise interprocedural dataflow analysis with applications to constant propagation. In Proc. TAPSOFT’ 95, volume 915 of Lecture Notes in Computer Science, pages 651–665, 1995.
M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis. Prentice Hall International, 1981.
O. Shivers. Control flow analysis in Scheme. In Proc. PLDI’ 88, volume 7(1) of ACM SIGPLAN Notices, pages 164–174. ACM Press, 1988.
O. Shivers. The semantics of Scheme control-flow analysis. In Proc. PEPM’ 91, volume 26 (9) of ACM SIGPLAN Notices. ACM Press, 1991.
A. Tarski. A lattice-theoretical fixpoint theorem and its applications. Pacific J. Math., 5:285–309, 1955.
J. Vitek, R. N. Horspool, and J. S. Uhl. Compile-Time Analysis of Object-Oriented Programs. In Proc. CC’ 92, volume 641 of Lecture Notes in Computer Science, pages 236–250. Springer, 1992.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Nielson, F., Nielson, H.R. (1999). Interprocedural Control Flow Analysis. In: Swierstra, S.D. (eds) Programming Languages and Systems. ESOP 1999. Lecture Notes in Computer Science, vol 1576. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-49099-X_3
Download citation
DOI: https://doi.org/10.1007/3-540-49099-X_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-65699-9
Online ISBN: 978-3-540-49099-9
eBook Packages: Springer Book Archive