diff options
| author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-06 00:25:39 +0000 | 
|---|---|---|
| committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-06 00:25:39 +0000 | 
| commit | d5200f1bc4cb41329fd05a09d552e63705b294fc (patch) | |
| tree | a282053dd70974c55e613b8222e448703b6443fc /llvm | |
| parent | 89b928eb6afbc0fcd1685711cf4dba5cc7a21b77 (diff) | |
| download | bcm5719-llvm-d5200f1bc4cb41329fd05a09d552e63705b294fc.tar.gz bcm5719-llvm-d5200f1bc4cb41329fd05a09d552e63705b294fc.zip  | |
Enable new[] on llvm::BumpPtrAllocator.
llvm-svn: 159789
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Support/Allocator.h | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/Allocator.h b/llvm/include/llvm/Support/Allocator.h index a2ad24ffead..c2dd75d4883 100644 --- a/llvm/include/llvm/Support/Allocator.h +++ b/llvm/include/llvm/Support/Allocator.h @@ -239,4 +239,21 @@ inline void *operator new(size_t Size, llvm::BumpPtrAllocator &Allocator) {  inline void operator delete(void *, llvm::BumpPtrAllocator &) {} +inline void *operator new[](size_t Size, llvm::BumpPtrAllocator &Allocator) { +  struct S { +    char c; +    union { +      double D; +      long double LD; +      long long L; +      void *P; +    } x; +  }; +  return Allocator.Allocate(Size, std::min((size_t)llvm::NextPowerOf2(Size), +                                           offsetof(S, x))); +} + +inline void operator delete[](void *Ptr, llvm::BumpPtrAllocator &C, size_t) { +} +  #endif // LLVM_SUPPORT_ALLOCATOR_H  | 

