aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCUDA/extern-shared.cu
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCUDA/extern-shared.cu')
-rw-r--r--test/SemaCUDA/extern-shared.cu23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/SemaCUDA/extern-shared.cu b/test/SemaCUDA/extern-shared.cu
new file mode 100644
index 0000000000000..9fd7bbba593c9
--- /dev/null
+++ b/test/SemaCUDA/extern-shared.cu
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify %s
+
+#include "Inputs/cuda.h"
+
+__device__ void foo() {
+ extern __shared__ int x; // expected-error {{__shared__ variable 'x' cannot be 'extern'}}
+ extern __shared__ int arr[]; // ok
+ extern __shared__ int arr0[0]; // expected-error {{__shared__ variable 'arr0' cannot be 'extern'}}
+ extern __shared__ int arr1[1]; // expected-error {{__shared__ variable 'arr1' cannot be 'extern'}}
+ extern __shared__ int* ptr ; // expected-error {{__shared__ variable 'ptr' cannot be 'extern'}}
+}
+
+__host__ __device__ void bar() {
+ extern __shared__ int arr[]; // ok
+ extern __shared__ int arr0[0]; // expected-error {{__shared__ variable 'arr0' cannot be 'extern'}}
+ extern __shared__ int arr1[1]; // expected-error {{__shared__ variable 'arr1' cannot be 'extern'}}
+ extern __shared__ int* ptr ; // expected-error {{__shared__ variable 'ptr' cannot be 'extern'}}
+}
+
+extern __shared__ int global; // expected-error {{__shared__ variable 'global' cannot be 'extern'}}
+extern __shared__ int global_arr[]; // ok
+extern __shared__ int global_arr1[1]; // expected-error {{__shared__ variable 'global_arr1' cannot be 'extern'}}