]> granicus.if.org Git - clang/commitdiff
Fix an OpenCL test case that was OpenCL conformant.
authorJoey Gouly <joey.gouly@arm.com>
Thu, 24 Jan 2013 15:14:22 +0000 (15:14 +0000)
committerJoey Gouly <joey.gouly@arm.com>
Thu, 24 Jan 2013 15:14:22 +0000 (15:14 +0000)
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

test/SemaOpenCL/shifts.cl [new file with mode: 0644]

diff --git a/test/SemaOpenCL/shifts.cl b/test/SemaOpenCL/shifts.cl
new file mode 100644 (file)
index 0000000..f71927c
--- /dev/null
@@ -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);
+}