const ValVar * getForkedFun(const CallICFGNode *inst) const
 
bool isTDFork(const CallICFGNode *inst) const
Return true if this call create a new thread.
 
static ThreadAPI * tdAPI
Static reference.
 
@ TD_COND_SIGNAL
wait a condition
 
@ TD_DETACH
wait for a thread to join
 
@ TD_CONDVAR_INI
initial a mutex variable
 
@ HARE_PAR_FOR
Barrier wait.
 
@ TD_BAR_INIT
initial a mutex variable
 
@ TD_ACQUIRE
detach a thread directly instead wait for it to join
 
@ TD_MUTEX_DESTROY
initial a mutex variable
 
@ TD_CONDVAR_DESTROY
initial a mutex variable
 
@ TD_JOIN
create a new thread
 
@ TD_BAR_WAIT
Barrier init.
 
@ TD_COND_BROADCAST
signal a condition
 
@ TD_COND_WAIT
cancel a thread by another
 
@ TD_TRY_ACQUIRE
acquire a lock
 
@ TD_MUTEX_INI
broadcast a condition
 
@ TD_RELEASE
try to acquire a lock
 
@ TD_CANCEL
exit/kill a thread
 
const ValVar * getForkedThread(const CallICFGNode *inst) const
Return arguments/attributes of pthread_create / hare_parallel_for.
 
TDAPIMap tdAPIMap
API map, from a string to threadAPI type.
 
bool isTDJoin(const CallICFGNode *inst) const
Return true if this call wait for a worker thread.
 
void init()
Initialize the map.
 
bool isTDRelease(const CallICFGNode *inst) const
Return true if this call release a lock.
 
const SVFVar * getFormalParmOfForkedFun(const FunObjVar *F) const
Return the formal parm of forked function (the first arg in pthread)
 
const SVFVar * getLockVal(const ICFGNode *inst) const
Return lock value.
 
bool isTDExit(const CallICFGNode *inst) const
Return true if this call exits/terminate a thread.
 
const SVFVar * getRetParmAtJoinedSite(const CallICFGNode *inst) const
 
void statInit(Map< std::string, u32_t > &tdAPIStatMap)
 
const SVFVar * getJoinedThread(const CallICFGNode *inst) const
Return arguments/attributes of pthread_join.
 
Map< std::string, TD_TYPE > TDAPIMap
 
const ValVar * getActualParmAtForkSite(const CallICFGNode *inst) const
 
static ThreadAPI * getThreadAPI()
Return a static reference.
 
bool isTDBarWait(const CallICFGNode *inst) const
Return true if this call waits for a barrier.
 
bool isTDAcquire(const CallICFGNode *inst) const
Return true if this call acquire a lock.
 
TD_TYPE getType(const FunObjVar *F) const
Get the function type if it is a threadAPI function.
 
llvm::IRBuilder IRBuilder