//===--------- 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