From 36981b17ed939300f6f8fc2355a255f711fcef71 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Thu, 20 Oct 2011 21:14:49 +0000 Subject: Vendor import of clang release_30 branch r142614: http://llvm.org/svn/llvm-project/cfe/branches/release_30@142614 --- lib/ARCMigrate/TransAutoreleasePool.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'lib/ARCMigrate/TransAutoreleasePool.cpp') diff --git a/lib/ARCMigrate/TransAutoreleasePool.cpp b/lib/ARCMigrate/TransAutoreleasePool.cpp index 5b8485432c52f..08561f97f9623 100644 --- a/lib/ARCMigrate/TransAutoreleasePool.cpp +++ b/lib/ARCMigrate/TransAutoreleasePool.cpp @@ -36,16 +36,15 @@ using namespace clang; using namespace arcmt; using namespace trans; -using llvm::StringRef; namespace { class ReleaseCollector : public RecursiveASTVisitor { Decl *Dcl; - llvm::SmallVectorImpl &Releases; + SmallVectorImpl &Releases; public: - ReleaseCollector(Decl *D, llvm::SmallVectorImpl &releases) + ReleaseCollector(Decl *D, SmallVectorImpl &releases) : Dcl(D), Releases(releases) { } bool VisitObjCMessageExpr(ObjCMessageExpr *E) { @@ -82,7 +81,7 @@ public: } ~AutoreleasePoolRewriter() { - llvm::SmallVector VarsToHandle; + SmallVector VarsToHandle; for (std::map::iterator I = PoolVars.begin(), E = PoolVars.end(); I != E; ++I) { @@ -92,7 +91,7 @@ public: // Check that we can handle/rewrite all references of the pool. clearRefsIn(info.Dcl, info.Refs); - for (llvm::SmallVectorImpl::iterator + for (SmallVectorImpl::iterator scpI = info.Scopes.begin(), scpE = info.Scopes.end(); scpI != scpE; ++scpI) { PoolScope &scope = *scpI; @@ -116,7 +115,7 @@ public: Pass.TA.removeStmt(info.Dcl); // Add "@autoreleasepool { }" - for (llvm::SmallVectorImpl::iterator + for (SmallVectorImpl::iterator scpI = info.Scopes.begin(), scpE = info.Scopes.end(); scpI != scpE; ++scpI) { PoolScope &scope = *scpI; @@ -147,11 +146,11 @@ public: } // Remove rest of pool var references. - for (llvm::SmallVectorImpl::iterator + for (SmallVectorImpl::iterator scpI = info.Scopes.begin(), scpE = info.Scopes.end(); scpI != scpE; ++scpI) { PoolScope &scope = *scpI; - for (llvm::SmallVectorImpl::iterator + for (SmallVectorImpl::iterator relI = scope.Releases.begin(), relE = scope.Releases.end(); relI != relE; ++relI) { clearUnavailableDiags(*relI); @@ -162,7 +161,7 @@ public: } bool VisitCompoundStmt(CompoundStmt *S) { - llvm::SmallVector Scopes; + SmallVector Scopes; for (Stmt::child_iterator I = S->body_begin(), E = S->body_end(); I != E; ++I) { @@ -228,7 +227,7 @@ private: Stmt::child_iterator Begin; Stmt::child_iterator End; bool IsFollowedBySimpleReturnStmt; - llvm::SmallVector Releases; + SmallVector Releases; PoolScope() : PoolVar(0), CompoundParent(0), Begin(), End(), IsFollowedBySimpleReturnStmt(false) { } @@ -287,6 +286,9 @@ private: } bool isInScope(SourceLocation loc) { + if (loc.isInvalid()) + return false; + SourceManager &SM = Ctx.getSourceManager(); if (SM.isBeforeInTranslationUnit(loc, ScopeRange.getBegin())) return false; @@ -420,7 +422,7 @@ private: struct PoolVarInfo { DeclStmt *Dcl; ExprSet Refs; - llvm::SmallVector Scopes; + SmallVector Scopes; PoolVarInfo() : Dcl(0) { } }; -- cgit v1.2.3