Abstract
In this chapter we introduce techniques for Data Flow Analysis. Data Flow Analysis is the traditional form of program analysis which is described in many textbooks on compiler writing. We will present analyses for the simple imperative language While that was introduced in Chapter 1. This includes a number of classical Data Flow Analyses: Available Expressions, Reaching Definitions, Very Busy Expressions and Live Variables. We introduce an operational semantics for While and demonstrate the correctness of the Live Variables Analysis. We then present the notion of Monotone Frameworks and show how the examples may be recast as such frameworks. We continue by presenting a worklist algorithm for solving flow equations and we study its termination and correctness properties. The chapter concludes with a presentation of some advanced topics, including Interprocedural Data Flow Analysis and Shape Analysis.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Nielson, F., Nielson, H.R., Hankin, C. (1999). Data Flow Analysis. In: Principles of Program Analysis. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-03811-6_2
Download citation
DOI: https://doi.org/10.1007/978-3-662-03811-6_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-08474-4
Online ISBN: 978-3-662-03811-6
eBook Packages: Springer Book Archive