MLIR
20.0.0git
|
Base class for generic analysis states. More...
#include "mlir/Analysis/DataFlowFramework.h"
Public Member Functions | |
virtual | ~AnalysisState () |
AnalysisState (LatticeAnchor anchor) | |
Create the analysis state on the given lattice anchor. More... | |
LatticeAnchor | getAnchor () const |
Returns the lattice anchor this state is located at. More... | |
virtual void | print (raw_ostream &os) const =0 |
Print the contents of the analysis state. More... | |
LLVM_DUMP_METHOD void | dump () const |
void | addDependency (ProgramPoint *point, DataFlowAnalysis *analysis) |
Add a dependency to this analysis state on a lattice anchor and an analysis. More... | |
Protected Member Functions | |
virtual void | onUpdate (DataFlowSolver *solver) const |
This function is called by the solver when the analysis state is updated to enqueue more work items. More... | |
Protected Attributes | |
LatticeAnchor | anchor |
The lattice anchor to which the state belongs. More... | |
Friends | |
class | DataFlowSolver |
Allow the framework to access the dependents. More... | |
Base class for generic analysis states.
Analysis states contain data-flow information that are attached to lattice anchors and which evolve as the analysis iterates.
This class places no restrictions on the semantics of analysis states beyond these requirements.
Definition at line 447 of file DataFlowFramework.h.
|
virtualdefault |
|
inline |
Create the analysis state on the given lattice anchor.
Definition at line 452 of file DataFlowFramework.h.
void AnalysisState::addDependency | ( | ProgramPoint * | point, |
DataFlowAnalysis * | analysis | ||
) |
Add a dependency to this analysis state on a lattice anchor and an analysis.
If this state is updated, the analysis will be invoked on the given lattice anchor again (in onUpdate()).
Definition at line 40 of file DataFlowFramework.cpp.
References anchor, and DATAFLOW_DEBUG.
void AnalysisState::dump | ( | ) | const |
Definition at line 53 of file DataFlowFramework.cpp.
References print().
|
inline |
Returns the lattice anchor this state is located at.
Definition at line 455 of file DataFlowFramework.h.
References anchor.
Referenced by mlir::dataflow::AbstractSparseLattice::getAnchor().
|
inlineprotectedvirtual |
This function is called by the solver when the analysis state is updated to enqueue more work items.
For example, if a state tracks dependents through the IR (e.g. use-def chains), this function can be implemented to push those dependents on the worklist.
Reimplemented in mlir::dataflow::AbstractSparseLattice, mlir::dataflow::IntegerValueRangeLattice, and mlir::dataflow::Executable.
Definition at line 471 of file DataFlowFramework.h.
References mlir::DataFlowSolver::enqueue().
Referenced by mlir::dataflow::Executable::onUpdate(), and mlir::dataflow::AbstractSparseLattice::onUpdate().
|
pure virtual |
Print the contents of the analysis state.
Implemented in mlir::dataflow::Lattice< ValueT >, mlir::dataflow::Lattice< IntegerValueRange >, mlir::dataflow::Liveness, mlir::dataflow::PredecessorState, and mlir::dataflow::Executable.
Referenced by dump().
|
friend |
Allow the framework to access the dependents.
Definition at line 497 of file DataFlowFramework.h.
|
protected |
The lattice anchor to which the state belongs.
Definition at line 477 of file DataFlowFramework.h.
Referenced by addDependency(), mlir::dataflow::Lattice< ValueT >::getAnchor(), getAnchor(), mlir::dataflow::Executable::onUpdate(), mlir::dataflow::IntegerValueRangeLattice::onUpdate(), and mlir::dataflow::AbstractSparseLattice::onUpdate().