blob: 558a7d20065a27bd2f8eceb4f4da3f41691961f3 [file] [log] [blame]
Daniel Dunbar80737ad2009-12-15 22:01:24 +00001// RUN: %clang -Wall -fsyntax-only -Xclang -verify %s
Ryan Flynnd0439682009-08-07 16:20:20 +00002
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