r243972 - [ASTContext] Add a templated convenience wrapper for Allocate.

Benjamin Kramer benny.kra at googlemail.com
Tue Aug 4 05:34:23 PDT 2015


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,





More information about the cfe-commits mailing list