David Tweed | 7a83421 | 2013-01-07 16:43:27 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -x cl -O1 -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: @array0 = common global [256 x i8] |
| 6 | char array0[((int)1)<<40]; |
| 7 | //CHECK: @array1 = common global [256 x i8] |
| 8 | char array1[((int)1)<<(-24)]; |
| 9 | |
| 10 | //CHECK: @negativeShift32 |
| 11 | int negativeShift32(int a,int b) { |
| 12 | //CHECK: ret i32 65536 |
| 13 | return ((int)1)<<(-16); |
| 14 | } |