Abstract framework for flow-based optimizations.
This package defines abstractions and solvers for finding fixed point of
lattice-based flow functions over arbitrary graphs. It also composes analyses
with transformation as described in "Composing Dataflow Analyses and
Transformations" paper. This paper is highly recommended to read before
diving into framework, since we borrow lots of terminology and algorithms from
there.
The framework can be used for both inter- and intra- procedural analyses such
as:
- constant propagation
- copy propagation
- unreachable code elimination
- liveness analysis
- null analysis
- side effects analysis
- possible exceptions
and many others.
If you are new to the framework, consider starting in the following order:
{@link Graph}, {@link Analysis}, {@link AnalysisFollowedByTransformation},
{@link CombinedIntegratedAnalysis}, {@link AnalysisSolver}.
References
- Flemming Nielson, Hanne Riis Nielson, Chris Hankin. Principles of Program
Analysis
- Steven Muchnick. Advanced Compiler Design and Implementation.
- Sorin Lerner, David Grove, Craig Chamber. Composing Dataflow Analyses and
Transformations.