blob: 419555bc9ef0479bc1f1d1d69af346cbb95dc4b3 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
Copyright 2008 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.
-->
</head>
<body bgcolor="white">
<p>
Abstract framework for flow-based optimizations.
</p>
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:
<ul>
<li>constant propagation</li>
<li>copy propagation</li>
<li>unreachable code elimination</li>
<li>liveness analysis</li>
<li>null analysis</li>
<li>side effects analysis</li>
<li>possible exceptions</li>
</ul>
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}.
<h2>References</h2>
<ul>
<li>Flemming Nielson, Hanne Riis Nielson, Chris Hankin. Principles of Program
Analysis</li>
<li>Steven Muchnick. Advanced Compiler Design and Implementation.</li>
<li>Sorin Lerner, David Grove, Craig Chamber. Composing Dataflow Analyses and
Transformations.</li>
</ul>
</body>
</html>