From 42f9a8a7f9de5689a60e5d0280176e5d7518b083 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Wed, 14 May 2014 15:01:43 +0000 Subject: Replacing some manual iterations with standard algorithms. No functional changes intended. llvm-svn: 208783 --- clang/lib/Analysis/ThreadSafety.cpp | 51 ++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 29 deletions(-) (limited to 'clang/lib/Analysis/ThreadSafety.cpp') diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp index 752e5130bfa..c9e924460cf 100644 --- a/clang/lib/Analysis/ThreadSafety.cpp +++ b/clang/lib/Analysis/ThreadSafety.cpp @@ -849,44 +849,37 @@ public: return false; } - // Returns an iterator iterator findLockIter(FactManager &FM, const SExpr &M) { - for (iterator I = begin(), E = end(); I != E; ++I) { - const SExpr &Exp = FM[*I].MutID; - if (Exp.matches(M)) - return I; - } - return end(); + return std::find_if(begin(), end(), [&FM, &M](FactID ID) { + return FM[ID].MutID.matches(M); + }); } - LockData* findLock(FactManager &FM, const SExpr &M) const { - for (const_iterator I = begin(), E = end(); I != E; ++I) { - const SExpr &Exp = FM[*I].MutID; - if (Exp.matches(M)) - return &FM[*I].LDat; - } - return 0; - } + LockData *findLock(FactManager &FM, const SExpr &M) const { + auto I = std::find_if(begin(), end(), [&FM, &M](FactID ID) { + return FM[ID].MutID.matches(M); + }); - LockData* findLockUniv(FactManager &FM, const SExpr &M) const { - for (const_iterator I = begin(), E = end(); I != E; ++I) { - const SExpr &Exp = FM[*I].MutID; - if (Exp.matches(M) || Exp.isUniversal()) - return &FM[*I].LDat; - } - return 0; + return I != end() ? &FM[*I].LDat : nullptr; } - FactEntry* findPartialMatch(FactManager &FM, const SExpr &M) const { - for (const_iterator I=begin(), E=end(); I != E; ++I) { - const SExpr& Exp = FM[*I].MutID; - if (Exp.partiallyMatches(M)) return &FM[*I]; - } - return 0; + LockData *findLockUniv(FactManager &FM, const SExpr &M) const { + auto I = std::find_if(begin(), end(), [&FM, &M](FactID ID) -> bool { + const SExpr &Expr = FM[ID].MutID; + return Expr.isUniversal() || Expr.matches(M); + }); + + return I != end() ? &FM[*I].LDat : nullptr; } -}; + FactEntry *findPartialMatch(FactManager &FM, const SExpr &M) const { + auto I = std::find_if(begin(), end(), [&FM, &M](FactID ID) { + return FM[ID].MutID.partiallyMatches(M); + }); + return I != end() ? &FM[*I] : nullptr; + } +}; /// A Lockset maps each SExpr (defined above) to information about how it has /// been locked. -- cgit v1.2.3