14#ifndef LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_ANALYSES_POINTERFLOW_POINTERFLOW_H
15#define LLVM_CLANG_SCALABLESTATICANALYSISFRAMEWORK_ANALYSES_POINTERFLOW_POINTERFLOW_H
23using EdgeSet = std::map<EntityPointerLevel, EntityPointerLevelSet>;
29 friend llvm::iterator_range<EdgeSet::const_iterator>
32 explicit PointerFlowEntitySummary(
EdgeSet Edges) : Edges(
std::move(Edges)) {}
35 static constexpr llvm::StringLiteral
Name =
"PointerFlow";
42 return Edges ==
Other.Edges;
45 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 source node to its destination nodes:
@ Other
Other implicit parameter.