[libc-commits] [libc] [libc] Add -Werror for libc tests (PR #160413)
Vinay Deshmukh via libc-commits
libc-commits at lists.llvm.org
Sun Sep 28 06:50:29 PDT 2025
https://github.com/vinay-deshmukh updated https://github.com/llvm/llvm-project/pull/160413
>From 9576513f202177c8733c6cb9fe82c9df5f88ad29 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Tue, 23 Sep 2025 19:48:33 -0400
Subject: [PATCH 01/15] -Werror
---
libc/cmake/modules/LLVMLibCTestRules.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index 19da0ad29cd84..34abc0a58f8cd 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -43,7 +43,7 @@ function(_get_common_test_compile_options output_var c_test flags)
list(APPEND compile_options "-Wextra")
# -DLIBC_WNO_ERROR=ON if you can't build cleanly with -Werror.
if(NOT LIBC_WNO_ERROR)
- # list(APPEND compile_options "-Werror")
+ list(APPEND compile_options "-Werror")
endif()
list(APPEND compile_options "-Wconversion")
# FIXME: convert to -Wsign-conversion
>From 26fe540482a2247518492ee1ca3a47721d25b897 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 20:37:45 -0400
Subject: [PATCH 02/15] error: implicit conversion loses integer precision:
'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/stdio/fileop_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/stdio/fileop_test.cpp b/libc/test/src/stdio/fileop_test.cpp
index 02328042b92b3..da9a062e83bf2 100644
--- a/libc/test/src/stdio/fileop_test.cpp
+++ b/libc/test/src/stdio/fileop_test.cpp
@@ -100,7 +100,7 @@ TEST_F(LlvmLibcFILETest, SimpleFileOperations) {
ASSERT_EQ(LIBC_NAMESPACE::ferror(file), 0);
// This is not a readable file.
- ASSERT_THAT(LIBC_NAMESPACE::fread(data, 1, 1, file),
+ ASSERT_THAT((int)LIBC_NAMESPACE::fread(data, 1, 1, file),
returns(EQ(0)).with_errno(NE(0)));
ASSERT_EQ(0, LIBC_NAMESPACE::fclose(file));
>From cd4adf58fbd2313f0627221026c889c7cd7f0093 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:12:04 -0400
Subject: [PATCH 03/15] error: implicit conversion loses integer precision:
'unsigned long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/stdio/fileop_test.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libc/test/src/stdio/fileop_test.cpp b/libc/test/src/stdio/fileop_test.cpp
index da9a062e83bf2..ed4ba26ed8734 100644
--- a/libc/test/src/stdio/fileop_test.cpp
+++ b/libc/test/src/stdio/fileop_test.cpp
@@ -100,8 +100,8 @@ TEST_F(LlvmLibcFILETest, SimpleFileOperations) {
ASSERT_EQ(LIBC_NAMESPACE::ferror(file), 0);
// This is not a readable file.
- ASSERT_THAT((int)LIBC_NAMESPACE::fread(data, 1, 1, file),
- returns(EQ(0)).with_errno(NE(0)));
+ ASSERT_THAT(LIBC_NAMESPACE::fread(data, 1, 1, file),
+ returns(EQ(size_t(0))).with_errno(NE(0)));
ASSERT_EQ(0, LIBC_NAMESPACE::fclose(file));
@@ -175,7 +175,7 @@ TEST_F(LlvmLibcFILETest, FOpenFWriteSizeGreaterThanOne) {
// Trying to read more should fetch nothing.
ASSERT_THAT(
LIBC_NAMESPACE::fread(read_data, sizeof(MyStruct), WRITE_NMEMB, file),
- returns(EQ(0)).with_errno(EQ(0)));
+ returns(EQ(size_t(0))).with_errno(EQ(0)));
EXPECT_NE(LIBC_NAMESPACE::feof(file), 0);
EXPECT_EQ(LIBC_NAMESPACE::ferror(file), 0);
ASSERT_EQ(LIBC_NAMESPACE::fclose(file), 0);
>From 69d35e29046580dee570cb3e297da7703d029c33 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:14:02 -0400
Subject: [PATCH 04/15] error: unused parameter 'y_start'
[-Werror,-Wunused-parameter]
---
libc/test/src/math/exhaustive/bfloat16_sub_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp b/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
index 11bc6f59dd294..c3d0d5c3ba4cd 100644
--- a/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
@@ -23,7 +23,7 @@ struct Bfloat16SubChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, uint16_t y_start,
+ uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
uint16_t y_stop, mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
>From 96bcb9fcd9bc14e7c18abf236d66a469e422564c Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:20:41 -0400
Subject: [PATCH 05/15] error: unused parameter 'y_start'
[-Werror,-Wunused-parameter]
---
libc/test/src/math/exhaustive/bfloat16_add_test.cpp | 2 +-
libc/test/src/math/exhaustive/bfloat16_div_test.cpp | 2 +-
libc/test/src/math/exhaustive/bfloat16_mul_test.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libc/test/src/math/exhaustive/bfloat16_add_test.cpp b/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
index 3f4c77978a93d..ff942196dccb5 100644
--- a/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
@@ -23,7 +23,7 @@ struct Bfloat16AddChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, uint16_t y_start,
+ uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
uint16_t y_stop, mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
diff --git a/libc/test/src/math/exhaustive/bfloat16_div_test.cpp b/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
index 2648d5f775af5..48750e40d5f61 100644
--- a/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
@@ -23,7 +23,7 @@ struct Bfloat16DivChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, uint16_t y_start,
+ uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
uint16_t y_stop, mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
diff --git a/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp b/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
index 3cbbcb500a4fb..ab1d46889a4c6 100644
--- a/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
@@ -23,7 +23,7 @@ struct Bfloat16MulChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, uint16_t y_start,
+ uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
uint16_t y_stop, mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
>From ccdaa1b097d7bc07b6163d8c198fb5e11ef5eb36 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:28:53 -0400
Subject: [PATCH 06/15] error: implicit conversion loses integer precision:
'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/stdio/fopen_test.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/libc/test/src/stdio/fopen_test.cpp b/libc/test/src/stdio/fopen_test.cpp
index 3f651f755e7f3..02612e1889a61 100644
--- a/libc/test/src/stdio/fopen_test.cpp
+++ b/libc/test/src/stdio/fopen_test.cpp
@@ -15,15 +15,14 @@
#include "test/UnitTest/Test.h"
TEST(LlvmLibcFOpenTest, PrintToFile) {
- int result;
FILE *file =
LIBC_NAMESPACE::fopen(APPEND_LIBC_TEST("testdata/test.txt"), "w");
ASSERT_FALSE(file == nullptr);
static constexpr char STRING[] = "A simple string written to a file\n";
- result = LIBC_NAMESPACE::fwrite(STRING, 1, sizeof(STRING) - 1, file);
- EXPECT_GE(result, 0);
+ size_t result = LIBC_NAMESPACE::fwrite(STRING, 1, sizeof(STRING) - 1, file);
+ EXPECT_GE(result, size_t(0));
ASSERT_EQ(0, LIBC_NAMESPACE::fclose(file));
>From 628d6c6cdb81d289bd251d270ef6cdb839a9b496 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:51:20 -0400
Subject: [PATCH 07/15] error: variable 't' is uninitialized when passed as a
const pointer argument here [-Werror,-Wuninitialized-const-pointer]
---
libc/test/src/time/ctime_r_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/time/ctime_r_test.cpp b/libc/test/src/time/ctime_r_test.cpp
index ee06c706734fb..084db300bf2d6 100644
--- a/libc/test/src/time/ctime_r_test.cpp
+++ b/libc/test/src/time/ctime_r_test.cpp
@@ -23,7 +23,7 @@ TEST_F(LlvmLibcCtimeR, Nullptr) {
result = LIBC_NAMESPACE::ctime_r(nullptr, buffer);
ASSERT_STREQ(nullptr, result);
- time_t t;
+ time_t t = 2147483648; // invalid argument
result = LIBC_NAMESPACE::ctime_r(&t, nullptr);
ASSERT_STREQ(nullptr, result);
}
>From d2921298d3cea4dffde0d399585bb2092eaa98ad Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 21:52:49 -0400
Subject: [PATCH 08/15] error: implicit conversion loses integer precision:
'long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/time/mktime_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/time/mktime_test.cpp b/libc/test/src/time/mktime_test.cpp
index 1dfdd73de5440..0f3f1ecce5bdf 100644
--- a/libc/test/src/time/mktime_test.cpp
+++ b/libc/test/src/time/mktime_test.cpp
@@ -36,7 +36,7 @@ TEST(LlvmLibcMkTime, FailureSetsErrno) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(time_t(EOVERFLOW)));
}
TEST(LlvmLibcMkTime, InvalidSeconds) {
>From 9766119d3f89baf7adf0a07318ea875b848c0c76 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 22:01:49 -0400
Subject: [PATCH 09/15] error: implicit conversion loses integer precision:
'long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/time/mktime_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/time/mktime_test.cpp b/libc/test/src/time/mktime_test.cpp
index 0f3f1ecce5bdf..421b3bb8db9eb 100644
--- a/libc/test/src/time/mktime_test.cpp
+++ b/libc/test/src/time/mktime_test.cpp
@@ -36,7 +36,7 @@ TEST(LlvmLibcMkTime, FailureSetsErrno) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(time_t(EOVERFLOW)));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
TEST(LlvmLibcMkTime, InvalidSeconds) {
>From bc8ff54558144e262337aa70c9d6129a491990ce Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 22:18:33 -0400
Subject: [PATCH 10/15] error: implicit conversion loses integer precision:
'long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/time/mktime_test.cpp | 52 +++++++++++++++---------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/libc/test/src/time/mktime_test.cpp b/libc/test/src/time/mktime_test.cpp
index 421b3bb8db9eb..8be147a8483ee 100644
--- a/libc/test/src/time/mktime_test.cpp
+++ b/libc/test/src/time/mktime_test.cpp
@@ -51,7 +51,7 @@ TEST(LlvmLibcMkTime, InvalidSeconds) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(-1));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(-1));
EXPECT_TM_EQ((tm{.tm_sec = 59,
.tm_min = 59,
.tm_hour = 23,
@@ -75,7 +75,7 @@ TEST(LlvmLibcMkTime, InvalidSeconds) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(60));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(60));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 1,
.tm_hour = 0,
@@ -101,7 +101,7 @@ TEST(LlvmLibcMkTime, InvalidMinutes) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(-LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 59,
@@ -126,7 +126,7 @@ TEST(LlvmLibcMkTime, InvalidMinutes) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(60 * LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -153,7 +153,7 @@ TEST(LlvmLibcMkTime, InvalidHours) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(-LIBC_NAMESPACE::time_constants::SECONDS_PER_HOUR));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -179,7 +179,7 @@ TEST(LlvmLibcMkTime, InvalidHours) {
.tm_yday = 0,
.tm_isdst = 0};
EXPECT_THAT(
- LIBC_NAMESPACE::mktime(&tm_data),
+ (int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(24 * LIBC_NAMESPACE::time_constants::SECONDS_PER_HOUR));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -205,7 +205,7 @@ TEST(LlvmLibcMkTime, InvalidYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(-LIBC_NAMESPACE::time_constants::DAYS_PER_NON_LEAP_YEAR *
LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
@@ -234,7 +234,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
{
@@ -248,7 +248,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
{
@@ -262,7 +262,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
{
@@ -276,7 +276,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
{
@@ -290,7 +290,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
{
@@ -304,7 +304,7 @@ TEST(LlvmLibcMkTime, InvalidEndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Fails(EOVERFLOW));
}
}
@@ -321,7 +321,7 @@ TEST(LlvmLibcMkTime, InvalidMonths) {
.tm_yday = 0,
.tm_isdst = 0};
EXPECT_THAT(
- LIBC_NAMESPACE::mktime(&tm_data),
+ (int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(-32 * LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -347,7 +347,7 @@ TEST(LlvmLibcMkTime, InvalidMonths) {
.tm_yday = 0,
.tm_isdst = 0};
EXPECT_THAT(
- LIBC_NAMESPACE::mktime(&tm_data),
+ (int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(LIBC_NAMESPACE::time_constants::DAYS_PER_NON_LEAP_YEAR *
LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
@@ -375,7 +375,7 @@ TEST(LlvmLibcMkTime, InvalidDays) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(-1 * LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -400,7 +400,7 @@ TEST(LlvmLibcMkTime, InvalidDays) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(31 * LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -425,7 +425,7 @@ TEST(LlvmLibcMkTime, InvalidDays) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(59 * LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
EXPECT_TM_EQ((tm{.tm_sec = 0,
.tm_min = 0,
@@ -451,7 +451,7 @@ TEST(LlvmLibcMkTime, InvalidDays) {
.tm_yday = 0,
.tm_isdst = 0};
EXPECT_THAT(
- LIBC_NAMESPACE::mktime(&tm_data),
+ (int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(((2 * LIBC_NAMESPACE::time_constants::DAYS_PER_NON_LEAP_YEAR) +
60) *
LIBC_NAMESPACE::time_constants::SECONDS_PER_DAY));
@@ -481,7 +481,7 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(0x7FFFFFFF));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(0x7FFFFFFF));
EXPECT_TM_EQ((tm{.tm_sec = 7,
.tm_min = 14,
.tm_hour = 3,
@@ -507,7 +507,7 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(0x7FFFFFFF - 8));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(0x7FFFFFFF - 8));
EXPECT_TM_EQ((tm{.tm_sec = 59,
.tm_min = 13,
.tm_hour = 3,
@@ -532,7 +532,7 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(0x7FFFFFFF - 8 -
14 * LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN));
EXPECT_TM_EQ((tm{.tm_sec = 59,
@@ -559,7 +559,7 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(0x7FFFFFFF - 8 -
14 * LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN -
3 * LIBC_NAMESPACE::time_constants::SECONDS_PER_HOUR));
@@ -587,7 +587,7 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data),
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
Succeeds(0x7FFFFFFF - 8 -
14 * LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN -
3 * LIBC_NAMESPACE::time_constants::SECONDS_PER_HOUR -
@@ -619,7 +619,7 @@ TEST(LlvmLibcMkTime, Max64BitYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(6311479850));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(6311479850));
EXPECT_TM_EQ((tm{.tm_sec = 50,
.tm_min = 50,
.tm_hour = 12,
@@ -643,7 +643,7 @@ TEST(LlvmLibcMkTime, Max64BitYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT(LIBC_NAMESPACE::mktime(&tm_data), Succeeds(67767976202043050));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(67767976202043050));
EXPECT_TM_EQ((tm{.tm_sec = 50,
.tm_min = 50,
.tm_hour = 12,
>From 7210495d8c8e08f650d6911155166b85d6182192 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sat, 27 Sep 2025 22:29:06 -0400
Subject: [PATCH 11/15] error: implicit conversion loses integer precision:
'long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
index 7ed94b20c564a..4943521dda046 100644
--- a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
+++ b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
@@ -45,7 +45,7 @@ TEST_F(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
send_message.msg_controllen = 0;
send_message.msg_flags = 0;
- ASSERT_THAT(LIBC_NAMESPACE::sendmsg(sockpair[0], &send_message, 0),
+ ASSERT_THAT((int)LIBC_NAMESPACE::sendmsg(sockpair[0], &send_message, 0),
Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
char buffer[256];
@@ -91,7 +91,7 @@ TEST_F(LlvmLibcSendMsgRecvMsgTest, SendFails) {
send_message.msg_controllen = 0;
send_message.msg_flags = 0;
- ASSERT_THAT(LIBC_NAMESPACE::sendmsg(-1, &send_message, 0), Fails(EBADF));
+ ASSERT_THAT((int)LIBC_NAMESPACE::sendmsg(-1, &send_message, 0), Fails(EBADF));
}
TEST_F(LlvmLibcSendMsgRecvMsgTest, RecvFails) {
>From 82e52d9b2114838e295f93bea1cf3b3697e1d139 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sun, 28 Sep 2025 08:25:02 -0400
Subject: [PATCH 12/15] error: implicit conversion loses integer precision:
'int' to 'uint8_t' (aka 'unsigned char') [-Werror,-Wimplicit-int-conversion]
---
libc/test/src/signal/sigaltstack_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/signal/sigaltstack_test.cpp b/libc/test/src/signal/sigaltstack_test.cpp
index 8c252c47452df..6dac668de3653 100644
--- a/libc/test/src/signal/sigaltstack_test.cpp
+++ b/libc/test/src/signal/sigaltstack_test.cpp
@@ -33,7 +33,7 @@ static void handler(int) {
// out or mapped to a register.
uint8_t var[LOCAL_VAR_SIZE];
for (int i = 0; i < LOCAL_VAR_SIZE; ++i)
- var[i] = i;
+ var[i] = (uint8_t)i;
// Verify that array is completely on the alt_stack.
for (int i = 0; i < LOCAL_VAR_SIZE; ++i) {
if (!(uintptr_t(var + i) < uintptr_t(alt_stack + ALT_STACK_SIZE) &&
>From 4239bb71d1a4ee1cba3bafdb5aefd387ebaf478b Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sun, 28 Sep 2025 08:26:15 -0400
Subject: [PATCH 13/15] error: implicit conversion loses integer precision:
'long' to 'int' [-Werror,-Wshorten-64-to-32]
---
libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
index 4943521dda046..e63e86c53b122 100644
--- a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
+++ b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
@@ -63,7 +63,7 @@ TEST_F(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
recv_message.msg_controllen = 0;
recv_message.msg_flags = 0;
- ASSERT_THAT(LIBC_NAMESPACE::recvmsg(sockpair[1], &recv_message, 0),
+ ASSERT_THAT((int)LIBC_NAMESPACE::recvmsg(sockpair[1], &recv_message, 0),
Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
ASSERT_STREQ(buffer, TEST_MESSAGE);
@@ -110,5 +110,5 @@ TEST_F(LlvmLibcSendMsgRecvMsgTest, RecvFails) {
recv_message.msg_controllen = 0;
recv_message.msg_flags = 0;
- ASSERT_THAT(LIBC_NAMESPACE::recvmsg(-1, &recv_message, 0), Fails(EBADF));
+ ASSERT_THAT((int)LIBC_NAMESPACE::recvmsg(-1, &recv_message, 0), Fails(EBADF));
}
>From fb2806be80f9be2fb56a8fccec9a9dbd9370cec3 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sun, 28 Sep 2025 09:23:33 -0400
Subject: [PATCH 14/15] error: implicit conversion loses floating-point
precision: '_Complex float' to '_Complex _Float16'
[-Werror,-Wimplicit-float-conversion]
---
libc/test/include/complex_test.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libc/test/include/complex_test.cpp b/libc/test/include/complex_test.cpp
index 6f900aa4fb674..7f1ea28417449 100644
--- a/libc/test/include/complex_test.cpp
+++ b/libc/test/include/complex_test.cpp
@@ -27,8 +27,8 @@ TEST(LlvmLibcComplexTest, CMPLXMacro) {
EXPECT_CFP_EQ(CMPLXL(1.0l, 0), 1.0l);
#ifdef LIBC_TYPES_HAS_CFLOAT16
- EXPECT_CFP_EQ(CMPLXF16(0, 1.0), I);
- EXPECT_CFP_EQ(CMPLXF16(1.0, 0), 1.0);
+ EXPECT_CFP_EQ(CMPLXF16(0, 1.0), (_Complex _Float16)I);
+ EXPECT_CFP_EQ(CMPLXF16(1.0, 0), (_Complex _Float16)1.0);
#endif // LIBC_TYPES_HAS_CFLOAT16
#ifdef LIBC_TYPES_HAS_CFLOAT128
>From 7da6d167e2050ac62b72c5147e2087b7ef8e0bfd Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <vinay_deshmukh at outlook.com>
Date: Sun, 28 Sep 2025 09:49:55 -0400
Subject: [PATCH 15/15] cf
---
libc/test/src/math/exhaustive/bfloat16_add_test.cpp | 5 +++--
libc/test/src/math/exhaustive/bfloat16_div_test.cpp | 5 +++--
libc/test/src/math/exhaustive/bfloat16_mul_test.cpp | 5 +++--
libc/test/src/math/exhaustive/bfloat16_sub_test.cpp | 5 +++--
libc/test/src/time/mktime_test.cpp | 6 ++++--
5 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/libc/test/src/math/exhaustive/bfloat16_add_test.cpp b/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
index ff942196dccb5..20a66e27fa61b 100644
--- a/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_add_test.cpp
@@ -23,8 +23,9 @@ struct Bfloat16AddChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
- uint16_t y_stop, mpfr::RoundingMode rounding) {
+ uint64_t check(uint16_t x_start, uint16_t x_stop,
+ [[maybe_unused]] uint16_t y_start, uint16_t y_stop,
+ mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
return true;
diff --git a/libc/test/src/math/exhaustive/bfloat16_div_test.cpp b/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
index 48750e40d5f61..43e033108861e 100644
--- a/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_div_test.cpp
@@ -23,8 +23,9 @@ struct Bfloat16DivChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
- uint16_t y_stop, mpfr::RoundingMode rounding) {
+ uint64_t check(uint16_t x_start, uint16_t x_stop,
+ [[maybe_unused]] uint16_t y_start, uint16_t y_stop,
+ mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
return true;
diff --git a/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp b/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
index ab1d46889a4c6..4fd9ccf440a9d 100644
--- a/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_mul_test.cpp
@@ -23,8 +23,9 @@ struct Bfloat16MulChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
- uint16_t y_stop, mpfr::RoundingMode rounding) {
+ uint64_t check(uint16_t x_start, uint16_t x_stop,
+ [[maybe_unused]] uint16_t y_start, uint16_t y_stop,
+ mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
return true;
diff --git a/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp b/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
index c3d0d5c3ba4cd..350af52930744 100644
--- a/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
+++ b/libc/test/src/math/exhaustive/bfloat16_sub_test.cpp
@@ -23,8 +23,9 @@ struct Bfloat16SubChecker : public virtual LIBC_NAMESPACE::testing::Test {
using FPBits = LIBC_NAMESPACE::fputil::FPBits<bfloat16>;
using StorageType = typename FPBits::StorageType;
- uint64_t check(uint16_t x_start, uint16_t x_stop, [[maybe_unused]] uint16_t y_start,
- uint16_t y_stop, mpfr::RoundingMode rounding) {
+ uint64_t check(uint16_t x_start, uint16_t x_stop,
+ [[maybe_unused]] uint16_t y_start, uint16_t y_stop,
+ mpfr::RoundingMode rounding) {
mpfr::ForceRoundingMode r(rounding);
if (!r.success)
return true;
diff --git a/libc/test/src/time/mktime_test.cpp b/libc/test/src/time/mktime_test.cpp
index 8be147a8483ee..0dd24c46fff63 100644
--- a/libc/test/src/time/mktime_test.cpp
+++ b/libc/test/src/time/mktime_test.cpp
@@ -507,7 +507,8 @@ TEST(LlvmLibcMkTime, EndOf32BitEpochYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(0x7FFFFFFF - 8));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
+ Succeeds(0x7FFFFFFF - 8));
EXPECT_TM_EQ((tm{.tm_sec = 59,
.tm_min = 13,
.tm_hour = 3,
@@ -643,7 +644,8 @@ TEST(LlvmLibcMkTime, Max64BitYear) {
.tm_wday = 0,
.tm_yday = 0,
.tm_isdst = 0};
- EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data), Succeeds(67767976202043050));
+ EXPECT_THAT((int)LIBC_NAMESPACE::mktime(&tm_data),
+ Succeeds(67767976202043050));
EXPECT_TM_EQ((tm{.tm_sec = 50,
.tm_min = 50,
.tm_hour = 12,
More information about the libc-commits
mailing list