[Clang] add additional tests for -Wshift-bool (#130339)

Fixes
https://github.com/llvm/llvm-project/pull/127336#pullrequestreview-2665950553
This commit is contained in:
Oleksandr T. 2025-03-13 01:10:40 +02:00 committed by GitHub
parent ecf4d995f6
commit c14e459ef8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,27 @@
// RUN: %clang_cc1 -fsyntax-only -Wshift-bool -verify %s
void t() {
int x = 10;
int y = 5;
int a = (x < y) << 1;
int b = (x < y) >> 1;
int c = (x > y) << 1;
int d = (x > y) >> 1;
int e = (x == y) << 1;
int f = (x == y) >> 1;
int g = (x != y) << 1;
int h = (x != y) >> 1;
int i = (x < y) << 0;
int j = (x < y) >> 0;
int k = (x < y) << -1; // expected-warning {{shift count is negative}}
int l = (x < y) >> -1; // expected-warning {{shift count is negative}}
if (((x < y) << 1) != 0) { }
if (((x < y) >> 1) != 0) { }
}

View File

@ -3,6 +3,7 @@
void t() {
int x = 10;
bool y = true;
int z = 1;
bool a = y << x;
bool b = y >> x; // expected-warning {{right shifting a 'bool' implicitly converts it to 'int'}}
@ -20,6 +21,8 @@ void t() {
bool i = y << 0;
bool j = y >> 0; // expected-warning {{right shifting a 'bool' implicitly converts it to 'int'}}
bool k = (x < z) >> 1; // expected-warning {{right shifting a 'bool' implicitly converts it to 'int'}}
if ((y << 1) != 0) { }
if ((y >> 1) != 0) { } // expected-warning {{right shifting a 'bool' implicitly converts it to 'int'}}
}