| //===--------- 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 |
| |
| // We need the system <new> for the std::nothrow_t. The new/delete operators |
| // which do not use nothrow_t are provided without the <new> header. |
| #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 |
| |
| inline void *operator new(__SIZE_TYPE__ size, |
| const std::nothrow_t &) OPENMP_NOEXCEPT { |
| 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, const std::nothrow_t &)OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| |
| inline void operator delete[](void *ptr, |
| const std::nothrow_t &) OPENMP_NOEXCEPT { |
| ::operator delete(ptr); |
| } |
| |
| #pragma pop_macro("OPENMP_NOEXCEPT") |
| #endif |
| |
| #endif // include guard |