summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorGuy Benyei <guy.benyei@intel.com>2013-01-20 12:31:11 +0000
committerGuy Benyei <guy.benyei@intel.com>2013-01-20 12:31:11 +0000
commit1b4fb3e08b28f12d508aec0bbdcb6f41cfb0ee38 (patch)
tree5cf8e9985a92136f34520167b6a007eb00fe1468 /clang/test
parent359e09d4f50f381dc85d64bc7ea4e06013d09779 (diff)
downloadbcm5719-llvm-1b4fb3e08b28f12d508aec0bbdcb6f41cfb0ee38.tar.gz
bcm5719-llvm-1b4fb3e08b28f12d508aec0bbdcb6f41cfb0ee38.zip
Implement OpenCL event_t as Clang builtin type, including event_t related OpenCL restrictions (OpenCL 1.2 spec 6.9)
llvm-svn: 172973
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenOpenCL/event_t.cl12
-rw-r--r--clang/test/CodeGenOpenCL/opencl_types.cl2
-rw-r--r--clang/test/PCH/ocl_types.cl4
-rw-r--r--clang/test/PCH/ocl_types.h3
-rw-r--r--clang/test/SemaOpenCL/event_t.cl17
5 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/CodeGenOpenCL/event_t.cl b/clang/test/CodeGenOpenCL/event_t.cl
new file mode 100644
index 00000000000..ddf12a9d8b9
--- /dev/null
+++ b/clang/test/CodeGenOpenCL/event_t.cl
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 %s -emit-llvm -o - -O0 | FileCheck %s
+
+void foo(event_t evt);
+
+void kernel ker() {
+ event_t e;
+// CHECK: alloca %opencl.event_t*,
+ foo(e);
+// CHECK: call void @foo(%opencl.event_t* %
+ foo(0);
+// CHECK: call void @foo(%opencl.event_t* null)
+}
diff --git a/clang/test/CodeGenOpenCL/opencl_types.cl b/clang/test/CodeGenOpenCL/opencl_types.cl
index 35444ed9cbf..ab2ebe1ce71 100644
--- a/clang/test/CodeGenOpenCL/opencl_types.cl
+++ b/clang/test/CodeGenOpenCL/opencl_types.cl
@@ -19,4 +19,6 @@ void fnc3(image3d_t img) {}
// CHECK: @fnc3(%opencl.image3d_t*
kernel void foo(image1d_t img) {
+ event_t evt;
+// CHECK: alloca %opencl.event_t*
}
diff --git a/clang/test/PCH/ocl_types.cl b/clang/test/PCH/ocl_types.cl
index 972853b50fd..29de5e3a0eb 100644
--- a/clang/test/PCH/ocl_types.cl
+++ b/clang/test/PCH/ocl_types.cl
@@ -16,3 +16,7 @@ void foo4(img2d_t img);
void foo5(img2darr_t img);
void foo6(img3d_t img);
+
+void foo8(evt_t evt) {
+ evt_t loc_evt;
+}
diff --git a/clang/test/PCH/ocl_types.h b/clang/test/PCH/ocl_types.h
index bec065afff1..829ea03151d 100644
--- a/clang/test/PCH/ocl_types.h
+++ b/clang/test/PCH/ocl_types.h
@@ -17,3 +17,6 @@ typedef image2d_array_t img2darr_t;
// image3d_t
typedef image3d_t img3d_t;
+
+// event_t
+typedef event_t evt_t;
diff --git a/clang/test/SemaOpenCL/event_t.cl b/clang/test/SemaOpenCL/event_t.cl
new file mode 100644
index 00000000000..57a0981cf13
--- /dev/null
+++ b/clang/test/SemaOpenCL/event_t.cl
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
+
+event_t glb_evt; // expected-error {{the event_t type cannot be used to declare a program scope variable}}
+
+struct evt_s {
+ event_t evt; // expected-error {{the event_t type cannot be used to declare a structure or union field}}
+} evt_str;
+
+void foo(event_t evt); // expected-note {{passing argument to parameter 'evt' here}}
+
+void kernel ker(event_t argevt) { // expected-error {{the event_t type cannot be used to declare a kernel function argument}}
+ event_t e;
+ constant event_t const_evt; // expected-error {{the event_t type can only be used with __private address space qualifier}}
+ foo(e);
+ foo(0);
+ foo(5); // expected-error {{passing 'int' to parameter of incompatible type 'event_t'}}
+}
OpenPOWER on IntegriCloud