summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2012-07-06 00:25:39 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2012-07-06 00:25:39 +0000
commitd5200f1bc4cb41329fd05a09d552e63705b294fc (patch)
treea282053dd70974c55e613b8222e448703b6443fc
parent89b928eb6afbc0fcd1685711cf4dba5cc7a21b77 (diff)
downloadbcm5719-llvm-d5200f1bc4cb41329fd05a09d552e63705b294fc.tar.gz
bcm5719-llvm-d5200f1bc4cb41329fd05a09d552e63705b294fc.zip
Enable new[] on llvm::BumpPtrAllocator.
llvm-svn: 159789
-rw-r--r--llvm/include/llvm/Support/Allocator.h17
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
OpenPOWER on IntegriCloud