| //===--------- new - OPENMP wrapper for <new> ------------------------------=== |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===-----------------------------------------------------------------------=== |
| |
| #ifndef __CLANG_OPENMP_WRAPPERS_NEW |
| #define __CLANG_OPENMP_WRAPPERS_NEW |
| |
| #include_next <new> |
| |
| #if defined(__NVPTX__) && defined(_OPENMP) |
| |
| #include <cstdlib> |
| |
| #pragma push_macro("OPENMP_NOEXCEPT") |
| #if __cplusplus >= 201103L |
| #define OPENMP_NOEXCEPT noexcept |
| #else |
| #define OPENMP_NOEXCEPT |
| #endif |
| |
| // Device overrides for non-placement new and delete. |
| inline void *operator new(__SIZE_TYPE__ size) { |
| if (size == 0) |
| size = 1; |
| return ::malloc(size); |
| } |
| inline void *operator new(__SIZE_TYPE__ size, |
| const std::nothrow_t &) OPENMP_NOEXCEPT { |
| return ::operator new(size); |
| } |
| |
| inline void *operator new[](__SIZE_TYPE__ size) { return ::operator new(size); } |
| inline void *operator new[](__SIZE_TYPE__ size, const std::nothrow_t &) { |
| return ::operator new(size); |
| } |
| |
| inline void operator delete(void *ptr)OPENMP_NOEXCEPT { |
| if (ptr) |
| ::free(ptr); |
| } |
| inline void operator delete(void *ptr, const std::nothrow_t &)OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| |
| inline void operator delete[](void *ptr) OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| inline void operator delete[](void *ptr, |
| const std::nothrow_t &) OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| |
| // Sized delete, C++14 only. |
| #if __cplusplus >= 201402L |
| inline void operator delete(void *ptr, __SIZE_TYPE__ size)OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| inline void operator delete[](void *ptr, __SIZE_TYPE__ size) OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| #endif |
| |
| #pragma pop_macro("OPENMP_NOEXCEPT") |
| #endif |
| |
| #endif // include guard |