diff options
author | Davide Italiano <davide@freebsd.org> | 2015-07-06 18:02:09 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2015-07-06 18:02:09 +0000 |
commit | bf0f7757e24264bb6e211e30f60a75f272b0a90d (patch) | |
tree | 7e32d8cc052765a1eea8d89cb7bb42ce4abc0227 /clang/test/Sema/shift.c | |
parent | 183f53fd2213006589847fe40567720296e68717 (diff) | |
download | bcm5719-llvm-bf0f7757e24264bb6e211e30f60a75f272b0a90d.tar.gz bcm5719-llvm-bf0f7757e24264bb6e211e30f60a75f272b0a90d.zip |
[Sema] Warn when shifting a negative value.
Example:
% ./clang -Wshift-negative-value emit.c
emit.c:3:14: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
int a = -1 << 3;
~~ ^
1 warning generated.
PR: 24026
Differential Revision: http://reviews.llvm.org/D10938
Reviewed by: rsmith
llvm-svn: 241478
Diffstat (limited to 'clang/test/Sema/shift.c')
-rw-r--r-- | clang/test/Sema/shift.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/test/Sema/shift.c b/clang/test/Sema/shift.c index d3555448851..07c5fe5280e 100644 --- a/clang/test/Sema/shift.c +++ b/clang/test/Sema/shift.c @@ -39,7 +39,8 @@ void test() { i = 1 << (WORD_BIT - 2); i = 2 << (WORD_BIT - 1); // expected-warning {{bits to represent, but 'int' only has}} i = 1 << (WORD_BIT - 1); // expected-warning {{sets the sign bit of the shift expression}} - i = -1 << (WORD_BIT - 1); + i = -1 << (WORD_BIT - 1); // expected-warning {{shifting a negative signed value is undefined}} + i = -1 << 0; // expected-warning {{shifting a negative signed value is undefined}} i = 0 << (WORD_BIT - 1); i = (char)1 << (WORD_BIT - 2); @@ -48,7 +49,7 @@ void test() { u = 5U << (WORD_BIT - 1); long long int lli; - lli = INT_MIN << 2; // expected-warning {{bits to represent, but 'int' only has}} + lli = INT_MIN << 2; // expected-warning {{shifting a negative signed value is undefined}} lli = 1LL << (sizeof(long long) * CHAR_BIT - 2); } |