74 rawstr <<
"ThreadForkEdge ";
114 rawstr <<
"ThreadJoinEdge ";
214 return it->second.begin();
220 return it->second.end();
234 return it->second.begin();
240 return it->second.end();
248 if((*jit)->getDstNode() ==
routine)
399 JoinEdgeSet::const_iterator
jit =
it->second.find(&
joinEdge);
400 if(
jit!=
it->second.end())
NodeType * getSrcNode() const
NodeType * getDstNode() const
NodeID getSrcID() const
get methods of the components
OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy
Edge kind.
HareParForEdge(PTACallGraphNode *s, PTACallGraphNode *d, CallSiteID csId)
Constructor.
virtual ~HareParForEdge()
Destructor.
GenericNode< PTACallGraphNode, HareParForEdge >::GEdgeSetTy ParForEdgeSet
static bool classof(const HareParForEdge *)
ClassOf.
static bool classof(const PTACallGraphEdge *edge)
CallSiteID getCallSiteID() const
Get direct and indirect calls.
CallInstToCallGraphEdgesMap callinstToCallGraphEdgesMap
Map a call instruction to its corresponding call edges.
bool isForksite(const CallICFGNode *csInst)
CallSiteSet::const_iterator forksitesEnd() const
bool addIndirectForkEdge(const CallICFGNode *cs, const SVFFunction *callee)
CallSiteSet::const_iterator parForSitesBegin() const
hare_parallel_for sites iterators
bool addDirectForkEdge(const CallICFGNode *cs)
Add direct/indirect thread fork edges.
Set< CallSiteSet * > CtxSet
CallSiteSet::const_iterator forksitesBegin() const
Fork sites iterators.
CallInstToParForEdgesMap callinstToHareParForEdgesMap
Map a call instruction to its corresponding hare_parallel_for edges.
void updateJoinEdge(PointerAnalysis *pta)
Update join edge using pointer analysis results.
static bool classof(const ThreadCallGraph *)
ClassOf.
CallSiteSet::const_iterator joinsitesEnd() const
CallSiteSet::const_iterator parForSitesEnd() const
bool addForksite(const CallICFGNode *cs)
Add fork sites which directly or indirectly create a thread.
Set< const CallICFGNode * > InstSet
static bool classof(const PTACallGraph *g)
bool hasThreadJoinEdge(const CallICFGNode *cs) const
Get call graph edge via call instruction.
ThreadJoinEdge * hasThreadJoinEdge(const CallICFGNode *call, PTACallGraphNode *joinFunNode, PTACallGraphNode *threadRoutineFunNode, CallSiteID csId) const
has thread join edge
bool addParForSite(const CallICFGNode *cs)
CallSiteSet forksites
all thread fork sites
CallSiteSet parForSites
all parallel for sites
void addThreadJoinEdgeSetMap(const CallICFGNode *cs, ThreadJoinEdge *edge)
map call instruction to its PTACallGraphEdge map
u32_t getNumOfJoinsite() const
bool addJoinsite(const CallICFGNode *cs)
virtual ~ThreadCallGraph()
Destructor.
CallInstToForkEdgesMap callinstToThreadForkEdgesMap
Map a call instruction to its corresponding fork edges.
JoinEdgeSet::const_iterator getJoinEdgeEnd(const CallICFGNode *cs) const
ForkEdgeSet::const_iterator getForkEdgeEnd(const CallICFGNode *cs) const
ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode *cs) const
void addDirectJoinEdge(const CallICFGNode *cs, const CallSiteSet &forksite)
Add thread join edges.
bool hasThreadForkEdge(const CallICFGNode *cs) const
Get call graph edge via call instruction.
CallSiteSet::const_iterator joinsitesBegin() const
Join sites iterators.
ThreadForkEdge::ForkEdgeSet ForkEdgeSet
u32_t getNumOfForksite() const
Num of fork/join sites.
void getJoinSites(const PTACallGraphNode *routine, InstSet &csSet)
ThreadAPI * getThreadAPI() const
Thread API.
ThreadJoinEdge::JoinEdgeSet JoinEdgeSet
CallSiteSet joinsites
all thread fork sites
void addHareParForEdgeSetMap(const CallICFGNode *cs, HareParForEdge *edge)
map call instruction to its PTACallGraphEdge map
void addThreadForkEdgeSetMap(const CallICFGNode *cs, ThreadForkEdge *edge)
map call instruction to its PTACallGraphEdge map
Map< const CallICFGNode *, JoinEdgeSet > CallInstToJoinEdgesMap
Map< const CallICFGNode *, ParForEdgeSet > CallInstToParForEdgesMap
HareParForEdge::ParForEdgeSet ParForEdgeSet
bool isJoinsite(const CallICFGNode *csInst)
ThreadCallGraph(ThreadCallGraph &cg)=delete
u32_t getNumOfParForSite() const
bool isParForSite(const CallICFGNode *csInst)
void updateCallGraph(PointerAnalysis *pta)
Update call graph using pointer results.
Map< const CallICFGNode *, ForkEdgeSet > CallInstToForkEdgesMap
ThreadAPI * tdAPI
Thread API.
CallInstToJoinEdgesMap callinstToThreadJoinEdgesMap
Map a call instruction to its corresponding join edges.
JoinEdgeSet::const_iterator getJoinEdgeBegin(const CallICFGNode *cs) const
static bool classof(const ThreadForkEdge *)
ClassOf.
virtual ~ThreadForkEdge()
Destructor.
virtual const std::string toString() const
GenericNode< PTACallGraphNode, ThreadForkEdge >::GEdgeSetTy ForkEdgeSet
static bool classof(const PTACallGraphEdge *edge)
ThreadForkEdge(PTACallGraphNode *s, PTACallGraphNode *d, CallSiteID csId)
Constructor.
virtual ~ThreadJoinEdge()
Destructor.
static bool classof(const ThreadJoinEdge *)
virtual const std::string toString() const
GenericNode< PTACallGraphNode, ThreadJoinEdge >::GEdgeSetTy JoinEdgeSet
ThreadJoinEdge(PTACallGraphNode *s, PTACallGraphNode *d, CallSiteID csId)
Constructor.
static bool classof(const PTACallGraphEdge *edge)
llvm::IRBuilder IRBuilder