[libc-commits] [libc] [libc][test][stdbit] fix -Wimplicit-int-conversion (PR #126616)

Nick Desaulniers via libc-commits libc-commits at lists.llvm.org
Mon Feb 10 14:45:09 PST 2025


https://github.com/nickdesaulniers created https://github.com/llvm/llvm-project/pull/126616

When cross compiling the libc-stdbit-tests, the existing tests trigger numerous
instances of -Wimplicit-int-conversion. The truncation of these implicit
promotions is intentional.


>From 1107146bd1083b44c2d3b79b4fec1c770729ec50 Mon Sep 17 00:00:00 2001
From: Nick Desaulniers <ndesaulniers at google.com>
Date: Mon, 10 Feb 2025 14:40:52 -0800
Subject: [PATCH] [libc][test][stdbit] fix -Wimplicit-int-conversion

When cross compiling the libc-stdbit-tests, the existing tests trigger numerous
instances of -Wimplicit-int-conversion. The truncation of these implicit
promotions is intentional.
---
 libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp            | 6 +++---
 libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp            | 6 +++---
 libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp   | 2 +-
 libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp   | 2 +-
 libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp  | 2 +-
 libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp  | 2 +-
 libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp  | 2 +-
 libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp  | 2 +-
 libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp | 2 +-
 libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp | 2 +-
 libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp      | 2 +-
 libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp      | 2 +-
 libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp        | 2 +-
 libc/test/src/stdbit/stdc_leading_ones_us_test.cpp        | 2 +-
 libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp       | 2 +-
 libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp       | 2 +-
 libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp       | 2 +-
 libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp       | 2 +-
 libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp      | 2 +-
 libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp      | 2 +-
 20 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp b/libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp
index 1ef87b0d44de64e..fcbb5c82af23a7f 100644
--- a/libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp
@@ -17,18 +17,18 @@ TEST(LlvmLibcStdcBitceilUcTest, Zero) {
 
 TEST(LlvmLibcStdcBitceilUcTest, Ones) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc(static_cast<unsigned char>(1U << i)),
               static_cast<unsigned char>(1U << i));
 }
 
 TEST(LlvmLibcStdcBitceilUcTest, OneLessThanPowsTwo) {
   for (unsigned i = 2U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc((1U << i) - 1),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc(static_cast<unsigned char>((1U << i) - 1)),
               static_cast<unsigned char>(1U << i));
 }
 
 TEST(LlvmLibcStdcBitceilUcTest, OneMoreThanPowsTwo) {
   for (unsigned i = 1U; i != UCHAR_WIDTH - 1; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc((1U << i) + 1),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_uc(static_cast<unsigned char>((1U << i) + 1)),
               static_cast<unsigned char>(1U << (i + 1)));
 }
diff --git a/libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp b/libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp
index 56873c51828f104..495c1fd14d84993 100644
--- a/libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp
@@ -17,18 +17,18 @@ TEST(LlvmLibcStdcBitceilUsTest, Zero) {
 
 TEST(LlvmLibcStdcBitceilUsTest, Ones) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us(static_cast<unsigned short>(1U << i)),
               static_cast<unsigned short>(1U << i));
 }
 
 TEST(LlvmLibcStdcBitceilUsTest, OneLessThanPowsTwo) {
   for (unsigned i = 2U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us((1U << i) - 1),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us(static_cast<unsigned short>((1U << i) - 1)),
               static_cast<unsigned short>(1U << i));
 }
 
 TEST(LlvmLibcStdcBitceilUsTest, OneMoreThanPowsTwo) {
   for (unsigned i = 1U; i != USHRT_WIDTH - 1; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us((1U << i) + 1),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_bit_ceil_us(static_cast<unsigned short>((1U << i) + 1)),
               static_cast<unsigned short>(1U << (i + 1)));
 }
diff --git a/libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp b/libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp
index b8c8db587098e4c..59fbf8bd2912318 100644
--- a/libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp
@@ -16,6 +16,6 @@ TEST(LlvmLibcStdcFirstLeadingOneUcTest, Zero) {
 
 TEST(LlvmLibcStdcFirstLeadingOneUcTest, OneHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_one_uc(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_one_uc(static_cast<unsigned char>(1U << i)),
               UCHAR_WIDTH - i);
 }
diff --git a/libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp b/libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp
index e9488335d9b008c..185fbcdb7d19223 100644
--- a/libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp
@@ -16,6 +16,6 @@ TEST(LlvmLibcStdcFirstLeadingOneUsTest, Zero) {
 
 TEST(LlvmLibcStdcFirstLeadingOneUsTest, OneHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_one_us(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_one_us(static_cast<unsigned short>(1U << i)),
               USHRT_WIDTH - i);
 }
diff --git a/libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp b/libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp
index ac7e8c7d9e64be3..d98bf7a3d13edac 100644
--- a/libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp
@@ -16,6 +16,6 @@ TEST(LlvmLibcStdcFirstLeadingZeroUcTest, ALL) {
 
 TEST(LlvmLibcStdcFirstLeadingZeroUcTest, ZeroHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_zero_uc(~(1U << i)),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_zero_uc(static_cast<unsigned char>(~(1U << i))),
               UCHAR_WIDTH - i);
 }
diff --git a/libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp b/libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp
index 37f8612675a7a13..74e44f5d179b7a5 100644
--- a/libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp
@@ -16,6 +16,6 @@ TEST(LlvmLibcStdcFirstLeadingZeroUsTest, ALL) {
 
 TEST(LlvmLibcStdcFirstLeadingZeroUsTest, ZeroHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_zero_us(~(1U << i)),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_leading_zero_us(static_cast<unsigned short>(~(1U << i))),
               USHRT_WIDTH - i);
 }
diff --git a/libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp b/libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp
index ed2b4921cdada45..630b444a46feea9 100644
--- a/libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcFirstTrailingOneUcTest, ALL) {
 
 TEST(LlvmLibcStdcFirstTrailingOneUcTest, OneHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_one_uc(1U << i), i + 1);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_one_uc(static_cast<unsigned char>(1U << i)), i + 1);
 }
diff --git a/libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp b/libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp
index 60021552310bee6..c112062ec78e721 100644
--- a/libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcFirstTrailingOneUsTest, ALL) {
 
 TEST(LlvmLibcStdcFirstTrailingOneUsTest, OneHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_one_us(1U << i), i + 1);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_one_us(static_cast<unsigned short>(1U << i)), i + 1);
 }
diff --git a/libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp b/libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp
index 2b17aa6536e6692..1e50765ad9bdce4 100644
--- a/libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcFirstTrailingZeroUcTest, ALL) {
 
 TEST(LlvmLibcStdcFirstTrailingZeroUcTest, ZeroHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_zero_uc(~(1U << i)), i + 1);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_zero_uc(static_cast<unsigned char>(~(1U << i))), i + 1);
 }
diff --git a/libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp b/libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp
index e370379300e4a48..67d30baa8805254 100644
--- a/libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcFirstTrailingZeroUsTest, ALL) {
 
 TEST(LlvmLibcStdcFirstTrailingZeroUsTest, ZeroHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_zero_us(~(1U << i)), i + 1);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_first_trailing_zero_us(static_cast<unsigned short>(~(1U << i))), i + 1);
 }
diff --git a/libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp b/libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp
index 1bc189cf0b665fd..7f25c141a93b424 100644
--- a/libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcHasSingleBitUcTest, Zero) {
 
 TEST(LlvmLibcStdcHasSingleBitUcTest, OneHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_has_single_bit_uc(1U << i), true);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_has_single_bit_uc(static_cast<unsigned char>(1U << i)), true);
 }
diff --git a/libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp b/libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp
index a038f6fac012323..aeebeb29f48f6ac 100644
--- a/libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp
@@ -16,5 +16,5 @@ TEST(LlvmLibcStdcHasSingleBitUsTest, Zero) {
 
 TEST(LlvmLibcStdcHasSingleBitUsTest, OneHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_has_single_bit_us(1U << i), true);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_has_single_bit_us(static_cast<unsigned short>(1U << i)), true);
 }
diff --git a/libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp b/libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp
index 5d32d92e327a395..7120f608972f4bc 100644
--- a/libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp
@@ -17,6 +17,6 @@ TEST(LlvmLibcStdcLeadingOnesUcTest, All) {
 
 TEST(LlvmLibcStdcLeadingOnesUcTest, ZeroHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_uc(~(1U << i)),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_uc(static_cast<unsigned char>(~(1U << i))),
               UCHAR_WIDTH - i - 1U);
 }
diff --git a/libc/test/src/stdbit/stdc_leading_ones_us_test.cpp b/libc/test/src/stdbit/stdc_leading_ones_us_test.cpp
index 91a125370ec1584..123aa88f494222d 100644
--- a/libc/test/src/stdbit/stdc_leading_ones_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_leading_ones_us_test.cpp
@@ -17,6 +17,6 @@ TEST(LlvmLibcStdcLeadingOnesUsTest, All) {
 
 TEST(LlvmLibcStdcLeadingOnesUsTest, ZeroHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_us(~(1U << i)),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_us(static_cast<unsigned short>(~(1U << i))),
               USHRT_WIDTH - i - 1U);
 }
diff --git a/libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp b/libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp
index 3d555072927acdd..c89a37726472707 100644
--- a/libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp
@@ -17,6 +17,6 @@ TEST(LlvmLibcStdcLeadingZerosUcTest, Zero) {
 
 TEST(LlvmLibcStdcLeadingZerosUcTest, OneHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_uc(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_uc(static_cast<unsigned char>(1U << i)),
               UCHAR_WIDTH - i - 1U);
 }
diff --git a/libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp b/libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp
index afb418a24ad5423..e2efc028baba0d2 100644
--- a/libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp
@@ -17,6 +17,6 @@ TEST(LlvmLibcStdcLeadingZerosUsTest, Zero) {
 
 TEST(LlvmLibcStdcLeadingZerosUsTest, OneHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_us(1U << i),
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_us(static_cast<unsigned short>(1U << i)),
               USHRT_WIDTH - i - 1U);
 }
diff --git a/libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp b/libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp
index 79d4e5b8b8032da..43218e65a219a9d 100644
--- a/libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp
@@ -17,5 +17,5 @@ TEST(LlvmLibcStdcTrailingOnesUcTest, ALL) {
 
 TEST(LlvmLibcStdcTrailingOnesUcTest, ZeroHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_ones_uc(~(1U << i)), i);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_ones_uc(static_cast<unsigned char>(~(1U << i))), i);
 }
diff --git a/libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp b/libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp
index 7ab15743ed1e043..d449d34158fb8b9 100644
--- a/libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp
@@ -17,5 +17,5 @@ TEST(LlvmLibcStdcTrailingOnesUsTest, ALL) {
 
 TEST(LlvmLibcStdcTrailingOnesUsTest, ZeroHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_ones_us(~(1U << i)), i);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_ones_us(static_cast<unsigned short>(~(1U << i))), i);
 }
diff --git a/libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp b/libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp
index c02b518865d9f77..b808a8ff3ea7100 100644
--- a/libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp
+++ b/libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp
@@ -17,5 +17,5 @@ TEST(LlvmLibcStdcTrailingZerosUcTest, Zero) {
 
 TEST(LlvmLibcStdcTrailingZerosUcTest, OneHot) {
   for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_zeros_uc(1U << i), i);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_zeros_uc(static_cast<unsigned char>(1U << i)), i);
 }
diff --git a/libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp b/libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp
index a9f8327dfd91409..628364fc83acd38 100644
--- a/libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp
+++ b/libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp
@@ -17,5 +17,5 @@ TEST(LlvmLibcStdcTrailingZerosUsTest, Zero) {
 
 TEST(LlvmLibcStdcTrailingZerosUsTest, OneHot) {
   for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
-    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_zeros_us(1U << i), i);
+    EXPECT_EQ(LIBC_NAMESPACE::stdc_trailing_zeros_us(static_cast<unsigned short>(1U << i)), i);
 }



More information about the libc-commits mailing list