Lecture 13: Data-flow analysis. Heap. Advanced Procedures
Continuing Lecture 12a
Drawing partial orders and lattices
Source code:
Lattice height
From information on variable, to information on the program:
How the height changes
Precise sets of all states (not practical):
Height of concrete analysis lattice
Example of abstraction: signs
Height of sign analysis lattice. Height of range analysis lattice.
Recall:
Work list algorithm idea
Correctness of Data-Flow Analysis
Initialization Analysis
Back to Live Variable Analysis
Limitations
Full Employment Theorem for Compiler Writers (only mentioned)
References
- Lecture notes on static analysis by Michael Schwartzbach, especially chapters 4,5,6
- Compiler Construction by Niklaus Wirth, chapters 9,10, 11
- Tiger book, Chapters 7-11, 17
- Abstract Interpretation in a Nutshell by Patrick Cousot (also a course at MIT)