Author: rsmith Date: Tue May 17 16:48:41 2016 New Revision: 269849 URL: http://llvm.org/viewvc/llvm-project?rev=269849&view=rev Log: Revert r269717. That change alone did not provide the intended benefit (which would come from changing the type of ASTContext::DeclAttrs from DenseMap<Decl*,AttrVec*> to DenseMap<Decl*,AttrVec>), and it turns out to be impractical to avoid the allocation there, because we expose the address of the attribute vector in ways that are hard to fix.
Modified: cfe/trunk/include/clang/AST/AttrIterator.h Modified: cfe/trunk/include/clang/AST/AttrIterator.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/AttrIterator.h?rev=269849&r1=269848&r2=269849&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/AttrIterator.h (original) +++ cfe/trunk/include/clang/AST/AttrIterator.h Tue May 17 16:48:41 2016 @@ -15,7 +15,6 @@ #define LLVM_CLANG_AST_ATTRITERATOR_H #include "clang/Basic/LLVM.h" -#include "llvm/ADT/TinyPtrVector.h" #include <iterator> namespace clang { @@ -23,19 +22,6 @@ namespace clang { class Attr; } -namespace llvm { - // Explicitly opt into 4 byte alignment for Attr*, to avoid the need to - // include the heavyweight Attr.h to use a TinyPtrVector<Attr*>. - template <> - struct PointerLikeTypeTraits<clang::Attr *> { - static void *getAsVoidPointer(clang::Attr *P) { return P; } - static clang::Attr *getFromVoidPointer(void *P) { - return static_cast<clang::Attr *>(P); - } - enum { NumLowBitsAvailable = 2 }; - }; -} - // Defined in ASTContext.h void *operator new(size_t Bytes, const clang::ASTContext &C, size_t Alignment = 8); @@ -53,8 +39,8 @@ void operator delete[](void *Ptr, const namespace clang { /// AttrVec - A vector of Attr, which is how they are stored on the AST. -typedef llvm::TinyPtrVector<Attr*> AttrVec; -typedef llvm::TinyPtrVector<const Attr*> ConstAttrVec; +typedef SmallVector<Attr*, 2> AttrVec; +typedef SmallVector<const Attr*, 2> ConstAttrVec; /// specific_attr_iterator - Iterates over a subrange of an AttrVec, only /// providing attributes that are of a specific type. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits