From c04730ff3aa2f755b0286be8b1e1424c386a2e8e Mon Sep 17 00:00:00 2001 From: "A. Jiang" Date: Fri, 25 Oct 2024 10:17:55 +0800 Subject: [PATCH] [libc++][test] Make macro detection more friendly to MSVC MSVC's test suite is a bit nervous about replacing non-macro-defined identifiers with `0` (see also https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4668?view=msvc-170). On MSVC (and MS-compatible mode of other compilers), `long double` has the same format (IEEE-754 binary64) as `double`, so it should be OK to define `TEST_LONG_DOUBLE_IS_DOUBLE` when `_MSC_VER` is defined. Such detection should be performed first. --- libcxx/test/support/test_macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcxx/test/support/test_macros.h b/libcxx/test/support/test_macros.h index 5ef14e54dae23..1b6473b623c53 100644 --- a/libcxx/test/support/test_macros.h +++ b/libcxx/test/support/test_macros.h @@ -511,7 +511,7 @@ inline Tp const& DoNotOptimize(Tp const& value) { # define TEST_CONSTEXPR_OPERATOR_NEW #endif -#if __SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__ +#if defined(_MSC_VER) || __SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__ # define TEST_LONG_DOUBLE_IS_DOUBLE #endif