forked from OSchip/llvm-project
Converting some for loops to use range-based for loops. No functional changes intended.
llvm-svn: 208810
This commit is contained in:
parent
2d6c023576
commit
9ee54d119c
|
@ -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<VarDecl>(*I)) {
|
||||
Expr *E = VD->getInit();
|
||||
for (const auto *D : DGrp) {
|
||||
if (const auto *VD = dyn_cast_or_null<VarDecl>(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<VarDecl>(D)) {
|
||||
Expr *E = VD->getInit();
|
||||
// handle constructors that involve temporaries
|
||||
|
|
Loading…
Reference in New Issue