MLIR
21.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 510 of file DataFlowFramework.h.
|
virtualdefault |
|
inline |
Create the analysis state on the given lattice anchor.
Definition at line 515 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 41 of file DataFlowFramework.cpp.
References anchor, and DATAFLOW_DEBUG.
void AnalysisState::dump | ( | ) | const |
Definition at line 54 of file DataFlowFramework.cpp.
References print().
|
inline |
Returns the lattice anchor this state is located at.
Definition at line 518 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 534 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 560 of file DataFlowFramework.h.
|
protected |
The lattice anchor to which the state belongs.
Definition at line 540 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().