зеркало из https://github.com/microsoft/clang-1.git
41 строка
1.0 KiB
C
41 строка
1.0 KiB
C
// RUN: %clang -Wall -fsyntax-only -Xclang -verify %s
|
|
|
|
#include <limits.h>
|
|
|
|
enum {
|
|
X = 1 << 0,
|
|
Y = 1 << 1,
|
|
Z = 1 << 2
|
|
};
|
|
|
|
void test() {
|
|
char c;
|
|
|
|
c = 0 << 0;
|
|
c = 0 << 1;
|
|
c = 1 << 0;
|
|
c = 1 << -0;
|
|
c = 1 >> -0;
|
|
c = 1 << -1; // expected-warning {{shift count is negative}}
|
|
c = 1 >> -1; // expected-warning {{shift count is negative}}
|
|
c = 1 << c;
|
|
c <<= 0;
|
|
c >>= 0;
|
|
c <<= 1;
|
|
c >>= 1;
|
|
c <<= -1; // expected-warning {{shift count is negative}}
|
|
c >>= -1; // expected-warning {{shift count is negative}}
|
|
c <<= 999999; // expected-warning {{shift count >= width of type}}
|
|
c >>= 999999; // expected-warning {{shift count >= width of type}}
|
|
c <<= CHAR_BIT; // expected-warning {{shift count >= width of type}}
|
|
c >>= CHAR_BIT; // expected-warning {{shift count >= width of type}}
|
|
c <<= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
|
|
c >>= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
|
|
(void)((long)c << CHAR_BIT);
|
|
}
|
|
|
|
#define a 0
|
|
#define ashift 8
|
|
enum { b = (a << ashift) };
|
|
|