summaryrefslogtreecommitdiffstats
path: root/clang/lib/Headers/__clang_cuda_runtime_wrapper.h
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2016-08-10 01:09:14 +0000
committerJustin Lebar <jlebar@google.com>2016-08-10 01:09:14 +0000
commit2ef3dabd45305117a237ce28babdfee651aad5fc (patch)
treefd40c18e4705bf0957e426dca85608941b527eea /clang/lib/Headers/__clang_cuda_runtime_wrapper.h
parentb008003aa3f0d7d48cfab30a93f7f475f206391a (diff)
downloadbcm5719-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.h18
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__
OpenPOWER on IntegriCloud