diff options
Diffstat (limited to 'test/Sema/warn-bitwise-compare.c')
-rw-r--r-- | test/Sema/warn-bitwise-compare.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/test/Sema/warn-bitwise-compare.c b/test/Sema/warn-bitwise-compare.c index 175f8f5367..d08f1bf13f 100644 --- a/test/Sema/warn-bitwise-compare.c +++ b/test/Sema/warn-bitwise-compare.c @@ -1,7 +1,12 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -Wtautological-compare %s +// RUN: %clang_cc1 -fsyntax-only -verify -Wtautological-bitwise-compare %s #define mydefine 2 +enum { + ZERO, + ONE, +}; + void f(int x) { if ((8 & x) == 3) {} // expected-warning {{bitwise comparison always evaluates to false}} if ((x & 8) == 4) {} // expected-warning {{bitwise comparison always evaluates to false}} @@ -13,6 +18,9 @@ void f(int x) { if ((x & 0x15) == 0x13) {} // expected-warning {{bitwise comparison always evaluates to false}} if ((0x23 | x) == 0x155){} // expected-warning {{bitwise comparison always evaluates to false}} + if (!!((8 & x) == 3)) {} // expected-warning {{bitwise comparison always evaluates to false}} + int y = ((8 & x) == 3) ? 1 : 2; // expected-warning {{bitwise comparison always evaluates to false}} + if ((x & 8) == 8) {} if ((x & 8) != 8) {} if ((x | 4) == 4) {} @@ -26,3 +34,14 @@ void f(int x) { if ((x & mydefine) == 8) {} if ((x | mydefine) == 4) {} } + +void g(int x) { + if (x | 5) {} // expected-warning {{bitwise or with non-zero value always evaluates to true}} + if (5 | x) {} // expected-warning {{bitwise or with non-zero value always evaluates to true}} + if (!((x | 5))) {} // expected-warning {{bitwise or with non-zero value always evaluates to true}} + + if (x | -1) {} // expected-warning {{bitwise or with non-zero value always evaluates to true}} + if (x | ONE) {} // expected-warning {{bitwise or with non-zero value always evaluates to true}} + + if (x | ZERO) {} +} |