From 9ee54d119c132f1d2dfe64f957c48c863783f41c Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Wed, 14 May 2014 20:42:13 +0000 Subject: [PATCH] Converting some for loops to use range-based for loops. No functional changes intended. llvm-svn: 208810 --- clang/lib/Analysis/ThreadSafety.cpp | 37 +++++++++++------------------ 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp index 3c9a42e8ce32..58e6070c00c4 100644 --- a/clang/lib/Analysis/ThreadSafety.cpp +++ b/clang/lib/Analysis/ThreadSafety.cpp @@ -1077,7 +1077,7 @@ protected: // Adds a new definition to the given context, and returns a new context. // This method should be called when declaring a new variable. - Context addDefinition(const NamedDecl *D, Expr *Exp, Context Ctx) { + Context addDefinition(const NamedDecl *D, const Expr *Exp, Context Ctx) { assert(!Ctx.contains(D)); unsigned newID = VarDefinitions.size(); Context NewCtx = ContextFactory.add(Ctx, D, newID); @@ -1158,9 +1158,9 @@ public: void VarMapBuilder::VisitDeclStmt(DeclStmt *S) { bool modifiedCtx = false; DeclGroupRef DGrp = S->getDeclGroup(); - for (DeclGroupRef::iterator I = DGrp.begin(), E = DGrp.end(); I != E; ++I) { - if (VarDecl *VD = dyn_cast_or_null(*I)) { - Expr *E = VD->getInit(); + for (const auto *D : DGrp) { + if (const auto *VD = dyn_cast_or_null(D)) { + const Expr *E = VD->getInit(); // Add local variables with trivial type to the variable map QualType T = VD->getType(); @@ -1202,13 +1202,12 @@ void VarMapBuilder::VisitBinaryOperator(BinaryOperator *BO) { LocalVariableMap::Context LocalVariableMap::intersectContexts(Context C1, Context C2) { Context Result = C1; - for (Context::iterator I = C1.begin(), E = C1.end(); I != E; ++I) { - const NamedDecl *Dec = I.getKey(); - unsigned i1 = I.getData(); + for (const auto &P : C1) { + const NamedDecl *Dec = P.first; const unsigned *i2 = C2.lookup(Dec); if (!i2) // variable doesn't exist on second path Result = removeDefinition(Dec, Result); - else if (*i2 != i1) // variable exists, but has different definition + else if (*i2 != P.second) // variable exists, but has different definition Result = clearDefinition(Dec, Result); } return Result; @@ -1219,11 +1218,8 @@ LocalVariableMap::intersectContexts(Context C1, Context C2) { // (We use this for a naive implementation of SSA on loop back-edges.) LocalVariableMap::Context LocalVariableMap::createReferenceContext(Context C) { Context Result = getEmptyContext(); - for (Context::iterator I = C.begin(), E = C.end(); I != E; ++I) { - const NamedDecl *Dec = I.getKey(); - unsigned i = I.getData(); - Result = addReference(Dec, i, Result); - } + for (const auto &P : C) + Result = addReference(P.first, P.second, Result); return Result; } @@ -1231,13 +1227,12 @@ LocalVariableMap::Context LocalVariableMap::createReferenceContext(Context C) { // altering the VarDefinitions. C1 must be the result of an earlier call to // createReferenceContext. void LocalVariableMap::intersectBackEdge(Context C1, Context C2) { - for (Context::iterator I = C1.begin(), E = C1.end(); I != E; ++I) { - const NamedDecl *Dec = I.getKey(); - unsigned i1 = I.getData(); + for (const auto &P : C1) { + unsigned i1 = P.second; VarDefinition *VDef = &VarDefinitions[i1]; assert(VDef->isReference()); - const unsigned *i2 = C2.lookup(Dec); + const unsigned *i2 = C2.lookup(P.first); if (!i2 || (*i2 != i1)) VDef->Ref = 0; // Mark this variable as undefined } @@ -1766,9 +1761,7 @@ void ThreadSafetyAnalyzer::getEdgeLockset(FactSet& Result, MutexIDList SharedLocksToAdd; // If the condition is a call to a Trylock function, then grab the attributes - AttrVec &ArgAttrs = FunDecl->getAttrs(); - for (unsigned i = 0; i < ArgAttrs.size(); ++i) { - Attr *Attr = ArgAttrs[i]; + for (auto *Attr : FunDecl->getAttrs()) { switch (Attr->getKind()) { case attr::ExclusiveTrylockFunction: { ExclusiveTrylockFunctionAttr *A = @@ -2217,9 +2210,7 @@ void BuildLockset::VisitDeclStmt(DeclStmt *S) { // adjust the context LVarCtx = Analyzer->LocalVarMap.getNextContext(CtxIndex, S, LVarCtx); - DeclGroupRef DGrp = S->getDeclGroup(); - for (DeclGroupRef::iterator I = DGrp.begin(), E = DGrp.end(); I != E; ++I) { - Decl *D = *I; + for (auto *D : S->getDeclGroup()) { if (VarDecl *VD = dyn_cast_or_null(D)) { Expr *E = VD->getInit(); // handle constructors that involve temporaries