xref: /freebsd/contrib/llvm-project/llvm/lib/Support/MemAlloc.cpp (revision 04eeddc0aa8e0a417a16eaf9d7d095207f4a8623)
15ffd83dbSDimitry Andric //===- MemAlloc.cpp - Memory allocation functions -------------------------===//
25ffd83dbSDimitry Andric //
35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65ffd83dbSDimitry Andric //
75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===//
85ffd83dbSDimitry Andric 
95ffd83dbSDimitry Andric #include "llvm/Support/MemAlloc.h"
10*04eeddc0SDimitry Andric #include <new>
115ffd83dbSDimitry Andric 
125ffd83dbSDimitry Andric // These are out of line to have __cpp_aligned_new not affect ABI.
135ffd83dbSDimitry Andric 
145ffd83dbSDimitry Andric LLVM_ATTRIBUTE_RETURNS_NONNULL LLVM_ATTRIBUTE_RETURNS_NOALIAS void *
allocate_buffer(size_t Size,size_t Alignment)155ffd83dbSDimitry Andric llvm::allocate_buffer(size_t Size, size_t Alignment) {
165ffd83dbSDimitry Andric   return ::operator new(Size
175ffd83dbSDimitry Andric #ifdef __cpp_aligned_new
185ffd83dbSDimitry Andric                         ,
195ffd83dbSDimitry Andric                         std::align_val_t(Alignment)
205ffd83dbSDimitry Andric #endif
215ffd83dbSDimitry Andric   );
225ffd83dbSDimitry Andric }
235ffd83dbSDimitry Andric 
deallocate_buffer(void * Ptr,size_t Size,size_t Alignment)245ffd83dbSDimitry Andric void llvm::deallocate_buffer(void *Ptr, size_t Size, size_t Alignment) {
255ffd83dbSDimitry Andric   ::operator delete(Ptr
265ffd83dbSDimitry Andric #ifdef __cpp_sized_deallocation
275ffd83dbSDimitry Andric                     ,
285ffd83dbSDimitry Andric                     Size
295ffd83dbSDimitry Andric #endif
305ffd83dbSDimitry Andric #ifdef __cpp_aligned_new
315ffd83dbSDimitry Andric                     ,
325ffd83dbSDimitry Andric                     std::align_val_t(Alignment)
335ffd83dbSDimitry Andric #endif
345ffd83dbSDimitry Andric   );
355ffd83dbSDimitry Andric }
36