225{
226
228
229
230
231
234 {
237 if (
const CallICFGNode* cs = SVFUtil::dyn_cast<CallICFGNode>(*it))
240 }
242
243
244
245
248 for (
const auto&
item : *callGraph)
249 {
252 for (
auto bbIt : *fun)
254 {
256 for (
const SVFStmt* stmt : svfIr->getSVFStmtList(node))
257 {
259 bool isStore;
260 if (
const LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(stmt))
261 {
263 isStore = false;
264 }
265 else if (
const StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(stmt))
266 {
268 isStore = true;
269 }
270 else continue;
282 }
283 }
284 }
285
286
287
288
290 {
292 {
293 bool isStore, locked;
294 size_t rep;
296 };
298 {
300 bool isStore;
303
305 {
306 if (tid != other.tid)
307 return tid < other.tid;
308 if (isStore != other.isStore)
309 return isStore < other.isStore;
311 return true;
313 return false;
315 }
316 };
317 std::vector<RaceClass>
classes;
320 {
325 {
328 }
329 else
331 }
334 {
341
342
344 {
347 continue;
354 }
355 else
356 {
358
359
365
373 }
374 }
375 }
376
378 {
381 }
383}
for(i=0;a &&(i<(size_t) count);i++)
const PointsTo & getPts(NodeID id) override
bool hasBasicBlock() const
bool isProtectedByCommonLock(const ICFGNode *i1, const ICFGNode *i2)
const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)
Get interleaving thread for statement inst.
bool hasThreadStmtSet(const ICFGNode *inst) const
static bool occurrencesRace(MHP *mhp, const RaceOccurrence &first, const RaceOccurrence &second)
Helpers for the equivalence-class race detector.
static PointsTo getGlobalObjectVariables(SVFIR *svfIr)
Escape/points-to helpers for the shared detector.
static void commitRacePair(std::set< RacePair > &out, const RaceOccurrence &first, const RaceOccurrence &second)
static PointsTo getPointsToClosure(AndersenBase *pta, const PointsTo &pts)
CallSiteSet::const_iterator forksitesEnd() const
CallSiteSet::const_iterator forksitesBegin() const
Fork sites iterators.
ThreadAPI * getThreadAPI() const
Thread API.
bool cmpNodeBS(const NodeBS &lpts, const NodeBS &rpts)
IntervalValue operator<(const IntervalValue &lhs, const IntervalValue &rhs)