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