summaryrefslogtreecommitdiffstats
path: root/test/SemaOpenCL
diff options
context:
space:
mode:
authorJoey Gouly <joey.gouly@arm.com>2013-01-24 15:14:22 +0000
committerJoey Gouly <joey.gouly@arm.com>2013-01-24 15:14:22 +0000
commit627b46315389b206d3e25169ca585bd52853b04b (patch)
tree9666f8dbba0c2b3dbbb3e68de67d823a7b190b8b /test/SemaOpenCL
parentd2db16f59601bc028f4f973990cc6d4abe95b91a (diff)
Fix an OpenCL test case that was OpenCL conformant.
It had program scope variables that were not in the constant address space, make them to be function scope variables instead. Also move the test to the SemaOpenCL directory. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173352 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaOpenCL')
-rw-r--r--test/SemaOpenCL/shifts.cl14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/SemaOpenCL/shifts.cl b/test/SemaOpenCL/shifts.cl
new file mode 100644
index 0000000000..f71927c7cf
--- /dev/null
+++ b/test/SemaOpenCL/shifts.cl
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -x cl -O0 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
+// OpenCL essentially reduces all shift amounts to the last word-size bits before evaluating.
+// Test this both for variables and constants evaluated in the front-end.
+
+//CHECK: @negativeShift32
+int negativeShift32(int a,int b) {
+ //CHECK: %array0 = alloca [256 x i8]
+ char array0[((int)1)<<40];
+ //CHECK: %array1 = alloca [256 x i8]
+ char array1[((int)1)<<(-24)];
+
+ //CHECK: ret i32 65536
+ return ((int)1)<<(-16);
+}