blob: 2516d1b861072513777819d23a86bd4a68d22949 [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;
Ryan Flynn8045c732009-08-08 19:18:23 +000015 c = 0 << 1;
Ryan Flynnd0439682009-08-07 16:20:20 +000016 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;
Ryan Flynn8045c732009-08-08 19:18:23 +000022 c <<= 0;
23 c >>= 0;
Ryan Flynnd0439682009-08-07 16:20:20 +000024 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}
Ryan Flynn8045c732009-08-08 19:18:23 +000036
37#define a 0
38#define ashift 8
39enum { b = (a << ashift) };
40