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 458 of file DataFlowFramework.h.
|
virtualdefault |
|
inline |
Create the analysis state on the given lattice anchor.
Definition at line 463 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 466 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 482 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 508 of file DataFlowFramework.h.
|
protected |
The lattice anchor to which the state belongs.
Definition at line 488 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().