blob: 4c2b88a7f01d1c3223af4be08e709672a54a0370 [file] [log] [blame]
Ryan Flynnd0439682009-08-07 16:20:20 +00001// RUN: clang-cc -Wall -fsyntax-only -verify %s
2
3#include <limits.h>
4
5enum {
6 X = 1 << 0,
7 Y = 1 << 1,
8 Z = 1 << 2
9};
Chris Lattner1dcf2c82007-12-13 07:28:16 +000010
11void test() {
12 char c;
Ryan Flynnd0439682009-08-07 16:20:20 +000013
14 c = 0 << 0;
15 c = 0 << 1; // expected-warning {{no effect}}
16 c = 1 << 0;
17 c = 1 << -0;
18 c = 1 >> -0;
19 c = 1 << -1; // expected-warning {{shift count is negative}}
20 c = 1 >> -1; // expected-warning {{shift count is negative}}
21 c = 1 << c;
22 c <<= 0; // expected-warning {{no effect}}
23 c >>= 0; // expected-warning {{no effect}}
24 c <<= 1;
25 c >>= 1;
26 c <<= -1; // expected-warning {{shift count is negative}}
27 c >>= -1; // expected-warning {{shift count is negative}}
28 c <<= 999999; // expected-warning {{shift count >= width of type}}
29 c >>= 999999; // expected-warning {{shift count >= width of type}}
30 c <<= CHAR_BIT; // expected-warning {{shift count >= width of type}}
31 c >>= CHAR_BIT; // expected-warning {{shift count >= width of type}}
32 c <<= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
33 c >>= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
34 (void)((long)c << CHAR_BIT);
Chris Lattner1dcf2c82007-12-13 07:28:16 +000035}