[libc-commits] [libc] [libc] Fix implicit conversion warnings in tests. (PR #131362)

via libc-commits libc-commits at lists.llvm.org
Fri Mar 14 10:42:24 PDT 2025


https://github.com/lntue updated https://github.com/llvm/llvm-project/pull/131362

>From 6b423e957996714e0914cf354cff825888e17746 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Fri, 14 Mar 2025 17:24:03 +0000
Subject: [PATCH 1/2] [libc] Fix implicit conversion warnings in tests.

---
 libc/src/__support/big_int.h                  |  4 +-
 .../src/pthread/pthread_rwlock_test.cpp       |  4 +-
 .../src/__support/HashTable/table_test.cpp    |  4 +-
 libc/test/src/__support/arg_list_test.cpp     |  3 +-
 .../__support/fixed_point/fx_bits_test.cpp    |  2 +-
 libc/test/src/complex/CImagTest.h             | 16 ++---
 libc/test/src/complex/CRealTest.h             | 16 ++---
 libc/test/src/fcntl/openat_test.cpp           |  2 +-
 libc/test/src/math/CopySignTest.h             |  4 +-
 libc/test/src/math/FMaxTest.h                 | 20 +++---
 libc/test/src/math/FMinTest.h                 | 20 +++---
 libc/test/src/math/FrexpTest.h                |  4 +-
 libc/test/src/math/NextAfterTest.h            |  2 +-
 .../src/math/exhaustive/exhaustive_test.h     |  3 +-
 .../exhaustive/fmod_generic_impl_test.cpp     |  4 +-
 libc/test/src/math/smoke/NextAfterTest.h      |  2 +-
 libc/test/src/math/smoke/NextTowardTest.h     |  2 +-
 libc/test/src/stdio/fileop_test.cpp           |  2 +-
 libc/test/src/stdio/sscanf_test.cpp           | 64 ++++++++---------
 libc/test/src/stdlib/StrfromTest.h            | 52 +++++++-------
 libc/test/src/string/memcpy_test.cpp          |  2 +-
 .../src/sys/random/linux/getrandom_test.cpp   | 10 +--
 libc/test/src/sys/uio/readv_test.cpp          |  4 +-
 libc/test/src/sys/uio/writev_test.cpp         |  4 +-
 libc/test/src/time/strftime_test.cpp          | 70 +++++++++----------
 libc/test/src/unistd/lseek_test.cpp           |  8 +--
 libc/test/src/unistd/pread_pwrite_test.cpp    |  8 +--
 libc/test/src/unistd/read_write_test.cpp      | 10 +--
 libc/test/src/unistd/readlink_test.cpp        |  2 +-
 libc/test/src/unistd/readlinkat_test.cpp      |  2 +-
 libc/test/src/unistd/syscall_test.cpp         | 32 ++++-----
 libc/utils/MPFRWrapper/MPCommon.cpp           |  4 +-
 32 files changed, 193 insertions(+), 193 deletions(-)

diff --git a/libc/src/__support/big_int.h b/libc/src/__support/big_int.h
index fa06bb485de2c..85db31d01399a 100644
--- a/libc/src/__support/big_int.h
+++ b/libc/src/__support/big_int.h
@@ -866,7 +866,7 @@ struct BigInt {
   LIBC_INLINE constexpr BigInt operator~() const {
     BigInt result;
     for (size_t i = 0; i < WORD_COUNT; ++i)
-      result[i] = ~val[i];
+      result[i] = static_cast<WordType>(~val[i]);
     return result;
   }
 
@@ -967,7 +967,7 @@ struct BigInt {
 
   LIBC_INLINE constexpr void bitwise_not() {
     for (auto &part : val)
-      part = ~part;
+      part = static_cast<WordType>(~part);
   }
 
   LIBC_INLINE constexpr void negate() {
diff --git a/libc/test/integration/src/pthread/pthread_rwlock_test.cpp b/libc/test/integration/src/pthread/pthread_rwlock_test.cpp
index 4cd4255a333e6..205e9f74ea9a1 100644
--- a/libc/test/integration/src/pthread/pthread_rwlock_test.cpp
+++ b/libc/test/integration/src/pthread/pthread_rwlock_test.cpp
@@ -324,8 +324,8 @@ struct ThreadGuard {
   ~ThreadGuard() {
     if (!LIBC_NAMESPACE::getenv("LIBC_PTHREAD_RWLOCK_TEST_VERBOSE"))
       return;
-    pid_t pid = LIBC_NAMESPACE::syscall_impl(SYS_getpid);
-    pid_t tid = LIBC_NAMESPACE::syscall_impl(SYS_gettid);
+    pid_t pid = static_cast<pid_t>(LIBC_NAMESPACE::syscall_impl(SYS_getpid));
+    pid_t tid = static_cast<pid_t>(LIBC_NAMESPACE::syscall_impl(SYS_gettid));
     io_mutex->lock(LIBC_NAMESPACE::cpp::nullopt, true);
     LIBC_NAMESPACE::printf("process %d thread %d: ", pid, tid);
     for (size_t i = 0; i < cursor; ++i)
diff --git a/libc/test/src/__support/HashTable/table_test.cpp b/libc/test/src/__support/HashTable/table_test.cpp
index c3b8697f2087a..a579bfabb2d7b 100644
--- a/libc/test/src/__support/HashTable/table_test.cpp
+++ b/libc/test/src/__support/HashTable/table_test.cpp
@@ -43,11 +43,11 @@ TEST(LlvmLibcTableTest, Iteration) {
     counter[i] = 0;
     if (i >= 256) {
       keys[i].bytes[0] = 2;
-      keys[i].bytes[1] = i % 256;
+      keys[i].bytes[1] = static_cast<uint8_t>(i % 256);
       keys[i].bytes[2] = 0;
     } else {
       keys[i].bytes[0] = 1;
-      keys[i].bytes[1] = i;
+      keys[i].bytes[1] = static_cast<uint8_t>(i);
       keys[i].bytes[2] = 0;
     }
     HashTable::insert(table, {reinterpret_cast<char *>(keys[i].bytes),
diff --git a/libc/test/src/__support/arg_list_test.cpp b/libc/test/src/__support/arg_list_test.cpp
index 70db0aafa631a..645de261d601f 100644
--- a/libc/test/src/__support/arg_list_test.cpp
+++ b/libc/test/src/__support/arg_list_test.cpp
@@ -112,8 +112,7 @@ long int check_struct_type(int first, ...) {
 
   S s = args.next_var<S>();
   int last = args.next_var<int>();
-  return static_cast<long int>(s.c + s.s + s.i + static_cast<long>(s.l) + s.f +
-                               s.d + last);
+  return s.c + s.s + s.i + s.l + static_cast<long>(s.f + s.d) + last;
 }
 
 TEST(LlvmLibcArgListTest, TestStructTypes) {
diff --git a/libc/test/src/__support/fixed_point/fx_bits_test.cpp b/libc/test/src/__support/fixed_point/fx_bits_test.cpp
index 3cbd800adc3c3..804cfd3fb2bf7 100644
--- a/libc/test/src/__support/fixed_point/fx_bits_test.cpp
+++ b/libc/test/src/__support/fixed_point/fx_bits_test.cpp
@@ -27,7 +27,7 @@ class LlvmLibcFxBitsTest : public LIBC_NAMESPACE::testing::Test {
     EXPECT_EQ(LIBC_NAMESPACE::fixed_point::bit_or(T(0.75), T(0.375)), T(0.875));
     using StorageType = typename FXRep<T>::StorageType;
     StorageType a = LIBC_NAMESPACE::cpp::bit_cast<StorageType>(T(0.75));
-    a = ~a;
+    a = static_cast<StorageType>(~a);
     EXPECT_EQ(LIBC_NAMESPACE::fixed_point::bit_not(T(0.75)),
               FXBits<T>(a).get_val());
   }
diff --git a/libc/test/src/complex/CImagTest.h b/libc/test/src/complex/CImagTest.h
index 408460d97dfc6..e7c1bf4d6a7d6 100644
--- a/libc/test/src/complex/CImagTest.h
+++ b/libc/test/src/complex/CImagTest.h
@@ -38,14 +38,14 @@ class CImagTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
                  neg_min_denormal);
     EXPECT_FP_EQ(func(CFPT(1241.112 + max_denormal * 1.0i)), max_denormal);
     EXPECT_FP_EQ(func(CFPT(121.121 + zero * 1.0i)), zero);
-    EXPECT_FP_EQ(func(CFPT(0.0 + 0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0 + 0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0 - 0.0i)), -0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0 - 0.0i)), -0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0i)), -0.0);
+    EXPECT_FP_EQ(func(CFPT(0.0 + 0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0 + 0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(0.0 - 0.0i)), neg_zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0 - 0.0i)), neg_zero);
+    EXPECT_FP_EQ(func(CFPT(0.0)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0)), zero);
+    EXPECT_FP_EQ(func(CFPT(0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0i)), neg_zero);
   }
 
   void testRoundedNumbers(CImagFunc func) {
diff --git a/libc/test/src/complex/CRealTest.h b/libc/test/src/complex/CRealTest.h
index 80eafc9975f4c..a1efe7524b5bd 100644
--- a/libc/test/src/complex/CRealTest.h
+++ b/libc/test/src/complex/CRealTest.h
@@ -37,14 +37,14 @@ class CRealTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     EXPECT_FP_EQ(func(CFPT(neg_min_denormal + 781.134i)), neg_min_denormal);
     EXPECT_FP_EQ(func(CFPT(max_denormal + 1241.112i)), max_denormal);
     EXPECT_FP_EQ(func(CFPT(zero + 121.121i)), zero);
-    EXPECT_FP_EQ(func(CFPT(0.0 + 0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0 + 0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0 - 0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0 - 0.0i)), -0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0)), -0.0);
-    EXPECT_FP_EQ(func(CFPT(0.0i)), 0.0);
-    EXPECT_FP_EQ(func(CFPT(-0.0i)), -0.0);
+    EXPECT_FP_EQ(func(CFPT(0.0 + 0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0 + 0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(0.0 - 0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0 - 0.0i)), neg_zero);
+    EXPECT_FP_EQ(func(CFPT(0.0)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0)), neg_zero);
+    EXPECT_FP_EQ(func(CFPT(0.0i)), zero);
+    EXPECT_FP_EQ(func(CFPT(-0.0i)), neg_zero);
   }
 
   void testRoundedNumbers(CRealFunc func) {
diff --git a/libc/test/src/fcntl/openat_test.cpp b/libc/test/src/fcntl/openat_test.cpp
index 547359eb9f7a9..213b074799c8d 100644
--- a/libc/test/src/fcntl/openat_test.cpp
+++ b/libc/test/src/fcntl/openat_test.cpp
@@ -24,7 +24,7 @@ TEST(LlvmLibcUniStd, OpenAndReadTest) {
   ASSERT_ERRNO_SUCCESS();
   ASSERT_GT(dir_fd, 0);
   constexpr const char TEST_MSG[] = "openat test";
-  constexpr int TEST_MSG_SIZE = sizeof(TEST_MSG) - 1;
+  constexpr ssize_t TEST_MSG_SIZE = sizeof(TEST_MSG) - 1;
 
   int read_fd = LIBC_NAMESPACE::openat(dir_fd, TEST_FILE, O_RDONLY);
   ASSERT_ERRNO_SUCCESS();
diff --git a/libc/test/src/math/CopySignTest.h b/libc/test/src/math/CopySignTest.h
index 8db4f6941e603..7c46d1bbf134f 100644
--- a/libc/test/src/math/CopySignTest.h
+++ b/libc/test/src/math/CopySignTest.h
@@ -42,10 +42,10 @@ class CopySignTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
       if (FPBits(v).is_nan() || FPBits(v).is_inf())
         continue;
 
-      double res1 = func(x, -x);
+      T res1 = func(x, -x);
       ASSERT_FP_EQ(res1, -x);
 
-      double res2 = func(x, x);
+      T res2 = func(x, x);
       ASSERT_FP_EQ(res2, x);
     }
   }
diff --git a/libc/test/src/math/FMaxTest.h b/libc/test/src/math/FMaxTest.h
index 43904a489f76d..772409062ef5a 100644
--- a/libc/test/src/math/FMaxTest.h
+++ b/libc/test/src/math/FMaxTest.h
@@ -29,8 +29,8 @@ class FMaxTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
   void testNaN(FMaxFunc func) {
     EXPECT_FP_EQ(inf, func(aNaN, inf));
     EXPECT_FP_EQ(neg_inf, func(neg_inf, aNaN));
-    EXPECT_FP_EQ(0.0, func(aNaN, 0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, aNaN));
+    EXPECT_FP_EQ(zero, func(aNaN, zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, aNaN));
     EXPECT_FP_EQ(T(-1.2345), func(aNaN, T(-1.2345)));
     EXPECT_FP_EQ(T(1.2345), func(T(1.2345), aNaN));
     EXPECT_FP_EQ(aNaN, func(aNaN, aNaN));
@@ -38,25 +38,25 @@ class FMaxTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
 
   void testInfArg(FMaxFunc func) {
     EXPECT_FP_EQ(inf, func(neg_inf, inf));
-    EXPECT_FP_EQ(inf, func(inf, 0.0));
-    EXPECT_FP_EQ(inf, func(-0.0, inf));
+    EXPECT_FP_EQ(inf, func(inf, zero));
+    EXPECT_FP_EQ(inf, func(neg_zero, inf));
     EXPECT_FP_EQ(inf, func(inf, T(1.2345)));
     EXPECT_FP_EQ(inf, func(T(-1.2345), inf));
   }
 
   void testNegInfArg(FMaxFunc func) {
     EXPECT_FP_EQ(inf, func(inf, neg_inf));
-    EXPECT_FP_EQ(0.0, func(neg_inf, 0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, neg_inf));
+    EXPECT_FP_EQ(zero, func(neg_inf, zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, neg_inf));
     EXPECT_FP_EQ(T(-1.2345), func(neg_inf, T(-1.2345)));
     EXPECT_FP_EQ(T(1.2345), func(T(1.2345), neg_inf));
   }
 
   void testBothZero(FMaxFunc func) {
-    EXPECT_FP_EQ(0.0, func(0.0, 0.0));
-    EXPECT_FP_EQ(0.0, func(-0.0, 0.0));
-    EXPECT_FP_EQ(0.0, func(0.0, -0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, -0.0));
+    EXPECT_FP_EQ(zero, func(zero, zero));
+    EXPECT_FP_EQ(zero, func(neg_zero, zero));
+    EXPECT_FP_EQ(zero, func(zero, neg_zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, neg_zero));
   }
 
   void testRange(FMaxFunc func) {
diff --git a/libc/test/src/math/FMinTest.h b/libc/test/src/math/FMinTest.h
index 51c21ae56a774..3822d7cb73785 100644
--- a/libc/test/src/math/FMinTest.h
+++ b/libc/test/src/math/FMinTest.h
@@ -30,8 +30,8 @@ class FMinTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
   void testNaN(FMinFunc func) {
     EXPECT_FP_EQ(inf, func(aNaN, inf));
     EXPECT_FP_EQ(neg_inf, func(neg_inf, aNaN));
-    EXPECT_FP_EQ(0.0, func(aNaN, 0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, aNaN));
+    EXPECT_FP_EQ(zero, func(aNaN, zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, aNaN));
     EXPECT_FP_EQ(T(-1.2345), func(aNaN, T(-1.2345)));
     EXPECT_FP_EQ(T(1.2345), func(T(1.2345), aNaN));
     EXPECT_FP_EQ(aNaN, func(aNaN, aNaN));
@@ -39,25 +39,25 @@ class FMinTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
 
   void testInfArg(FMinFunc func) {
     EXPECT_FP_EQ(neg_inf, func(neg_inf, inf));
-    EXPECT_FP_EQ(0.0, func(inf, 0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, inf));
+    EXPECT_FP_EQ(zero, func(inf, zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, inf));
     EXPECT_FP_EQ(T(1.2345), func(inf, T(1.2345)));
     EXPECT_FP_EQ(T(-1.2345), func(T(-1.2345), inf));
   }
 
   void testNegInfArg(FMinFunc func) {
     EXPECT_FP_EQ(neg_inf, func(inf, neg_inf));
-    EXPECT_FP_EQ(neg_inf, func(neg_inf, 0.0));
-    EXPECT_FP_EQ(neg_inf, func(-0.0, neg_inf));
+    EXPECT_FP_EQ(neg_inf, func(neg_inf, zero));
+    EXPECT_FP_EQ(neg_inf, func(neg_zero, neg_inf));
     EXPECT_FP_EQ(neg_inf, func(neg_inf, T(-1.2345)));
     EXPECT_FP_EQ(neg_inf, func(T(1.2345), neg_inf));
   }
 
   void testBothZero(FMinFunc func) {
-    EXPECT_FP_EQ(0.0, func(0.0, 0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, 0.0));
-    EXPECT_FP_EQ(-0.0, func(0.0, -0.0));
-    EXPECT_FP_EQ(-0.0, func(-0.0, -0.0));
+    EXPECT_FP_EQ(zero, func(zero, zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, zero));
+    EXPECT_FP_EQ(neg_zero, func(zero, neg_zero));
+    EXPECT_FP_EQ(neg_zero, func(neg_zero, neg_zero));
   }
 
   void testRange(FMinFunc func) {
diff --git a/libc/test/src/math/FrexpTest.h b/libc/test/src/math/FrexpTest.h
index 74a2d607b0f9f..d1151c83efbd3 100644
--- a/libc/test/src/math/FrexpTest.h
+++ b/libc/test/src/math/FrexpTest.h
@@ -33,10 +33,10 @@ class FrexpTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     ASSERT_FP_EQ(inf, func(inf, &exponent));
     ASSERT_FP_EQ(neg_inf, func(neg_inf, &exponent));
 
-    ASSERT_FP_EQ(0.0, func(0.0, &exponent));
+    ASSERT_FP_EQ(zero, func(zero, &exponent));
     ASSERT_EQ(exponent, 0);
 
-    ASSERT_FP_EQ(-0.0, func(-0.0, &exponent));
+    ASSERT_FP_EQ(neg_zero, func(neg_zero, &exponent));
     ASSERT_EQ(exponent, 0);
   }
 
diff --git a/libc/test/src/math/NextAfterTest.h b/libc/test/src/math/NextAfterTest.h
index d97c264cbd806..82d5378ec3533 100644
--- a/libc/test/src/math/NextAfterTest.h
+++ b/libc/test/src/math/NextAfterTest.h
@@ -100,7 +100,7 @@ class NextAfterTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     expected_bits = min_subnormal + 1;
     expected = LIBC_NAMESPACE::cpp::bit_cast<T>(expected_bits);
     ASSERT_FP_EQ(result, expected);
-    ASSERT_FP_EQ(func(x, 0), 0);
+    ASSERT_FP_EQ(func(x, 0), zero);
 
     x = -x;
     result = func(x, -1);
diff --git a/libc/test/src/math/exhaustive/exhaustive_test.h b/libc/test/src/math/exhaustive/exhaustive_test.h
index 5912f7a27dc52..cdf459c23bb9d 100644
--- a/libc/test/src/math/exhaustive/exhaustive_test.h
+++ b/libc/test/src/math/exhaustive/exhaustive_test.h
@@ -169,7 +169,8 @@ struct LlvmLibcExhaustiveMathTest
               range_end = stop;
             }
             current_value = range_end;
-            int pc = 100.0 * (range_end - start) / (stop - start);
+            int pc =
+                static_cast<int>(100.0 * (range_end - start) / (stop - start));
             if (current_percent != pc) {
               new_percent = pc;
               current_percent = pc;
diff --git a/libc/test/src/math/exhaustive/fmod_generic_impl_test.cpp b/libc/test/src/math/exhaustive/fmod_generic_impl_test.cpp
index b064b7e37f428..fc3156d8c69c0 100644
--- a/libc/test/src/math/exhaustive/fmod_generic_impl_test.cpp
+++ b/libc/test/src/math/exhaustive/fmod_generic_impl_test.cpp
@@ -48,13 +48,13 @@ class LlvmLibcFModTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     int max2 = 3 + FPBits::MAX_BIASED_EXPONENT / 2;
     for (T by : TEST_BASES) {
       for (int iy = min2; iy < max2; iy++) {
-        T y = by * LIBC_NAMESPACE::fputil::ldexp(2.0, iy);
+        T y = by * LIBC_NAMESPACE::fputil::ldexp(T(2.0), iy);
         FPBits y_bits(y);
         if (y_bits.is_zero() || !y_bits.is_finite())
           continue;
         for (T bx : TEST_BASES) {
           for (int ix = min2; ix < max2; ix++) {
-            T x = bx * LIBC_NAMESPACE::fputil::ldexp(2.0, ix);
+            T x = bx * LIBC_NAMESPACE::fputil::ldexp(T(2.0), ix);
             if (!FPBits(x).is_finite())
               continue;
             T result = FMod::eval(x, y);
diff --git a/libc/test/src/math/smoke/NextAfterTest.h b/libc/test/src/math/smoke/NextAfterTest.h
index e62832e6712f3..be27c9f188a72 100644
--- a/libc/test/src/math/smoke/NextAfterTest.h
+++ b/libc/test/src/math/smoke/NextAfterTest.h
@@ -115,7 +115,7 @@ class NextAfterTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     expected_bits = min_subnormal + 1;
     expected = LIBC_NAMESPACE::cpp::bit_cast<T>(expected_bits);
     ASSERT_FP_EQ_WITH_UNDERFLOW(result, expected);
-    ASSERT_FP_EQ_WITH_UNDERFLOW(func(x, 0), 0);
+    ASSERT_FP_EQ_WITH_UNDERFLOW(func(x, 0), zero);
 
     x = -x;
     result = func(x, -1);
diff --git a/libc/test/src/math/smoke/NextTowardTest.h b/libc/test/src/math/smoke/NextTowardTest.h
index a4cd5d0cc8c8f..d2f352cdcbdf7 100644
--- a/libc/test/src/math/smoke/NextTowardTest.h
+++ b/libc/test/src/math/smoke/NextTowardTest.h
@@ -122,7 +122,7 @@ class NextTowardTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
     expected_bits = min_subnormal + 1;
     expected = LIBC_NAMESPACE::cpp::bit_cast<T>(expected_bits);
     ASSERT_FP_EQ_WITH_UNDERFLOW(result, expected);
-    ASSERT_FP_EQ_WITH_UNDERFLOW(func(x, 0), 0);
+    ASSERT_FP_EQ_WITH_UNDERFLOW(func(x, 0), zero);
 
     x = -x;
     result = func(x, -1);
diff --git a/libc/test/src/stdio/fileop_test.cpp b/libc/test/src/stdio/fileop_test.cpp
index c662a9fbd0860..a0368d701a676 100644
--- a/libc/test/src/stdio/fileop_test.cpp
+++ b/libc/test/src/stdio/fileop_test.cpp
@@ -87,7 +87,7 @@ TEST(LlvmLibcFILETest, SimpleFileOperations) {
 
   LIBC_NAMESPACE::libc_errno = 0;
   ASSERT_THAT(LIBC_NAMESPACE::fwrite("nothing", 1, 1, file),
-              returns(EQ(0)).with_errno(NE(0)));
+              returns(EQ(size_t(0))).with_errno(NE(0)));
   LIBC_NAMESPACE::libc_errno = 0;
 
   ASSERT_EQ(LIBC_NAMESPACE::fclose(file), 0);
diff --git a/libc/test/src/stdio/sscanf_test.cpp b/libc/test/src/stdio/sscanf_test.cpp
index 18addb632067c..cb302df5b3d82 100644
--- a/libc/test/src/stdio/sscanf_test.cpp
+++ b/libc/test/src/stdio/sscanf_test.cpp
@@ -246,27 +246,27 @@ TEST(LlvmLibcSScanfTest, FloatConvSimple) {
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 123.0);
+  EXPECT_FP_EQ(result, 123.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("456.1", "%a", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 456.1);
+  EXPECT_FP_EQ(result, 456.1f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0x789.ap0", "%e", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0x789.ap0);
+  EXPECT_FP_EQ(result, 0x789.ap0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0x.8", "%e", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0x0.8p0);
+  EXPECT_FP_EQ(result, 0x0.8p0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0x8.", "%e", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0x8.0p0);
+  EXPECT_FP_EQ(result, 0x8.0p0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("+12.0e1", "%g", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 12.0e1);
+  EXPECT_FP_EQ(result, 12.0e1f);
 
   ret_val = LIBC_NAMESPACE::sscanf("inf", "%F", &result);
   EXPECT_EQ(ret_val, 1);
@@ -282,19 +282,19 @@ TEST(LlvmLibcSScanfTest, FloatConvSimple) {
 
   ret_val = LIBC_NAMESPACE::sscanf("1e10", "%G", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 1e10);
+  EXPECT_FP_EQ(result, 1e10f);
 
   ret_val = LIBC_NAMESPACE::sscanf(".1", "%G", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.1);
+  EXPECT_FP_EQ(result, 0.1f);
 
   ret_val = LIBC_NAMESPACE::sscanf("1.", "%G", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 1.0);
+  EXPECT_FP_EQ(result, 1.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0", "%f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("Not a float", "%f", &result);
   EXPECT_EQ(ret_val, 0);
@@ -407,7 +407,7 @@ TEST(LlvmLibcSScanfTest, FloatConvComplexParsing) {
 
   ret_val = LIBC_NAMESPACE::sscanf("0x1.0e3", "%f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0x1.0e3p0);
+  EXPECT_FP_EQ(result, 0x1.0e3p0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("", "%a", &result);
   EXPECT_EQ(ret_val, 0);
@@ -463,11 +463,11 @@ TEST(LlvmLibcSScanfTest, FloatConvComplexParsing) {
 
   ret_val = LIBC_NAMESPACE::sscanf("-.1e1", "%f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, -.1e1);
+  EXPECT_FP_EQ(result, -.1e1f);
 
   ret_val = LIBC_NAMESPACE::sscanf("1.2.e1", "%f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 1.2);
+  EXPECT_FP_EQ(result, 1.2f);
 }
 
 TEST(LlvmLibcSScanfTest, FloatConvMaxWidth) {
@@ -478,22 +478,22 @@ TEST(LlvmLibcSScanfTest, FloatConvMaxWidth) {
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%3f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 123.0);
+  EXPECT_FP_EQ(result, 123.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%5f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 123.0);
+  EXPECT_FP_EQ(result, 123.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("456", "%1f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 4.0);
+  EXPECT_FP_EQ(result, 4.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("-789", "%1f", &result);
   EXPECT_EQ(ret_val, 0);
 
   ret_val = LIBC_NAMESPACE::sscanf("-123", "%2f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, -1.0);
+  EXPECT_FP_EQ(result, -1.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("inf", "%2f", &result);
   EXPECT_EQ(ret_val, 0);
@@ -519,11 +519,11 @@ TEST(LlvmLibcSScanfTest, FloatConvMaxWidth) {
 
   ret_val = LIBC_NAMESPACE::sscanf("01", "%1f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0x1", "%2f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("100e", "%4f", &result);
   EXPECT_EQ(ret_val, 0);
@@ -533,7 +533,7 @@ TEST(LlvmLibcSScanfTest, FloatConvMaxWidth) {
 
   ret_val = LIBC_NAMESPACE::sscanf("100e10", "%5f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 100e1);
+  EXPECT_FP_EQ(result, 100e1f);
 }
 
 TEST(LlvmLibcSScanfTest, FloatConvNoWrite) {
@@ -542,51 +542,51 @@ TEST(LlvmLibcSScanfTest, FloatConvNoWrite) {
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%*f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("456.1", "%*a", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("0x789.ap0", "%*e", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("+12.0e1", "%*g", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("inf", "%*F", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("NaN", "%*A", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("-InFiNiTy", "%*E", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("1e10", "%*G", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf(".1", "%*G", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%*3f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("123", "%*5f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("456", "%*1f", &result);
   EXPECT_EQ(ret_val, 1);
-  EXPECT_FP_EQ(result, 0.0);
+  EXPECT_FP_EQ(result, 0.0f);
 
   ret_val = LIBC_NAMESPACE::sscanf("Not a float", "%*f", &result);
   EXPECT_EQ(ret_val, 0);
diff --git a/libc/test/src/stdlib/StrfromTest.h b/libc/test/src/stdlib/StrfromTest.h
index 5209472886f78..197165c68d587 100644
--- a/libc/test/src/stdlib/StrfromTest.h
+++ b/libc/test/src/stdlib/StrfromTest.h
@@ -17,45 +17,45 @@
 template <typename InputT>
 class StrfromTest : public LIBC_NAMESPACE::testing::Test {
 
-  static const bool is_single_prec =
+  static constexpr bool is_single_prec =
       LIBC_NAMESPACE::cpp::is_same<InputT, float>::value;
-  static const bool is_double_prec =
+  static constexpr bool is_double_prec =
       LIBC_NAMESPACE::cpp::is_same<InputT, double>::value;
 
   using FunctionT = int (*)(char *, size_t, const char *, InputT fp);
 
 public:
   void floatDecimalFormat(FunctionT func) {
-    if (is_single_prec)
+    if constexpr (is_single_prec)
       floatDecimalSinglePrec(func);
-    else if (is_double_prec)
+    else if constexpr (is_double_prec)
       floatDecimalDoublePrec(func);
     else
       floatDecimalLongDoublePrec(func);
   }
 
   void floatHexExpFormat(FunctionT func) {
-    if (is_single_prec)
+    if constexpr (is_single_prec)
       floatHexExpSinglePrec(func);
-    else if (is_double_prec)
+    else if constexpr (is_double_prec)
       floatHexExpDoublePrec(func);
     else
       floatHexExpLongDoublePrec(func);
   }
 
   void floatDecimalExpFormat(FunctionT func) {
-    if (is_single_prec)
+    if constexpr (is_single_prec)
       floatDecimalExpSinglePrec(func);
-    else if (is_double_prec)
+    else if constexpr (is_double_prec)
       floatDecimalExpDoublePrec(func);
     else
       floatDecimalExpLongDoublePrec(func);
   }
 
   void floatDecimalAutoFormat(FunctionT func) {
-    if (is_single_prec)
+    if constexpr (is_single_prec)
       floatDecimalAutoSinglePrec(func);
-    else if (is_double_prec)
+    else if constexpr (is_double_prec)
       floatDecimalAutoDoublePrec(func);
     else
       floatDecimalAutoLongDoublePrec(func);
@@ -95,7 +95,7 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     written = func(buff, 36, "A simple string with one conversion", 1.0);
     ASSERT_STREQ_LEN(written, buff, "A simple string with one conversion");
 
-    written = func(buff, 20, "%1f", 1234567890.0);
+    written = func(buff, 20, "%1f", static_cast<InputT>(1234567890.0));
     ASSERT_STREQ_LEN(written, buff, "%1f");
   }
 
@@ -103,23 +103,23 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     char buff[20];
     int written;
 
-    written = func(buff, 5, "%f", 1234567890.0);
+    written = func(buff, 5, "%f", static_cast<InputT>(1234567890.0));
     EXPECT_EQ(written, 17);
     ASSERT_STREQ(buff, "1234");
 
-    written = func(buff, 5, "%.5f", 1.05);
+    written = func(buff, 5, "%.5f", static_cast<InputT>(1.05));
     EXPECT_EQ(written, 7);
     ASSERT_STREQ(buff, "1.05");
 
-    written = func(buff, 0, "%g", 1.0);
+    written = func(buff, 0, "%g", static_cast<InputT>(1.0));
     EXPECT_EQ(written, 1);
     ASSERT_STREQ(buff, "1.05"); // Make sure that buff has not changed
   }
 
   void infNanValues(FunctionT func) {
-    if (is_double_prec)
+    if constexpr (is_double_prec)
       doublePrecInfNan(func);
-    else if (!is_single_prec)
+    else if constexpr (!is_single_prec)
       longDoublePrecInfNan(func);
   }
 
@@ -127,13 +127,13 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     char buff[70];
     int written;
 
-    written = func(buff, 16, "%f", 1.0);
+    written = func(buff, 16, "%f", 1.0f);
     ASSERT_STREQ_LEN(written, buff, "1.000000");
 
-    written = func(buff, 20, "%f", 1234567890.0);
+    written = func(buff, 20, "%f", 1234567890.0f);
     ASSERT_STREQ_LEN(written, buff, "1234567936.000000");
 
-    written = func(buff, 67, "%.3f", 1.0);
+    written = func(buff, 67, "%.3f", 1.0f);
     ASSERT_STREQ_LEN(written, buff, "1.000");
   }
 
@@ -222,14 +222,14 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     char buff[25];
     int written;
 
-    written = func(buff, 0, "%a", 1234567890.0);
+    written = func(buff, 0, "%a", 1234567890.0f);
     EXPECT_EQ(written, 14);
 
-    written = func(buff, 20, "%a", 1234567890.0);
+    written = func(buff, 20, "%a", 1234567890.0f);
     EXPECT_EQ(written, 14);
     ASSERT_STREQ(buff, "0x1.26580cp+30");
 
-    written = func(buff, 20, "%A", 1234567890.0);
+    written = func(buff, 20, "%A", 1234567890.0f);
     EXPECT_EQ(written, 14);
     ASSERT_STREQ(buff, "0X1.26580CP+30");
   }
@@ -314,10 +314,10 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     char buff[25];
     int written;
 
-    written = func(buff, 20, "%.9e", 1234567890.0);
+    written = func(buff, 20, "%.9e", 1234567890.0f);
     ASSERT_STREQ_LEN(written, buff, "1.234567936e+09");
 
-    written = func(buff, 20, "%.9E", 1234567890.0);
+    written = func(buff, 20, "%.9E", 1234567890.0f);
     ASSERT_STREQ_LEN(written, buff, "1.234567936E+09");
   }
 
@@ -379,10 +379,10 @@ class StrfromTest : public LIBC_NAMESPACE::testing::Test {
     char buff[25];
     int written;
 
-    written = func(buff, 20, "%.9g", 1234567890.0);
+    written = func(buff, 20, "%.9g", 1234567890.0f);
     ASSERT_STREQ_LEN(written, buff, "1.23456794e+09");
 
-    written = func(buff, 20, "%.9G", 1234567890.0);
+    written = func(buff, 20, "%.9G", 1234567890.0f);
     ASSERT_STREQ_LEN(written, buff, "1.23456794E+09");
   }
 
diff --git a/libc/test/src/string/memcpy_test.cpp b/libc/test/src/string/memcpy_test.cpp
index adf6ef7e66d3f..ce267d17591fb 100644
--- a/libc/test/src/string/memcpy_test.cpp
+++ b/libc/test/src/string/memcpy_test.cpp
@@ -48,7 +48,7 @@ TEST(LlvmLibcMemcpyTest, CheckAccess) {
     auto page = pages.GetPageB().WithAccess(PROT_WRITE);
     // And fill it with random numbers.
     for (size_t i = 0; i < page.page_size; ++i)
-      page.page_ptr[i] = rand();
+      page.page_ptr[i] = static_cast<uint8_t>(rand());
     // Then return it in read mode.
     return page.WithAccess(PROT_READ);
   }();
diff --git a/libc/test/src/sys/random/linux/getrandom_test.cpp b/libc/test/src/sys/random/linux/getrandom_test.cpp
index e3481b73ca002..eb5b23cc4cd08 100644
--- a/libc/test/src/sys/random/linux/getrandom_test.cpp
+++ b/libc/test/src/sys/random/linux/getrandom_test.cpp
@@ -16,14 +16,16 @@
 TEST(LlvmLibcGetRandomTest, InvalidFlag) {
   LIBC_NAMESPACE::cpp::array<char, 10> buffer;
   LIBC_NAMESPACE::libc_errno = 0;
-  ASSERT_THAT(LIBC_NAMESPACE::getrandom(buffer.data(), buffer.size(), -1),
-              LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails(EINVAL));
+  ASSERT_THAT(
+      LIBC_NAMESPACE::getrandom(buffer.data(), buffer.size(), -1),
+      LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails<ssize_t>(EINVAL));
 }
 
 TEST(LlvmLibcGetRandomTest, InvalidBuffer) {
   LIBC_NAMESPACE::libc_errno = 0;
-  ASSERT_THAT(LIBC_NAMESPACE::getrandom(nullptr, 65536, 0),
-              LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails(EFAULT));
+  ASSERT_THAT(
+      LIBC_NAMESPACE::getrandom(nullptr, 65536, 0),
+      LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails<ssize_t>(EFAULT));
 }
 
 TEST(LlvmLibcGetRandomTest, ReturnsSize) {
diff --git a/libc/test/src/sys/uio/readv_test.cpp b/libc/test/src/sys/uio/readv_test.cpp
index 7852b8a4b136d..7cbaa3397d887 100644
--- a/libc/test/src/sys/uio/readv_test.cpp
+++ b/libc/test/src/sys/uio/readv_test.cpp
@@ -36,8 +36,8 @@ TEST(LlvmLibcSysUioReadvTest, SmokeTest) {
   iov[1].iov_base = buf1;
   iov[1].iov_len = 2;
   ASSERT_THAT(LIBC_NAMESPACE::readv(fd, iov, 2),
-              returns(EQ(3)).with_errno(EQ(0)));
+              returns(EQ(ssize_t(3))).with_errno(EQ(0)));
   ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds());
   ASSERT_THAT(LIBC_NAMESPACE::unlink(filename),
-              returns(EQ(0)).with_errno(EQ(0)));
+              returns(EQ(ssize_t(0))).with_errno(EQ(0)));
 }
diff --git a/libc/test/src/sys/uio/writev_test.cpp b/libc/test/src/sys/uio/writev_test.cpp
index 2c1c445cc7868..69db0de47141c 100644
--- a/libc/test/src/sys/uio/writev_test.cpp
+++ b/libc/test/src/sys/uio/writev_test.cpp
@@ -27,8 +27,8 @@ TEST(LlvmLibcSysUioWritevTest, SmokeTest) {
   iov[1].iov_base = const_cast<char *>(data + 7);
   iov[1].iov_len = 8;
   ASSERT_THAT(LIBC_NAMESPACE::writev(fd, iov, 2),
-              returns(EQ(15)).with_errno(EQ(0)));
+              returns(EQ(ssize_t(15))).with_errno(EQ(0)));
   ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds());
   ASSERT_THAT(LIBC_NAMESPACE::unlink(filename),
-              returns(EQ(0)).with_errno(EQ(0)));
+              returns(EQ(ssize_t(0))).with_errno(EQ(0)));
 }
diff --git a/libc/test/src/time/strftime_test.cpp b/libc/test/src/time/strftime_test.cpp
index 4fbd1154e3807..cac7560b2b945 100644
--- a/libc/test/src/time/strftime_test.cpp
+++ b/libc/test/src/time/strftime_test.cpp
@@ -31,13 +31,13 @@ constexpr int get_adjusted_year(int year) {
 // A helper class to generate simple padded numbers. It places the result in its
 // internal buffer, which is cleared on every call.
 class SimplePaddedNum {
-  static constexpr size_t BUFF_LEN = 16;
+  static constexpr int BUFF_LEN = 16;
   char buff[BUFF_LEN];
   size_t cur_len; // length of string currently in buff
 
   void clear_buff() {
     // TODO: builtin_memset?
-    for (size_t i = 0; i < BUFF_LEN; ++i)
+    for (int i = 0; i < BUFF_LEN; ++i)
       buff[i] = '\0';
   }
 
@@ -56,9 +56,9 @@ class SimplePaddedNum {
     // loop through all the possibilities, and for time those are all positive.
     LIBC_NAMESPACE::IntegerToString<int> raw(num);
     auto str = raw.view();
-    int leading_zeroes = min_width - raw.size();
+    int leading_zeroes = static_cast<int>(min_width - raw.size());
 
-    size_t i = 0;
+    int i = 0;
     for (; static_cast<int>(i) < leading_zeroes; ++i)
       buff[i] = padding_char;
     for (size_t str_cur = 0, e = str.size(); str_cur < e; ++i, ++str_cur)
@@ -290,7 +290,7 @@ TEST(LlvmLibcStrftimeTest, TwoDigitDayOfMonth) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 1; i <= MAX_DAYS_PER_MONTH; ++i) {
+  for (int i = 1; i <= MAX_DAYS_PER_MONTH; ++i) {
     time.tm_mday = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%d", &time);
     char *result = spn.get_padded_num(i, 2);
@@ -330,7 +330,7 @@ TEST(LlvmLibcStrftimeTest, MinDigitDayOfMonth) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 1; i < 32; ++i) {
+  for (int i = 1; i < 32; ++i) {
     time.tm_mday = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%e", &time);
     char *result = spn.get_padded_num(i, 2, ' ');
@@ -380,7 +380,7 @@ TEST(LlvmLibcStrftimeTest, ISOYearOfCentury) {
   time.tm_yday = 100;
 
   // Test the easy cases
-  for (size_t i = 0; i < 102; ++i) {
+  for (int i = 0; i < 102; ++i) {
     time.tm_year = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%g", &time);
     char *result = spn.get_padded_num(i % 100, 2);
@@ -411,8 +411,8 @@ everywhere else should be in the current year.
 */
 
   // check the first days of the year
-  for (size_t yday = 0; yday < 5; ++yday) {
-    for (size_t iso_wday = LIBC_NAMESPACE::time_constants::MONDAY; iso_wday < 8;
+  for (int yday = 0; yday < 5; ++yday) {
+    for (int iso_wday = LIBC_NAMESPACE::time_constants::MONDAY; iso_wday < 8;
          ++iso_wday) {
       // start with monday, to match the ISO week.
       time.tm_wday = iso_wday % LIBC_NAMESPACE::time_constants::DAYS_PER_WEEK;
@@ -427,7 +427,7 @@ everywhere else should be in the current year.
       } else {
         // iso_wday is 5, 6, or 7 and yday is 0, 1, or 2.
         // days_since_thursday is therefor 1, 2, or 3.
-        const size_t days_since_thursday =
+        const int days_since_thursday =
             iso_wday - LIBC_NAMESPACE::time_constants::THURSDAY;
 
         if (days_since_thursday > yday) {
@@ -482,8 +482,8 @@ year end - yday yday
 
   // check the last days of the year. Checking 5 to make sure all the leap year
   // cases are covered as well.
-  for (size_t days_left = 0; days_left < 5; ++days_left) {
-    for (size_t iso_wday = LIBC_NAMESPACE::time_constants::MONDAY; iso_wday < 8;
+  for (int days_left = 0; days_left < 5; ++days_left) {
+    for (int iso_wday = LIBC_NAMESPACE::time_constants::MONDAY; iso_wday < 8;
          ++iso_wday) {
       // start with monday, to match the ISO week.
       time.tm_wday = iso_wday % LIBC_NAMESPACE::time_constants::DAYS_PER_WEEK;
@@ -580,8 +580,8 @@ TEST(LlvmLibcStrftimeTest, ISOYear) {
   time.tm_year = get_adjusted_year(1999);
 
   // check the first days of the year
-  for (size_t yday = 0; yday < 5; ++yday) {
-    for (size_t iso_wday = 1; iso_wday < 8; ++iso_wday) {
+  for (int yday = 0; yday < 5; ++yday) {
+    for (int iso_wday = 1; iso_wday < 8; ++iso_wday) {
       // start with monday, to match the ISO week.
       time.tm_wday = iso_wday % LIBC_NAMESPACE::time_constants::DAYS_PER_WEEK;
       time.tm_yday = yday;
@@ -595,7 +595,7 @@ TEST(LlvmLibcStrftimeTest, ISOYear) {
       } else {
         // iso_wday is 5, 6, or 7 and yday is 0, 1, or 2.
         // days_since_thursday is therefor 1, 2, or 3.
-        const size_t days_since_thursday =
+        const int days_since_thursday =
             iso_wday - LIBC_NAMESPACE::time_constants::THURSDAY;
 
         if (days_since_thursday > yday) {
@@ -616,8 +616,8 @@ TEST(LlvmLibcStrftimeTest, ISOYear) {
 
   // check the last days of the year. Checking 5 to make sure all the leap year
   // cases are covered as well.
-  for (size_t days_left = 0; days_left < 5; ++days_left) {
-    for (size_t iso_wday = 1; iso_wday < 8; ++iso_wday) {
+  for (int days_left = 0; days_left < 5; ++days_left) {
+    for (int iso_wday = 1; iso_wday < 8; ++iso_wday) {
       // start with monday, to match the ISO week.
       time.tm_wday = iso_wday % LIBC_NAMESPACE::time_constants::DAYS_PER_WEEK;
       // subtract 1 from the max yday to handle yday being 0-indexed.
@@ -692,7 +692,7 @@ TEST(LlvmLibcStrftimeTest, TwentyFourHour) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 0; i < 24; ++i) {
+  for (int i = 0; i < 24; ++i) {
     time.tm_hour = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%H", &time);
     char *result = spn.get_padded_num(i, 2);
@@ -737,7 +737,7 @@ TEST(LlvmLibcStrftimeTest, TwelveHour) {
 
   // Tests on all the well defined values, except 0 since it was easier to
   // special case it.
-  for (size_t i = 1; i <= 12; ++i) {
+  for (int i = 1; i <= 12; ++i) {
     char *result = spn.get_padded_num(i, 2);
 
     time.tm_hour = i;
@@ -783,8 +783,7 @@ TEST(LlvmLibcStrftimeTest, DayOfYear) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 0; i < LIBC_NAMESPACE::time_constants::DAYS_PER_LEAP_YEAR;
-       ++i) {
+  for (int i = 0; i < LIBC_NAMESPACE::time_constants::DAYS_PER_LEAP_YEAR; ++i) {
     time.tm_yday = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%j", &time);
     char *result = spn.get_padded_num(i + 1, 3);
@@ -824,7 +823,7 @@ TEST(LlvmLibcStrftimeTest, MonthOfYear) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 0; i < LIBC_NAMESPACE::time_constants::MONTHS_PER_YEAR; ++i) {
+  for (int i = 0; i < LIBC_NAMESPACE::time_constants::MONTHS_PER_YEAR; ++i) {
     time.tm_mon = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%m", &time);
     // %m is 1 indexed, so add 1 to the number we're comparing to.
@@ -865,8 +864,7 @@ TEST(LlvmLibcStrftimeTest, MinuteOfHour) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 0; i < LIBC_NAMESPACE::time_constants::MINUTES_PER_HOUR;
-       ++i) {
+  for (int i = 0; i < LIBC_NAMESPACE::time_constants::MINUTES_PER_HOUR; ++i) {
     time.tm_min = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%M", &time);
     char *result = spn.get_padded_num(i, 2);
@@ -971,7 +969,7 @@ TEST(LlvmLibcStrftimeTest, SecondOfMinute) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values
-  for (size_t i = 0; i < LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN; ++i) {
+  for (int i = 0; i < LIBC_NAMESPACE::time_constants::SECONDS_PER_MIN; ++i) {
     time.tm_sec = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%S", &time);
     char *result = spn.get_padded_num(i, 2);
@@ -1016,7 +1014,7 @@ TEST(LlvmLibcStrftimeTest, ISODayOfWeek) {
 
   // Tests on all the well defined values except for sunday, which is 0 in
   // normal weekdays but 7 here.
-  for (size_t i = LIBC_NAMESPACE::time_constants::MONDAY;
+  for (int i = LIBC_NAMESPACE::time_constants::MONDAY;
        i <= LIBC_NAMESPACE::time_constants::SATURDAY; ++i) {
     time.tm_wday = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%u", &time);
@@ -1052,14 +1050,14 @@ TEST(LlvmLibcStrftimeTest, WeekOfYearStartingSunday) {
 
   const int WEEK_START = LIBC_NAMESPACE::time_constants::SUNDAY;
 
-  for (size_t first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
+  for (int first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
        first_weekday <= LIBC_NAMESPACE::time_constants::SATURDAY;
        ++first_weekday) {
     time.tm_wday = first_weekday;
-    size_t cur_week = 0;
+    int cur_week = 0;
 
     // iterate through the year, starting on first_weekday.
-    for (size_t yday = 0;
+    for (int yday = 0;
          yday < LIBC_NAMESPACE::time_constants::DAYS_PER_LEAP_YEAR; ++yday) {
       time.tm_yday = yday;
       // If the week just ended, move to the next week.
@@ -1122,13 +1120,13 @@ TEST(LlvmLibcStrftimeTest, ISOWeekOfYear) {
 
   const int WEEK_START = LIBC_NAMESPACE::time_constants::MONDAY;
 
-  for (size_t first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
+  for (int first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
        first_weekday <= LIBC_NAMESPACE::time_constants::SATURDAY;
        ++first_weekday) {
     time.tm_year = starting_year;
     time.tm_wday = first_weekday;
     time.tm_yday = 0;
-    size_t cur_week = 1;
+    int cur_week = 1;
     if (first_weekday == LIBC_NAMESPACE::time_constants::SUNDAY ||
         first_weekday == LIBC_NAMESPACE::time_constants::SATURDAY)
       cur_week = 52;
@@ -1206,7 +1204,7 @@ TEST(LlvmLibcStrftimeTest, DayOfWeek) {
   SimplePaddedNum spn;
 
   // Tests on all the well defined values.
-  for (size_t i = LIBC_NAMESPACE::time_constants::SUNDAY;
+  for (int i = LIBC_NAMESPACE::time_constants::SUNDAY;
        i <= LIBC_NAMESPACE::time_constants::SATURDAY; ++i) {
     time.tm_wday = i;
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%w", &time);
@@ -1242,14 +1240,14 @@ TEST(LlvmLibcStrftimeTest, WeekOfYearStartingMonday) {
 
   const int WEEK_START = LIBC_NAMESPACE::time_constants::MONDAY;
 
-  for (size_t first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
+  for (int first_weekday = LIBC_NAMESPACE::time_constants::SUNDAY;
        first_weekday <= LIBC_NAMESPACE::time_constants::SATURDAY;
        ++first_weekday) {
     time.tm_wday = first_weekday;
-    size_t cur_week = 0;
+    int cur_week = 0;
 
     // iterate through the year, starting on first_weekday.
-    for (size_t yday = 0;
+    for (int yday = 0;
          yday < LIBC_NAMESPACE::time_constants::DAYS_PER_LEAP_YEAR; ++yday) {
       time.tm_yday = yday;
       // If the week just ended, move to the next week.
@@ -1303,7 +1301,7 @@ TEST(LlvmLibcStrftimeTest, YearOfCentury) {
   time.tm_year = get_adjusted_year(2000);
 
   // iterate through the year, starting on first_weekday.
-  for (size_t year = 1900; year < 2001; ++year) {
+  for (int year = 1900; year < 2001; ++year) {
     time.tm_year = get_adjusted_year(year);
 
     written = LIBC_NAMESPACE::strftime(buffer, sizeof(buffer), "%y", &time);
diff --git a/libc/test/src/unistd/lseek_test.cpp b/libc/test/src/unistd/lseek_test.cpp
index 40c0bf07df313..7a147f2b83a31 100644
--- a/libc/test/src/unistd/lseek_test.cpp
+++ b/libc/test/src/unistd/lseek_test.cpp
@@ -24,7 +24,7 @@ TEST(LlvmLibcUniStd, LseekTest) {
   ASSERT_ERRNO_SUCCESS();
   ASSERT_GT(fd, 0);
   constexpr const char LSEEK_TEST[] = "lseek test";
-  constexpr int LSEEK_TEST_SIZE = sizeof(LSEEK_TEST) - 1;
+  constexpr ssize_t LSEEK_TEST_SIZE = sizeof(LSEEK_TEST) - 1;
 
   char read_buf[20];
   ASSERT_THAT(LIBC_NAMESPACE::read(fd, read_buf, LSEEK_TEST_SIZE),
@@ -33,7 +33,7 @@ TEST(LlvmLibcUniStd, LseekTest) {
   EXPECT_STREQ(read_buf, LSEEK_TEST);
 
   // Seek to the beginning of the file and re-read.
-  ASSERT_THAT(LIBC_NAMESPACE::lseek(fd, 0, SEEK_SET), Succeeds(0));
+  ASSERT_THAT(LIBC_NAMESPACE::lseek(fd, 0, SEEK_SET), Succeeds(off_t(0)));
   ASSERT_THAT(LIBC_NAMESPACE::read(fd, read_buf, LSEEK_TEST_SIZE),
               Succeeds(LSEEK_TEST_SIZE));
   read_buf[LSEEK_TEST_SIZE] = '\0';
@@ -41,7 +41,7 @@ TEST(LlvmLibcUniStd, LseekTest) {
 
   // Seek to the beginning of the file from the end and re-read.
   ASSERT_THAT(LIBC_NAMESPACE::lseek(fd, -LSEEK_TEST_SIZE, SEEK_END),
-              Succeeds(0));
+              Succeeds(off_t(0)));
   ASSERT_THAT(LIBC_NAMESPACE::read(fd, read_buf, LSEEK_TEST_SIZE),
               Succeeds(LSEEK_TEST_SIZE));
   read_buf[LSEEK_TEST_SIZE] = '\0';
@@ -58,6 +58,6 @@ TEST(LlvmLibcUniStd, LseekFailsTest) {
   int fd = LIBC_NAMESPACE::open(TEST_FILE, O_RDONLY);
   ASSERT_ERRNO_SUCCESS();
   ASSERT_GT(fd, 0);
-  EXPECT_THAT(LIBC_NAMESPACE::lseek(fd, -1, SEEK_CUR), Fails(EINVAL));
+  EXPECT_THAT(LIBC_NAMESPACE::lseek(fd, -1, SEEK_CUR), Fails<off_t>(EINVAL));
   ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds(0));
 }
diff --git a/libc/test/src/unistd/pread_pwrite_test.cpp b/libc/test/src/unistd/pread_pwrite_test.cpp
index 3c42fcc777a68..397a0da1327a5 100644
--- a/libc/test/src/unistd/pread_pwrite_test.cpp
+++ b/libc/test/src/unistd/pread_pwrite_test.cpp
@@ -25,10 +25,10 @@ TEST(LlvmLibcUniStd, PWriteAndPReadBackTest) {
   // file again and pread at an offset and make sure that only expected data
   // is being read back. This also confirms that pwrite happened successfully.
   constexpr const char HELLO[] = "hello";
-  constexpr int HELLO_SIZE = sizeof(HELLO);
+  constexpr ssize_t HELLO_SIZE = sizeof(HELLO);
   constexpr off_t OFFSET = 3;
   constexpr const char OFFSET_TEXT[] = "helhello";
-  constexpr int OFFSET_TEXT_SIZE = sizeof(OFFSET_TEXT);
+  constexpr ssize_t OFFSET_TEXT_SIZE = sizeof(OFFSET_TEXT);
 
   using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
 
@@ -67,10 +67,10 @@ TEST(LlvmLibcUniStd, PWriteAndPReadBackTest) {
 
 TEST(LlvmLibcUniStd, PWriteFails) {
   using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
-  EXPECT_THAT(LIBC_NAMESPACE::pwrite(-1, "", 1, 0), Fails(EBADF));
+  EXPECT_THAT(LIBC_NAMESPACE::pwrite(-1, "", 1, 0), Fails<ssize_t>(EBADF));
 }
 
 TEST(LlvmLibcUniStd, PReadFails) {
   using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
-  EXPECT_THAT(LIBC_NAMESPACE::pread(-1, nullptr, 1, 0), Fails(EBADF));
+  EXPECT_THAT(LIBC_NAMESPACE::pread(-1, nullptr, 1, 0), Fails<ssize_t>(EBADF));
 }
diff --git a/libc/test/src/unistd/read_write_test.cpp b/libc/test/src/unistd/read_write_test.cpp
index 8b6ba427a343a..ba3aeff02042d 100644
--- a/libc/test/src/unistd/read_write_test.cpp
+++ b/libc/test/src/unistd/read_write_test.cpp
@@ -27,7 +27,7 @@ TEST(LlvmLibcUniStd, WriteAndReadBackTest) {
   ASSERT_ERRNO_SUCCESS();
   ASSERT_GT(write_fd, 0);
   constexpr const char HELLO[] = "hello";
-  constexpr int HELLO_SIZE = sizeof(HELLO);
+  constexpr ssize_t HELLO_SIZE = sizeof(HELLO);
   ASSERT_THAT(LIBC_NAMESPACE::write(write_fd, HELLO, HELLO_SIZE),
               Succeeds(HELLO_SIZE));
   ASSERT_THAT(LIBC_NAMESPACE::fsync(write_fd), Succeeds(0));
@@ -48,15 +48,15 @@ TEST(LlvmLibcUniStd, WriteAndReadBackTest) {
 TEST(LlvmLibcUniStd, WriteFails) {
   using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
 
-  EXPECT_THAT(LIBC_NAMESPACE::write(-1, "", 1), Fails(EBADF));
+  EXPECT_THAT(LIBC_NAMESPACE::write(-1, "", 1), Fails<ssize_t>(EBADF));
   EXPECT_THAT(LIBC_NAMESPACE::write(1, reinterpret_cast<const void *>(-1), 1),
-              Fails(EFAULT));
+              Fails<ssize_t>(EFAULT));
 }
 
 TEST(LlvmLibcUniStd, ReadFails) {
   using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
 
-  EXPECT_THAT(LIBC_NAMESPACE::read(-1, nullptr, 1), Fails(EBADF));
+  EXPECT_THAT(LIBC_NAMESPACE::read(-1, nullptr, 1), Fails<ssize_t>(EBADF));
   EXPECT_THAT(LIBC_NAMESPACE::read(0, reinterpret_cast<void *>(-1), 1),
-              Fails(EFAULT));
+              Fails<ssize_t>(EFAULT));
 }
diff --git a/libc/test/src/unistd/readlink_test.cpp b/libc/test/src/unistd/readlink_test.cpp
index 6b27294f112ec..ffc05000a2e61 100644
--- a/libc/test/src/unistd/readlink_test.cpp
+++ b/libc/test/src/unistd/readlink_test.cpp
@@ -45,5 +45,5 @@ TEST(LlvmLibcReadlinkTest, ReadlinkInNonExistentPath) {
   constexpr auto LEN = 8;
   char buf[LEN];
   ASSERT_THAT(LIBC_NAMESPACE::readlink("non-existent-link", buf, LEN),
-              Fails(ENOENT));
+              Fails<ssize_t>(ENOENT));
 }
diff --git a/libc/test/src/unistd/readlinkat_test.cpp b/libc/test/src/unistd/readlinkat_test.cpp
index 9e4bb9af02e76..a62fde5a0ac54 100644
--- a/libc/test/src/unistd/readlinkat_test.cpp
+++ b/libc/test/src/unistd/readlinkat_test.cpp
@@ -48,5 +48,5 @@ TEST(LlvmLibcReadlinkatTest, ReadlinkInNonExistentPath) {
   char buf[LEN];
   ASSERT_THAT(
       LIBC_NAMESPACE::readlinkat(AT_FDCWD, "non-existent-link", buf, LEN),
-      Fails(ENOENT));
+      Fails<ssize_t>(ENOENT));
 }
diff --git a/libc/test/src/unistd/syscall_test.cpp b/libc/test/src/unistd/syscall_test.cpp
index f6cc3eab9aabe..b5a775a9a672c 100644
--- a/libc/test/src/unistd/syscall_test.cpp
+++ b/libc/test/src/unistd/syscall_test.cpp
@@ -75,15 +75,15 @@ TEST(LlvmLibcSyscallTest, FileReadWrite) {
   constexpr const char *TEST_FILE = "testdata/syscall_pread_pwrite.test";
 
 #ifdef SYS_open
-  int fd =
+  long fd =
       LIBC_NAMESPACE::syscall(SYS_open, TEST_FILE, O_WRONLY | O_CREAT, S_IRWXU);
 #elif defined(SYS_openat)
-  int fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD, TEST_FILE,
-                                   O_WRONLY | O_CREAT, S_IRWXU);
+  long fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD, TEST_FILE,
+                                    O_WRONLY | O_CREAT, S_IRWXU);
 #else
 #error "open and openat syscalls not available."
 #endif
-  ASSERT_GT(fd, 0);
+  ASSERT_GT(fd, 0l);
   ASSERT_ERRNO_SUCCESS();
 
   ASSERT_GE(LIBC_NAMESPACE::syscall(SYS_pwrite64, fd, HELLO, HELLO_SIZE, 0),
@@ -112,29 +112,29 @@ TEST(LlvmLibcSyscallTest, FileLinkCreateDestroy) {
   //   4. Cleanup the file and its link.
 
 #ifdef SYS_open
-  int write_fd = LIBC_NAMESPACE::syscall(SYS_open, TEST_FILE_PATH,
-                                         O_WRONLY | O_CREAT, S_IRWXU);
+  long write_fd = LIBC_NAMESPACE::syscall(SYS_open, TEST_FILE_PATH,
+                                          O_WRONLY | O_CREAT, S_IRWXU);
 #elif defined(SYS_openat)
-  int write_fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD, TEST_FILE_PATH,
-                                         O_WRONLY | O_CREAT, S_IRWXU);
+  long write_fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD, TEST_FILE_PATH,
+                                          O_WRONLY | O_CREAT, S_IRWXU);
 #else
 #error "open and openat syscalls not available."
 #endif
-  ASSERT_GT(write_fd, 0);
+  ASSERT_GT(write_fd, 0l);
   ASSERT_ERRNO_SUCCESS();
 
   ASSERT_GE(LIBC_NAMESPACE::syscall(SYS_close, write_fd), 0l);
   ASSERT_ERRNO_SUCCESS();
 
 #ifdef SYS_open
-  int dir_fd = LIBC_NAMESPACE::syscall(SYS_open, TEST_DIR, O_DIRECTORY, 0);
+  long dir_fd = LIBC_NAMESPACE::syscall(SYS_open, TEST_DIR, O_DIRECTORY, 0);
 #elif defined(SYS_openat)
-  int dir_fd =
+  long dir_fd =
       LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD, TEST_DIR, O_DIRECTORY, 0);
 #else
 #error "open and openat syscalls not available."
 #endif
-  ASSERT_GT(dir_fd, 0);
+  ASSERT_GT(dir_fd, 0l);
   ASSERT_ERRNO_SUCCESS();
 
   ASSERT_GE(LIBC_NAMESPACE::syscall(SYS_linkat, dir_fd, TEST_FILE, dir_fd,
@@ -142,15 +142,15 @@ TEST(LlvmLibcSyscallTest, FileLinkCreateDestroy) {
             0l);
   ASSERT_ERRNO_SUCCESS();
 #ifdef SYS_open
-  int link_fd =
+  long link_fd =
       LIBC_NAMESPACE::syscall(SYS_open, TEST_FILE_LINK_PATH, O_PATH, 0);
 #elif defined(SYS_openat)
-  int link_fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD,
-                                        TEST_FILE_LINK_PATH, O_PATH, 0);
+  long link_fd = LIBC_NAMESPACE::syscall(SYS_openat, AT_FDCWD,
+                                         TEST_FILE_LINK_PATH, O_PATH, 0);
 #else
 #error "open and openat syscalls not available."
 #endif
-  ASSERT_GT(link_fd, 0);
+  ASSERT_GT(link_fd, 0l);
   ASSERT_ERRNO_SUCCESS();
 
 #ifdef SYS_unlink
diff --git a/libc/utils/MPFRWrapper/MPCommon.cpp b/libc/utils/MPFRWrapper/MPCommon.cpp
index 8f104c908f036..ac8cde2f97221 100644
--- a/libc/utils/MPFRWrapper/MPCommon.cpp
+++ b/libc/utils/MPFRWrapper/MPCommon.cpp
@@ -263,7 +263,7 @@ MPFRNumber MPFRNumber::frexp(int &exp) {
   MPFRNumber result(*this);
   mpfr_exp_t resultExp;
   mpfr_frexp(&resultExp, result.value, value, mpfr_rounding);
-  exp = resultExp;
+  exp = static_cast<int>(resultExp);
   return result;
 }
 
@@ -307,7 +307,7 @@ MPFRNumber MPFRNumber::remquo(const MPFRNumber &divisor, int &quotient) {
   MPFRNumber remainder(*this);
   long q;
   mpfr_remquo(remainder.value, &q, value, divisor.value, mpfr_rounding);
-  quotient = q;
+  quotient = static_cast<int>(q);
   return remainder;
 }
 

>From ecd5cd1e47e4fdb97b684ee5871a8973020c3080 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Fri, 14 Mar 2025 17:42:02 +0000
Subject: [PATCH 2/2] fix warnings for gpu tests.

---
 libc/test/integration/startup/gpu/rpc_stream_test.cpp | 2 +-
 libc/test/integration/startup/gpu/rpc_test.cpp        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libc/test/integration/startup/gpu/rpc_stream_test.cpp b/libc/test/integration/startup/gpu/rpc_stream_test.cpp
index 208130bcfd9a9..aba5b0b60d162 100644
--- a/libc/test/integration/startup/gpu/rpc_stream_test.cpp
+++ b/libc/test/integration/startup/gpu/rpc_stream_test.cpp
@@ -81,7 +81,7 @@ static void test_divergent() {
   LIBC_NAMESPACE::rpc::Client::Port port =
       LIBC_NAMESPACE::rpc::client.open<RPC_TEST_STREAM>();
   port.send_n(buffer, offset);
-  inline_memset(buffer, offset, 0);
+  inline_memset(buffer, 0, offset);
   port.recv_n(&recv_ptr, &recv_size, [&](uint64_t) { return buffer; });
   port.close();
 
diff --git a/libc/test/integration/startup/gpu/rpc_test.cpp b/libc/test/integration/startup/gpu/rpc_test.cpp
index 6dce6cde9770a..d20f39600598f 100644
--- a/libc/test/integration/startup/gpu/rpc_test.cpp
+++ b/libc/test/integration/startup/gpu/rpc_test.cpp
@@ -14,7 +14,7 @@
 using namespace LIBC_NAMESPACE;
 
 static void test_add_simple() {
-  uint32_t num_additions =
+  uint64_t num_additions =
       10 + 10 * gpu::get_thread_id() + 10 * gpu::get_block_id();
   uint64_t cnt = 0;
   for (uint32_t i = 0; i < num_additions; ++i) {



More information about the libc-commits mailing list