diff options
author | Justin Lebar <jlebar@google.com> | 2016-08-10 01:09:14 +0000 |
---|---|---|
committer | Justin Lebar <jlebar@google.com> | 2016-08-10 01:09:14 +0000 |
commit | 2ef3dabd45305117a237ce28babdfee651aad5fc (patch) | |
tree | fd40c18e4705bf0957e426dca85608941b527eea /clang/lib/Headers/__clang_cuda_runtime_wrapper.h | |
parent | b008003aa3f0d7d48cfab30a93f7f475f206391a (diff) | |
download | bcm5719-llvm-2ef3dabd45305117a237ce28babdfee651aad5fc.tar.gz bcm5719-llvm-2ef3dabd45305117a237ce28babdfee651aad5fc.zip |
[CUDA] Add __device__ overloads for placement new and delete.
Summary:
Previously these sort of worked because they didn't end up resulting in
calls at the ptx layer. But I'm adding stricter checks that break
placement new without these changes.
Reviewers: tra
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D23239
llvm-svn: 278194
Diffstat (limited to 'clang/lib/Headers/__clang_cuda_runtime_wrapper.h')
-rw-r--r-- | clang/lib/Headers/__clang_cuda_runtime_wrapper.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/Headers/__clang_cuda_runtime_wrapper.h b/clang/lib/Headers/__clang_cuda_runtime_wrapper.h index 6445f9b76b8..05a85fa3d56 100644 --- a/clang/lib/Headers/__clang_cuda_runtime_wrapper.h +++ b/clang/lib/Headers/__clang_cuda_runtime_wrapper.h @@ -312,5 +312,23 @@ __device__ inline __cuda_builtin_gridDim_t::operator dim3() const { #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__ |