https://github.com/a-tarasyuk updated https://github.com/llvm/llvm-project/pull/130339
>From bed2cb009ae2e560aa00f86b90c57d82f97bb435 Mon Sep 17 00:00:00 2001 From: Oleksandr T <oleksandr.taras...@outlook.com> Date: Fri, 7 Mar 2025 22:10:24 +0200 Subject: [PATCH 1/4] [Clang] add additional tests for -Wshift-bool --- clang/test/Sema/shift-bool.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clang/test/Sema/shift-bool.cpp b/clang/test/Sema/shift-bool.cpp index a17a0e0ad9e7d..efaca65aacaed 100644 --- a/clang/test/Sema/shift-bool.cpp +++ b/clang/test/Sema/shift-bool.cpp @@ -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'}} @@ -22,4 +23,6 @@ void t() { if ((y << 1) != 0) { } if ((y >> 1) != 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'}} } >From 9be7657ef45482a84c571b6b3f15be833841467a Mon Sep 17 00:00:00 2001 From: Oleksandr T <oleksandr.taras...@outlook.com> Date: Tue, 11 Mar 2025 17:15:52 +0200 Subject: [PATCH 2/4] add c test --- clang/test/Sema/shift-bool.c | 24 ++++++++++++++++++++++++ clang/test/Sema/shift-bool.cpp | 3 --- 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 clang/test/Sema/shift-bool.c diff --git a/clang/test/Sema/shift-bool.c b/clang/test/Sema/shift-bool.c new file mode 100644 index 0000000000000..589ba49fa2bba --- /dev/null +++ b/clang/test/Sema/shift-bool.c @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -fsyntax-only -Wshift-bool -verify %s + +void t() { + int x = 10; + int y = 1; + + int a = y << x; + int b = y >> x; + + int c = 0 << x; + int d = 0 >> x; + + int e = y << 1; + int f = y >> 1; + + int g = y << -1; // expected-warning {{shift count is negative}} + int h = y >> -1; // expected-warning {{shift count is negative}} + + int i = y << 0; + int j = y >> 0; + + if ((y << 1) != 0) { } + if ((y >> 1) != 0) { } +} diff --git a/clang/test/Sema/shift-bool.cpp b/clang/test/Sema/shift-bool.cpp index efaca65aacaed..a17a0e0ad9e7d 100644 --- a/clang/test/Sema/shift-bool.cpp +++ b/clang/test/Sema/shift-bool.cpp @@ -3,7 +3,6 @@ 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'}} @@ -23,6 +22,4 @@ void t() { if ((y << 1) != 0) { } if ((y >> 1) != 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'}} } >From ae6e763afd673f5806748d4d23ea138ac6fc23e4 Mon Sep 17 00:00:00 2001 From: Oleksandr T <oleksandr.taras...@outlook.com> Date: Tue, 11 Mar 2025 22:45:01 +0200 Subject: [PATCH 3/4] update c test --- clang/test/Sema/shift-bool.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/clang/test/Sema/shift-bool.c b/clang/test/Sema/shift-bool.c index 589ba49fa2bba..f3b00aa87e068 100644 --- a/clang/test/Sema/shift-bool.c +++ b/clang/test/Sema/shift-bool.c @@ -2,23 +2,26 @@ void t() { int x = 10; - int y = 1; + int y = 5; - int a = y << x; - int b = y >> x; + int a = (x < y) << 1; + int b = (x < y) >> 1; - int c = 0 << x; - int d = 0 >> x; + int c = (x > y) << 1; + int d = (x > y) >> 1; - int e = y << 1; - int f = y >> 1; + int e = (x == y) << 1; + int f = (x == y) >> 1; - int g = y << -1; // expected-warning {{shift count is negative}} - int h = y >> -1; // expected-warning {{shift count is negative}} + int g = (x != y) << 1; + int h = (x != y) >> 1; - int i = y << 0; - int j = y >> 0; + int i = (x < y) << 0; + int j = (x < y) >> 0; - if ((y << 1) != 0) { } - if ((y >> 1) != 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) { } } >From 3d5293c346f4485f3e28d1330899255c274da529 Mon Sep 17 00:00:00 2001 From: Oleksandr T <oleksandr.taras...@outlook.com> Date: Tue, 11 Mar 2025 22:48:44 +0200 Subject: [PATCH 4/4] update cpp test --- clang/test/Sema/shift-bool.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clang/test/Sema/shift-bool.cpp b/clang/test/Sema/shift-bool.cpp index a17a0e0ad9e7d..5350da91976f9 100644 --- a/clang/test/Sema/shift-bool.cpp +++ b/clang/test/Sema/shift-bool.cpp @@ -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'}} } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits