aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-10-17 21:10:21 +0000
committerTed Kremenek <kremenek@apple.com>2007-10-17 21:10:21 +0000
commit869a3344f17975f57a328dcc8bacf6775344c045 (patch)
tree79de592fff4741cab2bbc9fd1d42c86b9df16b7a
parenta4d9869cf291e6f87bf9e7adfcd9a2c4e4518172 (diff)
Added member template functions to MallocAllocator and
BumpPtrAllocator that implement allocations that return a properly typed pointer. For BumpPtrAllocator, the allocated memory is automatically aligned to the minimum alignment of the type (as calculated by llvm::AlignOf::Alignment). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43087 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Support/Allocator.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Support/Allocator.h b/include/llvm/Support/Allocator.h
index f23a41f17f..397cf0c7c2 100644
--- a/include/llvm/Support/Allocator.h
+++ b/include/llvm/Support/Allocator.h
@@ -14,6 +14,7 @@
#ifndef LLVM_SUPPORT_ALLOCATOR_H
#define LLVM_SUPPORT_ALLOCATOR_H
+#include "llvm/Support/AlignOf.h"
#include <cstdlib>
namespace llvm {
@@ -25,6 +26,10 @@ public:
void Reset() {}
void *Allocate(unsigned Size, unsigned Alignment) { return malloc(Size); }
+
+ template <typename T>
+ T* Allocate() { return reinterpret_cast<T*>(malloc(sizeof(T))); }
+
void Deallocate(void *Ptr) { free(Ptr); }
void PrintStats() const {}
};
@@ -41,6 +46,13 @@ public:
void Reset();
void *Allocate(unsigned Size, unsigned Alignment);
+
+ template <typename T>
+ T* Allocate() {
+ return reinterpret_cast<T*>(Allocate(sizeof(T),AlignOf<T>::Alignment));
+ }
+
+
void Deallocate(void *Ptr) {}
void PrintStats() const;
};