14#ifndef LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_ANALYSES_POINTERFLOW_POINTERFLOW_H
15#define LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_ANALYSES_POINTERFLOW_POINTERFLOW_H
24using EdgeSet = std::map<EntityPointerLevel, EntityPointerLevelSet>;
30 friend llvm::iterator_range<EdgeSet::const_iterator>
33 explicit PointerFlowEntitySummary(
EdgeSet Edges) : Edges(
std::move(Edges)) {}
36 static constexpr llvm::StringLiteral
Name =
"PointerFlow";
43 return Edges ==
Other.Edges;
46 bool empty()
const {
return Edges.empty(); }
Base class for analysis-specific summary data.
bool operator==(const PointerFlowEntitySummary &Other) const
friend llvm::iterator_range< EdgeSet::const_iterator > getEdges(const PointerFlowEntitySummary &)
SummaryName getSummaryName() const override
static constexpr llvm::StringLiteral Name
friend PointerFlowEntitySummary buildPointerFlowEntitySummary(EdgeSet Edges)
bool operator==(const EdgeSet &Other) const
static SummaryName summaryName()
Uniquely identifies an analysis summary.
std::map< EntityPointerLevel, EntityPointerLevelSet > EdgeSet
Maps each LHS pointer (source / assignee) to the set of RHS pointers (destinations / assigned values)...
@ Other
Other implicit parameter.