[libc-commits] [libc] [libc] Update floating testing infra for MSVC compatibility. (PR #159810)
via libc-commits
libc-commits at lists.llvm.org
Fri Sep 19 09:21:07 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: None (lntue)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/159810.diff
2 Files Affected:
- (modified) libc/test/UnitTest/FEnvSafeTest.cpp (+2-1)
- (modified) libc/test/UnitTest/FPMatcher.h (+10-4)
``````````diff
diff --git a/libc/test/UnitTest/FEnvSafeTest.cpp b/libc/test/UnitTest/FEnvSafeTest.cpp
index f644569695eec..2730de350b39a 100644
--- a/libc/test/UnitTest/FEnvSafeTest.cpp
+++ b/libc/test/UnitTest/FEnvSafeTest.cpp
@@ -51,7 +51,8 @@ void FEnvSafeTest::expect_fenv_eq(const fenv_t &before_fenv,
EXPECT_EQ(before_state.ControlWord, after_state.ControlWord);
EXPECT_EQ(before_state.StatusWord, after_state.StatusWord);
-#elif defined(LIBC_TARGET_ARCH_IS_X86) && !defined(__APPLE__)
+#elif defined(LIBC_TARGET_ARCH_IS_X86) && !defined(__APPLE__) && \
+ !defined(LIBC_COMPILER_IS_MSVC)
using LIBC_NAMESPACE::fputil::internal::FPState;
const FPState &before_state = reinterpret_cast<const FPState &>(before_fenv);
const FPState &after_state = reinterpret_cast<const FPState &>(after_fenv);
diff --git a/libc/test/UnitTest/FPMatcher.h b/libc/test/UnitTest/FPMatcher.h
index 6a68211e6d849..f74276f54eb25 100644
--- a/libc/test/UnitTest/FPMatcher.h
+++ b/libc/test/UnitTest/FPMatcher.h
@@ -125,6 +125,7 @@ template <typename T, TestCond Condition> class CFPMatcher : public Matcher<T> {
bool match(T actualValue) {
actual = actualValue;
+#ifndef LIBC_COMPILER_IS_MSVC
if constexpr (cpp::is_complex_type_same<T, _Complex float>())
return matchComplex<float>();
else if constexpr (cpp::is_complex_type_same<T, _Complex double>())
@@ -134,14 +135,18 @@ template <typename T, TestCond Condition> class CFPMatcher : public Matcher<T> {
#ifdef LIBC_TYPES_HAS_CFLOAT16
else if constexpr (cpp::is_complex_type_same<T, cfloat16>())
return matchComplex<float16>();
-#endif
+#endif // LIBC_TYPES_HAS_CFLOAT16
#ifdef LIBC_TYPES_HAS_CFLOAT128
else if constexpr (cpp::is_complex_type_same<T, cfloat128>())
return matchComplex<float128>();
-#endif
+#endif // LIBC_TYPES_HAS_CFLOAT128
+#else // LIBC_COMPILER_IS_MSVC
+ return true;
+#endif // LIBC_COMPILER_IS_MSVC
}
void explainError() override {
+#ifndef LIBC_COMPILER_IS_MSVC
if constexpr (cpp::is_complex_type_same<T, _Complex float>())
return explainErrorComplex<float>();
else if constexpr (cpp::is_complex_type_same<T, _Complex double>())
@@ -151,11 +156,12 @@ template <typename T, TestCond Condition> class CFPMatcher : public Matcher<T> {
#ifdef LIBC_TYPES_HAS_CFLOAT16
else if constexpr (cpp::is_complex_type_same<T, cfloat16>())
return explainErrorComplex<float16>();
-#endif
+#endif // LIBC_TYPES_HAS_CFLOAT16
#ifdef LIBC_TYPES_HAS_CFLOAT128
else if constexpr (cpp::is_complex_type_same<T, cfloat128>())
return explainErrorComplex<float128>();
-#endif
+#endif // LIBC_TYPES_HAS_CFLOAT128
+#endif // LIBC_COMPILER_IS_MSVC
}
};
``````````
</details>
https://github.com/llvm/llvm-project/pull/159810
More information about the libc-commits
mailing list