[libc-commits] [libc] [libc] Fixing float128 UB error (PR #211593)
via libc-commits
libc-commits at lists.llvm.org
Thu Jul 23 08:57:55 PDT 2026
https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/211593
>From accfc9c9dc8f35e78f7927c28fd880a085896cf3 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 23 Jul 2026 21:08:19 +0530
Subject: [PATCH 1/3] initial test commit
---
libc/test/src/__support/FPUtil/float128_test.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libc/test/src/__support/FPUtil/float128_test.cpp b/libc/test/src/__support/FPUtil/float128_test.cpp
index b4ee0439ba0f5..c971b01925867 100644
--- a/libc/test/src/__support/FPUtil/float128_test.cpp
+++ b/libc/test/src/__support/FPUtil/float128_test.cpp
@@ -87,6 +87,8 @@ TEST(LlvmLibcFloat128Test, IntegerConversion) {
ASSERT_EQ(static_cast<long long>(Float128(LLONG_MIN)), LLONG_MIN);
ASSERT_EQ(static_cast<unsigned>(Float128(UINT_MAX)), UINT_MAX);
ASSERT_EQ(static_cast<unsigned>(Float128(0U)), 0U);
+ int a = static_cast<int>(Float128(1e300));
+ (void)a;
// FP exceptions
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
>From 79699cd9f7fd1557f92178093b6ed64735278391 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 23 Jul 2026 21:23:37 +0530
Subject: [PATCH 2/3] sanitizer
---
libc/test/src/__support/FPUtil/CMakeLists.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libc/test/src/__support/FPUtil/CMakeLists.txt b/libc/test/src/__support/FPUtil/CMakeLists.txt
index cab95df0e709c..ee2bbf688b1cb 100644
--- a/libc/test/src/__support/FPUtil/CMakeLists.txt
+++ b/libc/test/src/__support/FPUtil/CMakeLists.txt
@@ -49,6 +49,8 @@ add_fp_unittest(
libc.hdr.limits_macros
libc.src.__support.FPUtil.fenv_impl
libc.src.__support.FPUtil.float128
+ COMPILE_OPTIONS
+ "-fsanitize=address"
)
# TODO: Temporally disable bfloat16 test until MPCommon target is updated
>From 9caa9b763dc8c40cb8cc3fa196403d61fb1db5f9 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 23 Jul 2026 21:27:34 +0530
Subject: [PATCH 3/3] chore:add volatile
---
libc/test/src/__support/FPUtil/float128_test.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libc/test/src/__support/FPUtil/float128_test.cpp b/libc/test/src/__support/FPUtil/float128_test.cpp
index c971b01925867..664f32f1d74c5 100644
--- a/libc/test/src/__support/FPUtil/float128_test.cpp
+++ b/libc/test/src/__support/FPUtil/float128_test.cpp
@@ -87,8 +87,7 @@ TEST(LlvmLibcFloat128Test, IntegerConversion) {
ASSERT_EQ(static_cast<long long>(Float128(LLONG_MIN)), LLONG_MIN);
ASSERT_EQ(static_cast<unsigned>(Float128(UINT_MAX)), UINT_MAX);
ASSERT_EQ(static_cast<unsigned>(Float128(0U)), 0U);
- int a = static_cast<int>(Float128(1e300));
- (void)a;
+ volatile int a = static_cast<int>(Float128(1e300));
// FP exceptions
LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
More information about the libc-commits
mailing list