xref: /llvm-project/libc/src/__support/CPP/new.cpp (revision 9cfe3028ca7977fb582fa3b15b875e8772fc8fc0)
19b29436aSSiva Chandra Reddy //===-- Implementation of custom operator delete --------------------------===//
29b29436aSSiva Chandra Reddy //
39b29436aSSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
49b29436aSSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information.
59b29436aSSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
69b29436aSSiva Chandra Reddy //
79b29436aSSiva Chandra Reddy //===----------------------------------------------------------------------===//
89b29436aSSiva Chandra Reddy 
99b29436aSSiva Chandra Reddy #include "new.h"
10*9cfe3028SJob Henandez Lara #include "hdr/func/free.h"
119b29436aSSiva Chandra Reddy 
129b29436aSSiva Chandra Reddy void operator delete(void *mem) noexcept { ::free(mem); }
139b29436aSSiva Chandra Reddy 
149b29436aSSiva Chandra Reddy void operator delete(void *mem, std::align_val_t) noexcept { ::free(mem); }
159b29436aSSiva Chandra Reddy 
169b29436aSSiva Chandra Reddy void operator delete(void *mem, size_t) noexcept { ::free(mem); }
179b29436aSSiva Chandra Reddy 
189b29436aSSiva Chandra Reddy void operator delete(void *mem, size_t, std::align_val_t) noexcept {
19ded08015SSirui Mu #ifdef LIBC_TARGET_OS_IS_WINDOWS
20ded08015SSirui Mu   ::_aligned_free(mem);
21ded08015SSirui Mu #else
229b29436aSSiva Chandra Reddy   ::free(mem);
23ded08015SSirui Mu #endif
249b29436aSSiva Chandra Reddy }
259b29436aSSiva Chandra Reddy 
269b29436aSSiva Chandra Reddy void operator delete[](void *mem) noexcept { ::free(mem); }
279b29436aSSiva Chandra Reddy 
28ded08015SSirui Mu void operator delete[](void *mem, std::align_val_t) noexcept {
29ded08015SSirui Mu #ifdef LIBC_TARGET_OS_IS_WINDOWS
30ded08015SSirui Mu   ::_aligned_free(mem);
31ded08015SSirui Mu #else
32ded08015SSirui Mu   ::free(mem);
33ded08015SSirui Mu #endif
34ded08015SSirui Mu }
359b29436aSSiva Chandra Reddy 
369b29436aSSiva Chandra Reddy void operator delete[](void *mem, size_t) noexcept { ::free(mem); }
379b29436aSSiva Chandra Reddy 
389b29436aSSiva Chandra Reddy void operator delete[](void *mem, size_t, std::align_val_t) noexcept {
39ded08015SSirui Mu #ifdef LIBC_TARGET_OS_IS_WINDOWS
40ded08015SSirui Mu   ::_aligned_free(mem);
41ded08015SSirui Mu #else
429b29436aSSiva Chandra Reddy   ::free(mem);
43ded08015SSirui Mu #endif
449b29436aSSiva Chandra Reddy }
45