2019-04-04 19:08:51 +08:00
|
|
|
// 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.
|
2019-05-07 22:22:34 +08:00
|
|
|
//CHECK: @_ZZ4testE1i = internal addrspace(3) global i32 undef
|
|
|
|
//CHECK: @_ZZ4testE2ii = internal addrspace(3) global %class.C undef
|
2019-04-04 19:08:51 +08:00
|
|
|
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();
|
|
|
|
}
|