69 virtual const std::string
toString()
const;
100 virtual const std::string
toString()
const;
195 return it->second.begin();
201 return it->second.end();
215 return it->second.begin();
221 return it->second.end();
229 if((*jit)->getDstNode() ==
routine)
380 JoinEdgeSet::const_iterator
jit =
it->second.find(&
joinEdge);
381 if(
jit!=
it->second.end())
CallInstToCallGraphEdgesMap callinstToCallGraphEdgesMap
Map a call instruction to its corresponding call edges.
OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy
Edge kind.
GenericNode< CallGraphNode, HareParForEdge >::GEdgeSetTy ParForEdgeSet
HareParForEdge(CallGraphNode *s, CallGraphNode *d, CallSiteID csId)
Constructor.
virtual ~HareParForEdge()
Destructor.
static bool classof(const HareParForEdge *)
ClassOf.
static bool classof(const CallGraphEdge *edge)
bool isForksite(const CallICFGNode *csInst)
CallSiteSet::const_iterator forksitesEnd() const
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
bool hasThreadJoinEdge(const CallICFGNode *cs) const
Get call graph edge via call instruction.
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 addIndirectForkEdge(const CallICFGNode *cs, const FunObjVar *callee)
bool hasThreadForkEdge(const CallICFGNode *cs) const
Get call graph edge via call instruction.
CallSiteSet::const_iterator joinsitesBegin() const
Join sites iterators.
ThreadJoinEdge * hasThreadJoinEdge(const CallICFGNode *call, CallGraphNode *joinFunNode, CallGraphNode *threadRoutineFunNode, CallSiteID csId) const
has thread join edge
ThreadForkEdge::ForkEdgeSet ForkEdgeSet
u32_t getNumOfForksite() const
Num of fork/join sites.
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)
static bool classof(const CallGraph *g)
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.
void getJoinSites(const CallGraphNode *routine, InstSet &csSet)
JoinEdgeSet::const_iterator getJoinEdgeBegin(const CallICFGNode *cs) const
static bool classof(const ThreadForkEdge *)
ClassOf.
virtual ~ThreadForkEdge()
Destructor.
ThreadForkEdge(CallGraphNode *s, CallGraphNode *d, CallSiteID csId)
Constructor.
static bool classof(const CallGraphEdge *edge)
GenericNode< CallGraphNode, ThreadForkEdge >::GEdgeSetTy ForkEdgeSet
virtual const std::string toString() const
virtual ~ThreadJoinEdge()
Destructor.
static bool classof(const ThreadJoinEdge *)
virtual const std::string toString() const
static bool classof(const CallGraphEdge *edge)
ThreadJoinEdge(CallGraphNode *s, CallGraphNode *d, CallSiteID csId)
Constructor.
GenericNode< CallGraphNode, ThreadJoinEdge >::GEdgeSetTy JoinEdgeSet
llvm::IRBuilder IRBuilder