summaryrefslogtreecommitdiffstats
path: root/test/CodeGenOpenCLCXX/local_addrspace_init.cl
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenOpenCLCXX/local_addrspace_init.cl')
-rw-r--r--test/CodeGenOpenCLCXX/local_addrspace_init.cl20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGenOpenCLCXX/local_addrspace_init.cl b/test/CodeGenOpenCLCXX/local_addrspace_init.cl
new file mode 100644
index 0000000000..8f78a35343
--- /dev/null
+++ b/test/CodeGenOpenCLCXX/local_addrspace_init.cl
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 %s -triple spir -cl-std=c++ -emit-llvm -O0 -o - | FileCheck %s
+
+// Test that we don't initialize local address space objects.
+//CHECK: @_ZZ4testvE1i = internal addrspace(3) global i32 undef
+//CHECK: @_ZZ4testvE2ii = internal addrspace(3) global %class.C undef
+class C {
+ int i;
+};
+
+kernel void test() {
+ __local int i;
+ __local C ii;
+ // FIXME: In OpenCL C we don't accept initializers for local
+ // address space variables. User defined initialization could
+ // make sense, but would it mean that all work items need to
+ // execute it? Potentially disallowing any initialization would
+ // make things easier and assingments can be used to set specific
+ // values. This rules should make it consistent with OpenCL C.
+ //__local C c();
+}