Provides the classes for performing Data-Flow Analysis on a number of Intermediate Representations.
The purpose of data-flow analysis is to provide global information about how a procedure (or a larger segment of a program) manipulates its data. For example, constant-propagation analysis seeks to determine whether all asssignments to a particular variable that may provide the value of that variable at some particular point necessarily give it the same constant value. If so, a use of the variable at that point can be replaced by the constant.

Muchnick, Steven S., Advanced Compiler Design & Implementation, pg. 217

The design of the DataFlow package implements data-flow analysis passes in terms of three parts: a flowgraph of nodes, a node-visitor to calculate flow functions defined according to a lattice, and a solver to find a maximum fixed point of the lattice.

Generally the nodes of an analysis will be BasicBlock objects, and the corresponding visitor will be an subclass of BasicBlockVisitor.

Related Documentation

For further information, see: @author John Whaley @author Felix Klock (pnkfelix@mit.edu)