summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2014-03-07 13:13:38 +0000
committerAaron Ballman <aaron@aaronballman.com>2014-03-07 13:13:38 +0000
commit7dce1a840cedee83c5f62dcb93b9a65b56823213 (patch)
tree115c345ebe81b68e3b6ce11c269b397720d5d187 /clang
parent690829696ca4c73a8cb1688761e9b1152a7d2254 (diff)
downloadbcm5719-llvm-7dce1a840cedee83c5f62dcb93b9a65b56823213.tar.gz
bcm5719-llvm-7dce1a840cedee83c5f62dcb93b9a65b56823213.zip
Fully reverting r203236 -- it seems the only bots that are happy are the MSVC bots.
llvm-svn: 203237
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/DataRecursiveASTVisitor.h4
-rw-r--r--clang/include/clang/AST/DeclBase.h18
-rw-r--r--clang/include/clang/AST/RecursiveASTVisitor.h4
-rw-r--r--clang/lib/AST/ASTDumper.cpp2
-rw-r--r--clang/lib/AST/Decl.cpp4
-rw-r--r--clang/lib/AST/DeclBase.cpp14
-rw-r--r--clang/lib/Sema/SemaCodeComplete.cpp11
-rw-r--r--clang/lib/Sema/SemaDecl.cpp15
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp41
-rw-r--r--clang/lib/Sema/SemaObjCProperty.cpp12
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp5
-rw-r--r--clang/tools/libclang/CIndex.cpp14
-rw-r--r--clang/tools/libclang/IndexingContext.cpp4
13 files changed, 79 insertions, 69 deletions
diff --git a/clang/include/clang/AST/DataRecursiveASTVisitor.h b/clang/include/clang/AST/DataRecursiveASTVisitor.h
index 37a5c8e86dd..f3481c15bfe 100644
--- a/clang/include/clang/AST/DataRecursiveASTVisitor.h
+++ b/clang/include/clang/AST/DataRecursiveASTVisitor.h
@@ -598,8 +598,8 @@ bool DataRecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) {
}
// Visit any attributes attached to this declaration.
- for (auto I : D->attrs()) {
- if (!getDerived().TraverseAttr(I))
+ for (Decl::attr_iterator I=D->attr_begin(), E=D->attr_end(); I != E; ++I) {
+ if (!getDerived().TraverseAttr(*I))
return false;
}
return true;
diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h
index ac1945cc3ca..d281f19df88 100644
--- a/clang/include/clang/AST/DeclBase.h
+++ b/clang/include/clang/AST/DeclBase.h
@@ -18,7 +18,6 @@
#include "clang/AST/DeclarationName.h"
#include "clang/Basic/Linkage.h"
#include "clang/Basic/Specifiers.h"
-#include "llvm/ADT/iterator_range.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Compiler.h"
@@ -448,23 +447,14 @@ public:
}
typedef AttrVec::const_iterator attr_iterator;
- typedef llvm::iterator_range<attr_iterator> attr_range;
-
- attr_range attrs() const {
- // FIXME: Do not rely on iterators having comparable singular values.
- // Note that this should error out if they do not.
- if (!hasAttrs())
- return attr_range();
-
- auto const &A = getAttrs();
- return attr_range(A.begin(), A.end());
- }
+ // FIXME: Do not rely on iterators having comparable singular values.
+ // Note that this should error out if they do not.
attr_iterator attr_begin() const {
- return attrs().begin();
+ return hasAttrs() ? getAttrs().begin() : 0;
}
attr_iterator attr_end() const {
- return attrs().end();
+ return hasAttrs() ? getAttrs().end() : 0;
}
template <typename T>
diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h
index 86537b09669..92c26c4235b 100644
--- a/clang/include/clang/AST/RecursiveASTVisitor.h
+++ b/clang/include/clang/AST/RecursiveASTVisitor.h
@@ -669,8 +669,8 @@ bool RecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) {
}
// Visit any attributes attached to this declaration.
- for (auto I : D->attrs()) {
- if (!getDerived().TraverseAttr(I))
+ for (Decl::attr_iterator I=D->attr_begin(), E=D->attr_end(); I != E; ++I) {
+ if (!getDerived().TraverseAttr(*I))
return false;
}
return true;
diff --git a/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp
index 810560d57fb..42edf5bb94d 100644
--- a/clang/lib/AST/ASTDumper.cpp
+++ b/clang/lib/AST/ASTDumper.cpp
@@ -762,7 +762,7 @@ void ASTDumper::dumpDecl(const Decl *D) {
if (ND->isHidden())
OS << " hidden";
- bool HasAttrs = D->hasAttrs();
+ bool HasAttrs = D->attr_begin() != D->attr_end();
const FullComment *Comment =
D->getASTContext().getLocalCommentForDeclUncached(D);
// Decls within functions are visited by the body
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index 872a26d0226..6eaf1405501 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3501,8 +3501,8 @@ LabelDecl *LabelDecl::CreateDeserialized(ASTContext &C, unsigned ID) {
void ValueDecl::anchor() { }
bool ValueDecl::isWeak() const {
- for (auto I : attrs())
- if (isa<WeakAttr>(I) || isa<WeakRefAttr>(I))
+ for (attr_iterator I = attr_begin(), E = attr_end(); I != E; ++I)
+ if (isa<WeakAttr>(*I) || isa<WeakRefAttr>(*I))
return true;
return isWeakImported();
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index 873e986d798..00692df46c5 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -408,8 +408,8 @@ AvailabilityResult Decl::getAvailability(std::string *Message) const {
AvailabilityResult Result = AR_Available;
std::string ResultMessage;
- for (auto A : attrs()) {
- if (auto Deprecated = dyn_cast<DeprecatedAttr>(A)) {
+ for (attr_iterator A = attr_begin(), AEnd = attr_end(); A != AEnd; ++A) {
+ if (DeprecatedAttr *Deprecated = dyn_cast<DeprecatedAttr>(*A)) {
if (Result >= AR_Deprecated)
continue;
@@ -420,13 +420,13 @@ AvailabilityResult Decl::getAvailability(std::string *Message) const {
continue;
}
- if (auto Unavailable = dyn_cast<UnavailableAttr>(A)) {
+ if (UnavailableAttr *Unavailable = dyn_cast<UnavailableAttr>(*A)) {
if (Message)
*Message = Unavailable->getMessage();
return AR_Unavailable;
}
- if (auto Availability = dyn_cast<AvailabilityAttr>(A)) {
+ if (AvailabilityAttr *Availability = dyn_cast<AvailabilityAttr>(*A)) {
AvailabilityResult AR = CheckAvailability(getASTContext(), Availability,
Message);
@@ -482,11 +482,11 @@ bool Decl::isWeakImported() const {
if (!canBeWeakImported(IsDefinition))
return false;
- for (auto A : attrs()) {
- if (isa<WeakImportAttr>(A))
+ for (attr_iterator A = attr_begin(), AEnd = attr_end(); A != AEnd; ++A) {
+ if (isa<WeakImportAttr>(*A))
return true;
- if (AvailabilityAttr *Availability = dyn_cast<AvailabilityAttr>(A)) {
+ if (AvailabilityAttr *Availability = dyn_cast<AvailabilityAttr>(*A)) {
if (CheckAvailability(getASTContext(), Availability, 0)
== AR_NotYetIntroduced)
return true;
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index 887b93ab58c..28f85d7a9f1 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/lib/Sema/SemaCodeComplete.cpp
@@ -2638,11 +2638,12 @@ CodeCompletionResult::CreateCodeCompletionString(ASTContext &Ctx,
return Result.TakeString();
}
- for (auto i = ND->specific_attr_begin<AnnotateAttr>(),
- e = ND->specific_attr_end<AnnotateAttr>(); i != e; ++i)
- Result.AddAnnotation(
- Result.getAllocator().CopyString((*i)->getAnnotation()));
-
+ for (Decl::attr_iterator i = ND->attr_begin(); i != ND->attr_end(); ++i) {
+ if (AnnotateAttr *Attr = dyn_cast_or_null<AnnotateAttr>(*i)) {
+ Result.AddAnnotation(Result.getAllocator().CopyString(Attr->getAnnotation()));
+ }
+ }
+
AddResultTypeChunk(Ctx, Policy, ND, Result);
if (const FunctionDecl *Function = dyn_cast<FunctionDecl>(ND)) {
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index f0a24301d53..9840d1eca11 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1791,16 +1791,16 @@ void Sema::MergeTypedefNameDecl(TypedefNameDecl *New, LookupResult &OldDecls) {
static bool DeclHasAttr(const Decl *D, const Attr *A) {
const OwnershipAttr *OA = dyn_cast<OwnershipAttr>(A);
const AnnotateAttr *Ann = dyn_cast<AnnotateAttr>(A);
- for (auto i : D->attrs())
- if (i->getKind() == A->getKind()) {
+ for (Decl::attr_iterator i = D->attr_begin(), e = D->attr_end(); i != e; ++i)
+ if ((*i)->getKind() == A->getKind()) {
if (Ann) {
- if (Ann->getAnnotation() == cast<AnnotateAttr>(i)->getAnnotation())
+ if (Ann->getAnnotation() == cast<AnnotateAttr>(*i)->getAnnotation())
return true;
continue;
}
// FIXME: Don't hardcode this check
- if (OA && isa<OwnershipAttr>(i))
- return OA->getOwnKind() == cast<OwnershipAttr>(i)->getOwnKind();
+ if (OA && isa<OwnershipAttr>(*i))
+ return OA->getOwnKind() == cast<OwnershipAttr>(*i)->getOwnKind();
return true;
}
@@ -1997,9 +1997,12 @@ static const Decl *getDefinition(const Decl *D) {
}
static bool hasAttribute(const Decl *D, attr::Kind Kind) {
- for (auto Attribute : D->attrs())
+ for (Decl::attr_iterator I = D->attr_begin(), E = D->attr_end();
+ I != E; ++I) {
+ Attr *Attribute = *I;
if (Attribute->getKind() == Kind)
return true;
+ }
return false;
}
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 0b83427067e..2d35d5cda75 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -12723,41 +12723,48 @@ bool Sema::checkThisInStaticMemberFunctionAttributes(CXXMethodDecl *Method) {
FindCXXThisExpr Finder(*this);
// Check attributes.
- for (auto A : Method->attrs()) {
+ for (Decl::attr_iterator A = Method->attr_begin(), AEnd = Method->attr_end();
+ A != AEnd; ++A) {
// FIXME: This should be emitted by tblgen.
Expr *Arg = 0;
ArrayRef<Expr *> Args;
- if (auto G = dyn_cast<GuardedByAttr>(A))
+ if (GuardedByAttr *G = dyn_cast<GuardedByAttr>(*A))
Arg = G->getArg();
- else if (auto G = dyn_cast<PtGuardedByAttr>(A))
+ else if (PtGuardedByAttr *G = dyn_cast<PtGuardedByAttr>(*A))
Arg = G->getArg();
- else if (auto AA = dyn_cast<AcquiredAfterAttr>(A))
+ else if (AcquiredAfterAttr *AA = dyn_cast<AcquiredAfterAttr>(*A))
Args = ArrayRef<Expr *>(AA->args_begin(), AA->args_size());
- else if (auto AB = dyn_cast<AcquiredBeforeAttr>(A))
+ else if (AcquiredBeforeAttr *AB = dyn_cast<AcquiredBeforeAttr>(*A))
Args = ArrayRef<Expr *>(AB->args_begin(), AB->args_size());
- else if (auto ELF = dyn_cast<ExclusiveLockFunctionAttr>(A))
+ else if (ExclusiveLockFunctionAttr *ELF
+ = dyn_cast<ExclusiveLockFunctionAttr>(*A))
Args = ArrayRef<Expr *>(ELF->args_begin(), ELF->args_size());
- else if (auto SLF = dyn_cast<SharedLockFunctionAttr>(A))
+ else if (SharedLockFunctionAttr *SLF
+ = dyn_cast<SharedLockFunctionAttr>(*A))
Args = ArrayRef<Expr *>(SLF->args_begin(), SLF->args_size());
- else if (auto ETLF = dyn_cast<ExclusiveTrylockFunctionAttr>(A)) {
+ else if (ExclusiveTrylockFunctionAttr *ETLF
+ = dyn_cast<ExclusiveTrylockFunctionAttr>(*A)) {
Arg = ETLF->getSuccessValue();
Args = ArrayRef<Expr *>(ETLF->args_begin(), ETLF->args_size());
- } else if (auto STLF = dyn_cast<SharedTrylockFunctionAttr>(A)) {
+ } else if (SharedTrylockFunctionAttr *STLF
+ = dyn_cast<SharedTrylockFunctionAttr>(*A)) {
Arg = STLF->getSuccessValue();
Args = ArrayRef<Expr *>(STLF->args_begin(), STLF->args_size());
- } else if (auto UF = dyn_cast<UnlockFunctionAttr>(A))
+ } else if (UnlockFunctionAttr *UF = dyn_cast<UnlockFunctionAttr>(*A))
Args = ArrayRef<Expr *>(UF->args_begin(), UF->args_size());
- else if (auto LR = dyn_cast<LockReturnedAttr>(A))
+ else if (LockReturnedAttr *LR = dyn_cast<LockReturnedAttr>(*A))
Arg = LR->getArg();
- else if (auto LE = dyn_cast<LocksExcludedAttr>(A))
+ else if (LocksExcludedAttr *LE = dyn_cast<LocksExcludedAttr>(*A))
Args = ArrayRef<Expr *>(LE->args_begin(), LE->args_size());
- else if (auto RC = dyn_cast<RequiresCapabilityAttr>(A))
+ else if (RequiresCapabilityAttr *RC
+ = dyn_cast<RequiresCapabilityAttr>(*A))
Args = ArrayRef<Expr *>(RC->args_begin(), RC->args_size());
- else if (auto AC = dyn_cast<AcquireCapabilityAttr>(A))
+ else if (AcquireCapabilityAttr *AC = dyn_cast<AcquireCapabilityAttr>(*A))
Args = ArrayRef<Expr *>(AC->args_begin(), AC->args_size());
- else if (auto AC = dyn_cast<TryAcquireCapabilityAttr>(A))
- Args = ArrayRef<Expr *>(AC->args_begin(), AC->args_size());
- else if (auto RC = dyn_cast<ReleaseCapabilityAttr>(A))
+ else if (TryAcquireCapabilityAttr *AC
+ = dyn_cast<TryAcquireCapabilityAttr>(*A))
+ Args = ArrayRef<Expr *>(AC->args_begin(), AC->args_size());
+ else if (ReleaseCapabilityAttr *RC = dyn_cast<ReleaseCapabilityAttr>(*A))
Args = ArrayRef<Expr *>(RC->args_begin(), RC->args_size());
if (Arg && !Finder.TraverseStmt(Arg))
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp
index 785aa6a1e2e..c96fcbed537 100644
--- a/clang/lib/Sema/SemaObjCProperty.cpp
+++ b/clang/lib/Sema/SemaObjCProperty.cpp
@@ -1940,11 +1940,13 @@ void Sema::DiagnoseMissingDesignatedInitOverrides(
static void AddPropertyAttrs(Sema &S, ObjCMethodDecl *PropertyMethod,
ObjCPropertyDecl *Property) {
// Should we just clone all attributes over?
- for (auto A : Property->attrs()) {
- if (isa<DeprecatedAttr>(A) ||
- isa<UnavailableAttr>(A) ||
- isa<AvailabilityAttr>(A))
- PropertyMethod->addAttr(A->clone(S.Context));
+ for (Decl::attr_iterator A = Property->attr_begin(),
+ AEnd = Property->attr_end();
+ A != AEnd; ++A) {
+ if (isa<DeprecatedAttr>(*A) ||
+ isa<UnavailableAttr>(*A) ||
+ isa<AvailabilityAttr>(*A))
+ PropertyMethod->addAttr((*A)->clone(S.Context));
}
}
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 290976867d5..a912f34f206 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -168,7 +168,10 @@ void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &TemplateArgs,
const Decl *Tmpl, Decl *New,
LateInstantiatedAttrVec *LateAttrs,
LocalInstantiationScope *OuterMostScope) {
- for (auto TmplAttr : Tmpl->attrs()) {
+ for (AttrVec::const_iterator i = Tmpl->attr_begin(), e = Tmpl->attr_end();
+ i != e; ++i) {
+ const Attr *TmplAttr = *i;
+
// FIXME: This should be generalized to more than just the AlignedAttr.
const AlignedAttr *Aligned = dyn_cast<AlignedAttr>(TmplAttr);
if (Aligned && Aligned->isAlignmentDependent()) {
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index 98563078447..1c24e6b7b27 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -1675,8 +1675,9 @@ bool CursorVisitor::VisitCXXRecordDecl(CXXRecordDecl *D) {
}
bool CursorVisitor::VisitAttributes(Decl *D) {
- for (auto I : D->attrs())
- if (Visit(MakeCXCursor(I, D, TU)))
+ for (AttrVec::const_iterator i = D->attr_begin(), e = D->attr_end();
+ i != e; ++i)
+ if (Visit(MakeCXCursor(*i, D, TU)))
return true;
return false;
@@ -6040,8 +6041,9 @@ static int getCursorPlatformAvailabilityForDecl(const Decl *D,
int availability_size) {
bool HadAvailAttr = false;
int N = 0;
- for (auto A : D->attrs()) {
- if (DeprecatedAttr *Deprecated = dyn_cast<DeprecatedAttr>(A)) {
+ for (Decl::attr_iterator A = D->attr_begin(), AEnd = D->attr_end(); A != AEnd;
+ ++A) {
+ if (DeprecatedAttr *Deprecated = dyn_cast<DeprecatedAttr>(*A)) {
HadAvailAttr = true;
if (always_deprecated)
*always_deprecated = 1;
@@ -6050,7 +6052,7 @@ static int getCursorPlatformAvailabilityForDecl(const Decl *D,
continue;
}
- if (UnavailableAttr *Unavailable = dyn_cast<UnavailableAttr>(A)) {
+ if (UnavailableAttr *Unavailable = dyn_cast<UnavailableAttr>(*A)) {
HadAvailAttr = true;
if (always_unavailable)
*always_unavailable = 1;
@@ -6060,7 +6062,7 @@ static int getCursorPlatformAvailabilityForDecl(const Decl *D,
continue;
}
- if (AvailabilityAttr *Avail = dyn_cast<AvailabilityAttr>(A)) {
+ if (AvailabilityAttr *Avail = dyn_cast<AvailabilityAttr>(*A)) {
HadAvailAttr = true;
if (N < availability_size) {
availability[N].Platform
diff --git a/clang/tools/libclang/IndexingContext.cpp b/clang/tools/libclang/IndexingContext.cpp
index c5f20e0b383..2e0f7c20fc7 100644
--- a/clang/tools/libclang/IndexingContext.cpp
+++ b/clang/tools/libclang/IndexingContext.cpp
@@ -67,7 +67,9 @@ AttrListInfo::AttrListInfo(const Decl *D, IndexingContext &IdxCtx)
if (!D->hasAttrs())
return;
- for (auto A : D->attrs()) {
+ for (AttrVec::const_iterator AttrI = D->attr_begin(), AttrE = D->attr_end();
+ AttrI != AttrE; ++AttrI) {
+ const Attr *A = *AttrI;
CXCursor C = MakeCXCursor(A, D, IdxCtx.CXTU);
CXIdxLoc Loc = IdxCtx.getIndexLoc(A->getLocation());
switch (C.kind) {
OpenPOWER on IntegriCloud