summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema/shift.c
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2015-07-06 18:02:09 +0000
committerDavide Italiano <davide@freebsd.org>2015-07-06 18:02:09 +0000
commitbf0f7757e24264bb6e211e30f60a75f272b0a90d (patch)
tree7e32d8cc052765a1eea8d89cb7bb42ce4abc0227 /clang/test/Sema/shift.c
parent183f53fd2213006589847fe40567720296e68717 (diff)
downloadbcm5719-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.c5
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);
}
OpenPOWER on IntegriCloud