23 #ifndef MLIR_ANALYSIS_DATAFLOW_LIVENESSANALYSIS_H
24 #define MLIR_ANALYSIS_DATAFLOW_LIVENESSANALYSIS_H
60 void print(raw_ostream &os)
const override;
#define MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CLASS_NAME)
The general data-flow analysis solver.
This class represents an operand of an operation.
Operation is the basic unit of execution within MLIR.
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
This class represents an abstract lattice.
AbstractSparseLattice(Value value)
Lattices can only be created for values.
An analysis that, by going backwards along the dataflow graph, annotates each value with a boolean st...
void setToExitState(Liveness *lattice) override
Set the given lattice element(s) at control flow exit point(s).
void visitBranchOperand(OpOperand &operand) override
void visitCallOperand(OpOperand &operand) override
LogicalResult visitOperation(Operation *op, ArrayRef< Liveness * > operands, ArrayRef< const Liveness * > results) override
For every value, liveness analysis determines whether or not it is "live".
A sparse (backward) data-flow analysis for propagating SSA value lattices backwards across the IR by ...
SparseBackwardDataFlowAnalysis(DataFlowSolver &solver, SymbolTableCollection &symbolTable)
ChangeResult
A result type used to indicate if a change happened.
This lattice represents, for a given value, whether or not it is "live".
void print(raw_ostream &os) const override
Print the contents of the analysis state.
ChangeResult meet(const AbstractSparseLattice &other) override
Meet (intersect) the information in this lattice with 'rhs'.
Runs liveness analysis on the IR defined by op.
RunLivenessAnalysis(Operation *op)
const Liveness * getLiveness(Value val)