|
Enzyme main
|
#include "MLIR/Analysis/DataFlowLattice.h"

Public Types | |
| enum class | State { Undefined , Defined , Unknown } |
Public Member Functions | |
| SetLattice () | |
| SetLattice (ValueT single) | |
| DenseSet< ValueT > & | getElements () |
| const DenseSet< ValueT > & | getElements () const |
| bool | isUnknown () const |
| bool | isUndefined () const |
| ChangeResult | join (const SetLattice< ValueT > &other) |
| ChangeResult | insert (const DenseSet< ValueT > &newElements) |
| ChangeResult | markUnknown () |
| bool | isCanonical () const |
| Returns true if this set is in the canonical form, i.e. | |
| bool | operator== (const SetLattice< ValueT > &other) const |
| LLVM_DUMP_METHOD void | print (llvm::raw_ostream &os) const |
| ChangeResult | foreachElement (function_ref< ChangeResult(ValueT, State)> callback) const |
Static Public Member Functions | |
| static const SetLattice< ValueT > & | getEmpty () |
| Returns an instance of SetLattice known not to have any elements. | |
| static const SetLattice< ValueT > & | getUndefined () |
| Returns an instance of SetLattice in "undefined" state, i.e. | |
| static const SetLattice< ValueT > & | getUnknown () |
| Returns an instance of SetLattice for the "unknown" class. | |
Definition at line 49 of file DataFlowLattice.h.
|
strong |
| Enumerator | |
|---|---|
| Undefined | Has not been analyzed yet (lattice bottom). |
| Defined | Has specific elements. |
| Unknown | Analyzed and may contain anything (lattice top). |
Definition at line 51 of file DataFlowLattice.h.
|
inline |
Definition at line 57 of file DataFlowLattice.h.
|
inline |
Definition at line 59 of file DataFlowLattice.h.
|
inline |
Definition at line 151 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Defined.
Referenced by mlir::enzyme::PointsToSets::addSetsFrom(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::insert(), mlir::enzyme::PointsToSets::markAllExceptPointToUnknown(), mlir::enzyme::PointsToSets::markPointToUnknown(), and mlir::enzyme::AliasAnalysis::visitExternalCall().
|
inline |
Definition at line 62 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Defined.
Referenced by mlir::enzyme::AliasClassLattice::getAliasClasses(), mlir::enzyme::SetLattice< ValueT >::getElements(), mlir::enzyme::BackwardOriginsLattice::getOrigins(), mlir::enzyme::ForwardOriginsLattice::getOrigins(), mlir::enzyme::PointsToSets::markAllExceptPointToUnknown(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Definition at line 67 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::getElements().
|
inlinestatic |
Returns an instance of SetLattice known not to have any elements.
This is different from "undefined" and "unknown". The instance is not a classical singleton.
Definition at line 118 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Defined.
|
inlinestatic |
Returns an instance of SetLattice in "undefined" state, i.e.
without a set of elements. This is different from empty set, which indicates that the set is known not to contain any elements. The instance is not a classical singleton, there are other ways of obtaining it.
Definition at line 127 of file DataFlowLattice.h.
Referenced by mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::lookup().
|
inlinestatic |
Returns an instance of SetLattice for the "unknown" class.
The instance is not a classical singleton, there are other ways of obtaining an "unknown" alias set.
Definition at line 132 of file DataFlowLattice.h.
|
inline |
Definition at line 88 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::isUnknown().
Referenced by deserializeAliasSummary(), deserializeReturnOrigins(), mlir::enzyme::SetLattice< ValueT >::join(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Returns true if this set is in the canonical form, i.e.
either the state is State::Defined or the explicit list of classes is empty, but not both.
Definition at line 111 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Defined.
Referenced by mlir::enzyme::SetLattice< ValueT >::operator==().
|
inline |
Definition at line 72 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Undefined.
Referenced by mlir::enzyme::PointsToSets::addSetsFrom(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::insert(), mlir::enzyme::SetLattice< ValueT >::join(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::joinPotentiallyMissing(), mlir::enzyme::PointsToSets::markAllExceptPointToUnknown(), mlir::enzyme::PointsToSets::markPointToUnknown(), mlir::enzyme::SetLattice< ValueT >::print(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Definition at line 71 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::Unknown.
Referenced by mlir::enzyme::PointsToSets::addSetsFrom(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::insert(), mlir::enzyme::SetLattice< ValueT >::insert(), mlir::enzyme::SetLattice< ValueT >::join(), mlir::enzyme::PointsToSets::markAllExceptPointToUnknown(), mlir::enzyme::PointsToSets::markPointToUnknown(), mlir::enzyme::SetLattice< ValueT >::markUnknown(), mlir::enzyme::SetLattice< ValueT >::print(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Definition at line 74 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::insert(), mlir::enzyme::SetLattice< ValueT >::isUndefined(), mlir::enzyme::SetLattice< ValueT >::isUnknown(), and mlir::enzyme::SetLattice< ValueT >::Unknown.
Referenced by mlir::enzyme::BackwardOriginsLattice::meet(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Definition at line 99 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::isUnknown(), and mlir::enzyme::SetLattice< ValueT >::Unknown.
Referenced by deserializeReturnOrigins(), and mlir::enzyme::PointsToPointerAnalysis::visitCallControlFlowTransfer().
|
inline |
Definition at line 134 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::isCanonical().
|
inline |
Definition at line 139 of file DataFlowLattice.h.
References mlir::enzyme::SetLattice< ValueT >::isUndefined(), mlir::enzyme::SetLattice< ValueT >::isUnknown(), mlir::enzyme::undefinedSetString, and mlir::enzyme::unknownSetString.