Author: d0k Date: Tue Aug 4 07:34:23 2015 New Revision: 243972 URL: http://llvm.org/viewvc/llvm-project?rev=243972&view=rev Log: [ASTContext] Add a templated convenience wrapper for Allocate.
This brings ASTContext closer to LLVM's Allocator concept. Ideally we would just derive ASTContext from llvm::AllocatorBase, but that does not work because ASTContext's allocator is mutable and we allocate using const ASTContext& everywhere. Modified: cfe/trunk/include/clang/AST/ASTContext.h cfe/trunk/lib/AST/Stmt.cpp Modified: cfe/trunk/include/clang/AST/ASTContext.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=243972&r1=243971&r2=243972&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/ASTContext.h (original) +++ cfe/trunk/include/clang/AST/ASTContext.h Tue Aug 4 07:34:23 2015 @@ -501,6 +501,9 @@ public: void *Allocate(size_t Size, unsigned Align = 8) const { return BumpAlloc.Allocate(Size, Align); } + template <typename T> T *Allocate(size_t Num = 1) const { + return static_cast<T *>(Allocate(Num * sizeof(T), llvm::alignOf<T>())); + } void Deallocate(void *Ptr) const { } /// Return the total amount of physical memory allocated for representing Modified: cfe/trunk/lib/AST/Stmt.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Stmt.cpp?rev=243972&r1=243971&r2=243972&view=diff ============================================================================== --- cfe/trunk/lib/AST/Stmt.cpp (original) +++ cfe/trunk/lib/AST/Stmt.cpp Tue Aug 4 07:34:23 2015 @@ -724,7 +724,7 @@ MSAsmStmt::MSAsmStmt(const ASTContext &C } static StringRef copyIntoContext(const ASTContext &C, StringRef str) { - return str.copy(C.getAllocator()); + return str.copy(C); } void MSAsmStmt::initialize(const ASTContext &C, StringRef asmstr, _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits