• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -x cl -O0 -emit-llvm  %s -o - -triple x86_64-linux-gnu | FileCheck %s
2// OpenCL essentially reduces all shift amounts to the last word-size bits before evaluating.
3// Test this both for variables and constants evaluated in the front-end.
4
5// CHECK: @gtest1 = constant i64 2147483648
6__constant const unsigned long gtest1 = 1UL << 31;
7
8// CHECK: @negativeShift32
9int negativeShift32(int a,int b) {
10  // CHECK: %array0 = alloca [256 x i8]
11  char array0[((int)1)<<40];
12  // CHECK: %array1 = alloca [256 x i8]
13  char array1[((int)1)<<(-24)];
14
15  // CHECK: ret i32 65536
16  return ((int)1)<<(-16);
17}
18