diff options
author | Erich Keane <erich.keane@intel.com> | 2018-07-12 21:09:05 +0000 |
---|---|---|
committer | Erich Keane <erich.keane@intel.com> | 2018-07-12 21:09:05 +0000 |
commit | c480f30580ab0f23a4f7c2ac142fd89412e76a41 (patch) | |
tree | eab26223a76e522bc9487f72e9b9ba6d823800d2 /clang/lib/Sema/SemaAttr.cpp | |
parent | 0de57a676cfc7911e239ffcd45122eb090d2330f (diff) | |
download | bcm5719-llvm-c480f30580ab0f23a4f7c2ac142fd89412e76a41.tar.gz bcm5719-llvm-c480f30580ab0f23a4f7c2ac142fd89412e76a41.zip |
AttributeList de-listifying:
Basically, "AttributeList" loses all list-like mechanisms, ParsedAttributes is
switched to use a TinyPtrVector (and a ParsedAttributesView is created to
have a non-allocating attributes list). DeclaratorChunk gets the later kind,
Declarator/DeclSpec keep ParsedAttributes.
Iterators are added to the ParsedAttribute types so that for-loops work.
llvm-svn: 336945
Diffstat (limited to 'clang/lib/Sema/SemaAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaAttr.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp index 64f12f3f5e4..cc155b7ff6b 100644 --- a/clang/lib/Sema/SemaAttr.cpp +++ b/clang/lib/Sema/SemaAttr.cpp @@ -645,7 +645,7 @@ void Sema::AddPragmaAttributes(Scope *S, Decl *D) { if (PragmaAttributeStack.empty()) return; for (auto &Entry : PragmaAttributeStack) { - const AttributeList *Attribute = Entry.Attribute; + AttributeList *Attribute = Entry.Attribute; assert(Attribute && "Expected an attribute"); // Ensure that the attribute can be applied to the given declaration. @@ -659,9 +659,10 @@ void Sema::AddPragmaAttributes(Scope *S, Decl *D) { if (!Applies) continue; Entry.IsUsed = true; - assert(!Attribute->getNext() && "Expected just one attribute"); PragmaAttributeCurrentTargetDecl = D; - ProcessDeclAttributeList(S, D, Attribute); + ParsedAttributesView Attrs; + Attrs.addAtStart(Attribute); + ProcessDeclAttributeList(S, D, Attrs); PragmaAttributeCurrentTargetDecl = nullptr; } } |