Author: jlebar Date: Wed Oct 26 17:13:26 2016 New Revision: 285251 URL: http://llvm.org/viewvc/llvm-project?rev=285251&view=rev Log: [CUDA] Move device placement new definitions into a wrapper header.
Previously, these were always included -- after this change, you have to #include <new>, which is consistent with how things ought to work. Added: cfe/trunk/lib/Headers/cuda_wrappers/new Modified: cfe/trunk/lib/Headers/CMakeLists.txt cfe/trunk/lib/Headers/__clang_cuda_runtime_wrapper.h Modified: cfe/trunk/lib/Headers/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=285251&r1=285250&r2=285251&view=diff ============================================================================== --- cfe/trunk/lib/Headers/CMakeLists.txt (original) +++ cfe/trunk/lib/Headers/CMakeLists.txt Wed Oct 26 17:13:26 2016 @@ -93,6 +93,7 @@ set(files set(cuda_wrapper_files cuda_wrappers/algorithm cuda_wrappers/complex + cuda_wrappers/new ) set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include) Modified: cfe/trunk/lib/Headers/__clang_cuda_runtime_wrapper.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/__clang_cuda_runtime_wrapper.h?rev=285251&r1=285250&r2=285251&view=diff ============================================================================== --- cfe/trunk/lib/Headers/__clang_cuda_runtime_wrapper.h (original) +++ cfe/trunk/lib/Headers/__clang_cuda_runtime_wrapper.h Wed Oct 26 17:13:26 2016 @@ -329,23 +329,5 @@ __device__ inline __cuda_builtin_gridDim #pragma pop_macro("uint3") #pragma pop_macro("__USE_FAST_MATH__") -// Device overrides for placement new and delete. -#pragma push_macro("CUDA_NOEXCEPT") -#if __cplusplus >= 201103L -#define CUDA_NOEXCEPT noexcept -#else -#define CUDA_NOEXCEPT -#endif - -__device__ inline void *operator new(__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT { - return __ptr; -} -__device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT { - return __ptr; -} -__device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {} -__device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {} -#pragma pop_macro("CUDA_NOEXCEPT") - #endif // __CUDA__ #endif // __CLANG_CUDA_RUNTIME_WRAPPER_H__ Added: cfe/trunk/lib/Headers/cuda_wrappers/new URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/cuda_wrappers/new?rev=285251&view=auto ============================================================================== --- cfe/trunk/lib/Headers/cuda_wrappers/new (added) +++ cfe/trunk/lib/Headers/cuda_wrappers/new Wed Oct 26 17:13:26 2016 @@ -0,0 +1,47 @@ +/*===---- complex - CUDA wrapper for <new> ------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __CLANG_CUDA_WRAPPERS_NEW +#define __CLANG_CUDA_WRAPPERS_NEW + +#include_next <new> + +// Device overrides for placement new and delete. +#pragma push_macro("CUDA_NOEXCEPT") +#if __cplusplus >= 201103L +#define CUDA_NOEXCEPT noexcept +#else +#define CUDA_NOEXCEPT +#endif + +__device__ inline void *operator new(__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT { + return __ptr; +} +__device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT { + return __ptr; +} +__device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {} +__device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {} +#pragma pop_macro("CUDA_NOEXCEPT") + +#endif // include guard _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits