diff options
Diffstat (limited to 'test/CodeGenCUDA/nothrow.cu')
| -rw-r--r-- | test/CodeGenCUDA/nothrow.cu | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/CodeGenCUDA/nothrow.cu b/test/CodeGenCUDA/nothrow.cu new file mode 100644 index 000000000000..f001b57981fa --- /dev/null +++ b/test/CodeGenCUDA/nothrow.cu @@ -0,0 +1,39 @@ +// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -fcuda-is-device \ +// RUN: -triple nvptx-nvidia-cuda -emit-llvm -disable-llvm-passes -o - %s | \ +// RUN: FileCheck -check-prefix DEVICE %s + +// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions \ +// RUN: -triple x86_64-unknown-linux-gnu -emit-llvm -disable-llvm-passes -o - %s | \ +// RUN: FileCheck -check-prefix HOST %s + +#include "Inputs/cuda.h" + +__host__ __device__ void f(); + +// HOST: define void @_Z7host_fnv() [[HOST_ATTR:#[0-9]+]] +void host_fn() { f(); } + +// DEVICE: define void @_Z3foov() [[DEVICE_ATTR:#[0-9]+]] +__device__ void foo() { + // DEVICE: call void @_Z1fv + f(); +} + +// DEVICE: define void @_Z12foo_noexceptv() [[DEVICE_ATTR:#[0-9]+]] +__device__ void foo_noexcept() noexcept { + // DEVICE: call void @_Z1fv + f(); +} + +// This is nounwind only on the device side. +// CHECK: define void @_Z3foov() [[DEVICE_ATTR:#[0-9]+]] +__host__ __device__ void bar() { f(); } + +// DEVICE: define void @_Z3bazv() [[DEVICE_ATTR:#[0-9]+]] +__global__ void baz() { f(); } + +// DEVICE: attributes [[DEVICE_ATTR]] = { +// DEVICE-SAME: nounwind +// HOST: attributes [[HOST_ATTR]] = { +// HOST-NOT: nounwind +// HOST-SAME: } |
