Switch from SmallVector to TinyPtrVector for the list of attributes on a declaration. This removes a memory allocation for the common case where the declaration has only one attribute.

llvm-svn: 269717
This commit is contained in:
Richard Smith 2016-05-16 22:53:19 +00:00
parent d18ab80b13
commit befb949334
1 changed files with 3 additions and 2 deletions

View File

@ -15,6 +15,7 @@
#define LLVM_CLANG_AST_ATTRITERATOR_H
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/TinyPtrVector.h"
#include <iterator>
namespace clang {
@ -39,8 +40,8 @@ void operator delete[](void *Ptr, const clang::ASTContext &C, size_t);
namespace clang {
/// AttrVec - A vector of Attr, which is how they are stored on the AST.
typedef SmallVector<Attr*, 2> AttrVec;
typedef SmallVector<const Attr*, 2> ConstAttrVec;
typedef llvm::TinyPtrVector<Attr*> AttrVec;
typedef llvm::TinyPtrVector<const Attr*> ConstAttrVec;
/// specific_attr_iterator - Iterates over a subrange of an AttrVec, only
/// providing attributes that are of a specific type.