[libc-commits] [libc] [libc][NFC] Couple of small warning fixes (PR #67847)
Mikhail R. Gadelha via libc-commits
libc-commits at lists.llvm.org
Mon Oct 2 12:34:45 PDT 2023
https://github.com/mikhailramalho updated https://github.com/llvm/llvm-project/pull/67847
>From 66140766aeef9309cb514b449a9e52423d81efb0 Mon Sep 17 00:00:00 2001
From: "Mikhail R. Gadelha" <mikhail at igalia.com>
Date: Fri, 29 Sep 2023 16:44:10 -0300
Subject: [PATCH 1/3] [libc][NFC] Couple of small warning fixes
This patch fixes a couple of warning when compiling with gcc 13:
* CPP/type_traits_test.cpp: 'apply' overrides a member function but is not marked 'override'
* UnitTest/LibcTest.cpp:98: control reaches end of non-void function
* MPFRWrapper/MPFRUtils.cpp:75: control reaches end of non-void function
* smoke/FrexpTest.h:92: backslash-newline at end of file
---
libc/test/UnitTest/LibcTest.cpp | 1 +
libc/test/src/__support/CPP/type_traits_test.cpp | 2 +-
libc/test/src/math/smoke/FrexpTest.h | 2 +-
libc/utils/MPFRWrapper/MPFRUtils.cpp | 1 +
4 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/libc/test/UnitTest/LibcTest.cpp b/libc/test/UnitTest/LibcTest.cpp
index 2f18d5778e71d84..b01f40f0526461f 100644
--- a/libc/test/UnitTest/LibcTest.cpp
+++ b/libc/test/UnitTest/LibcTest.cpp
@@ -95,6 +95,7 @@ bool test(RunContext *Ctx, TestCond Cond, ValType LHS, ValType RHS,
case TestCond::GE:
return ExplainDifference(LHS >= RHS, "greater than or equal to");
}
+ __builtin_unreachable();
}
} // namespace internal
diff --git a/libc/test/src/__support/CPP/type_traits_test.cpp b/libc/test/src/__support/CPP/type_traits_test.cpp
index 0e5f4a1f738b7aa..a2051f380275326 100644
--- a/libc/test/src/__support/CPP/type_traits_test.cpp
+++ b/libc/test/src/__support/CPP/type_traits_test.cpp
@@ -157,7 +157,7 @@ struct A {
struct B : public A {
virtual ~B() {}
- virtual void apply() { state = B_APPLY_CALLED; }
+ virtual void apply() override { state = B_APPLY_CALLED; }
};
void free_function() {}
diff --git a/libc/test/src/math/smoke/FrexpTest.h b/libc/test/src/math/smoke/FrexpTest.h
index 1740770fd6c4787..3ff169091cc9a38 100644
--- a/libc/test/src/math/smoke/FrexpTest.h
+++ b/libc/test/src/math/smoke/FrexpTest.h
@@ -93,4 +93,4 @@ template <typename T> class FrexpTest : public LIBC_NAMESPACE::testing::Test {
using LlvmLibcFrexpTest = FrexpTest<T>; \
TEST_F(LlvmLibcFrexpTest, SpecialNumbers) { testSpecialNumbers(&func); } \
TEST_F(LlvmLibcFrexpTest, PowersOfTwo) { testPowersOfTwo(&func); } \
- TEST_F(LlvmLibcFrexpTest, SomeIntegers) { testSomeIntegers(&func); }\
+ TEST_F(LlvmLibcFrexpTest, SomeIntegers) { testSomeIntegers(&func); }
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index e23a3c2034cb283..0818955f14de7d3 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -72,6 +72,7 @@ static inline mpfr_rnd_t get_mpfr_rounding_mode(RoundingMode mode) {
return MPFR_RNDN;
break;
}
+ __builtin_unreachable();
}
class MPFRNumber {
>From bed0c017ad74675d8147de132d0c6accc880c34d Mon Sep 17 00:00:00 2001
From: "Mikhail R. Gadelha" <mikhail at igalia.com>
Date: Fri, 29 Sep 2023 16:51:57 -0300
Subject: [PATCH 2/3] Added some "comparison of unsigned expression is always
true" fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* __support/float_to_string.h:118: comparison of unsigned expression in ‘>= 0’ is always true
* __support/wctype_utils.h:31: comparison of unsigned expression in ‘< 0’ is always false
* test/src/__support/CPP/bitset_test.cpp:197: comparison of unsigned expression in ‘>= 0’ is always true
---
libc/src/__support/float_to_string.h | 2 +-
libc/src/__support/wctype_utils.h | 2 +-
libc/test/src/__support/CPP/bitset_test.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libc/src/__support/float_to_string.h b/libc/src/__support/float_to_string.h
index 05189e993babbc9..d3fcec7a652faba 100644
--- a/libc/src/__support/float_to_string.h
+++ b/libc/src/__support/float_to_string.h
@@ -115,7 +115,7 @@ namespace internal {
// Returns floor(log_10(2^e)); requires 0 <= e <= 42039.
LIBC_INLINE constexpr uint32_t log10_pow2(const uint64_t e) {
- LIBC_ASSERT(e >= 0 && e <= 42039 &&
+ LIBC_ASSERT(e <= 42039 &&
"Incorrect exponent to perform log10_pow2 approximation.");
// This approximation is based on the float value for log_10(2). It first
// gives an incorrect result for our purposes at 42039 (well beyond the 16383
diff --git a/libc/src/__support/wctype_utils.h b/libc/src/__support/wctype_utils.h
index 2c8eef8a5c0b70c..8ebd0964c477810 100644
--- a/libc/src/__support/wctype_utils.h
+++ b/libc/src/__support/wctype_utils.h
@@ -28,7 +28,7 @@ namespace internal {
LIBC_INLINE cpp::optional<int> wctob(wint_t c) {
// This needs to be translated to EOF at the callsite. This is to avoid
// including stdio.h in this file.
- if (c > 127 || c < 0)
+ if (c > 127)
return cpp::nullopt;
return static_cast<int>(c);
}
diff --git a/libc/test/src/__support/CPP/bitset_test.cpp b/libc/test/src/__support/CPP/bitset_test.cpp
index f1d4e4c2f963644..3632e54907ceb4d 100644
--- a/libc/test/src/__support/CPP/bitset_test.cpp
+++ b/libc/test/src/__support/CPP/bitset_test.cpp
@@ -194,7 +194,7 @@ TEST(LlvmLibcBitsetTest, SetRangeTest) {
// Check setting exactly one unit
bitset.set_range(0, 63);
for (size_t j = 0; j < 256; ++j)
- EXPECT_EQ(bitset.test(j), (j >= 0 && j <= 63));
+ EXPECT_EQ(bitset.test(j), j <= 63);
bitset.reset();
// Check ranges across unit boundaries work.
>From 14e35787ad64b0b5d56804fdc4db20b7b2a630d2 Mon Sep 17 00:00:00 2001
From: "Mikhail R. Gadelha" <mikhail at igalia.com>
Date: Mon, 2 Oct 2023 16:34:24 -0300
Subject: [PATCH 3/3] Addec wint check back + comment
Signed-off-by: Mikhail R. Gadelha <mikhail at igalia.com>
---
libc/src/__support/wctype_utils.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libc/src/__support/wctype_utils.h b/libc/src/__support/wctype_utils.h
index 8ebd0964c477810..6d825499a1b0fdb 100644
--- a/libc/src/__support/wctype_utils.h
+++ b/libc/src/__support/wctype_utils.h
@@ -28,7 +28,9 @@ namespace internal {
LIBC_INLINE cpp::optional<int> wctob(wint_t c) {
// This needs to be translated to EOF at the callsite. This is to avoid
// including stdio.h in this file.
- if (c > 127)
+ // The standard states that wint_t may either be an alias of wchar_t or
+ // an alias of an integer type, so we need to keep the c < 0 check.
+ if (c > 127 || c < 0)
return cpp::nullopt;
return static_cast<int>(c);
}
More information about the libc-commits
mailing list