From 11aba83e8e94da1e66c7b38fb63c304a9842e493 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 10:26:00 -0700 Subject: [PATCH 01/14] Update llvm-project. --- llvm-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm-project b/llvm-project index 886b76128f..7b9f988a53 160000 --- a/llvm-project +++ b/llvm-project @@ -1 +1 @@ -Subproject commit 886b76128fba5f995c8c8e24aaa2030b59dec01a +Subproject commit 7b9f988a535c3549b71025e951e3a36a2bf0fa03 From 287299973e596aa5eb5a8ef129d83e5d1e48b4f7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:11:00 -0700 Subject: [PATCH 02/14] Enable passing tests. --- tests/libcxx/expected_results.txt | 37 ------------------------------- 1 file changed, 37 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 33c3d96fe8..f9f780f1c4 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -24,10 +24,6 @@ std/time/time.syn/formatter.year_month_weekday.pass.cpp:1 FAIL std/time/time.syn/formatter.zoned_time.pass.cpp:0 FAIL std/time/time.syn/formatter.zoned_time.pass.cpp:1 FAIL -# LLVM-74756: [libc++][test] overload_compare_iterator doesn't support its claimed iterator_category -std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.move/uninitialized_move.pass.cpp FAIL - # LLVM-90196: [libc++][format] Formatting range with m range-type is incorrect std/utilities/format/format.range/format.range.formatter/format.functions.format.pass.cpp FAIL std/utilities/format/format.range/format.range.formatter/format.functions.vformat.pass.cpp FAIL @@ -37,10 +33,6 @@ std/utilities/format/format.range/format.range.fmtset/format.functions.vformat.p # LLVM-100506: [libc++][test] Precondition violation in rand.dist.uni.real/param_ctor.pass.cpp std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp FAIL -# LLVM-105878: [libc++][test] fp_compare.h includes non-portable <__config> -std/numerics/c.math/cmath.pass.cpp FAIL -std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.float.pass.cpp FAIL - # LLVM-105966: [libc++][test] Fix is_always_lock_free test std/atomics/atomics.lockfree/is_always_lock_free.cpp FAIL @@ -82,8 +74,6 @@ std/language.support/support.limits/support.limits.general/chrono.version.compil # Tests expect __cpp_lib_ranges to have the old value 201811L for P0896R4; we define the C++20 value 201911L for P1716R3. std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp FAIL -std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp FAIL -std/language.support/support.limits/support.limits.general/iterator.version.compile.pass.cpp FAIL # Test expects __cpp_lib_print to have the old value 202207L for P2093R14; we define the C++23 value 202406L for P3235R3. std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp FAIL @@ -157,19 +147,6 @@ std/language.support/support.limits/support.limits.general/format.version.compil # libc++ doesn't implement LWG-3670 std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp FAIL -# libc++ doesn't implement LWG-3870 -std/utilities/memory/specialized.algorithms/specialized.construct/ranges_construct_at.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.fill/ranges_uninitialized_fill.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.fill.n/ranges_uninitialized_fill_n.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp FAIL -std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp FAIL - # libc++ doesn't implement LWG-4013 std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer.value/ctor.default.pass.cpp FAIL std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer.value/ctor.iter.pass.cpp FAIL @@ -253,9 +230,6 @@ std/containers/views/mdspan/mdspan/index_operator.pass.cpp:1 FAIL # *** MISSING LWG ISSUE RESOLUTIONS *** -# LWG-2192 "Validity and return type of std::abs(0u) is unclear" (resolution is missing in UCRT, DevCom-10331466) -std/depr/depr.c.headers/stdlib_h.pass.cpp FAIL - # LWG-2503 "multiline option should be added to syntax_option_type" std/re/re.const/re.matchflag/match_multiline.pass.cpp FAIL std/re/re.const/re.matchflag/match_not_eol.pass.cpp FAIL @@ -276,11 +250,6 @@ std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp SKIPPED # *** C1XX COMPILER BUGS *** -# DevCom-409222 VSO-752709 "Constructing rvalue reference from non-reference-related lvalue reference" -# Reportedly fixed in VS 2019 16.10, test is still failing, need to investigate. -std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp:0 FAIL -std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp:1 FAIL - # VSO-1271673 "static analyzer doesn't know about short-circuiting" # Note: The :1 (ASan) configuration doesn't run static analysis. std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp:0 FAIL @@ -747,9 +716,6 @@ std/re/re.alg/re.alg.search/basic.locale.pass.cpp FAIL std/re/re.alg/re.alg.search/ecma.locale.pass.cpp FAIL std/re/re.alg/re.alg.search/extended.locale.pass.cpp FAIL -# Not analyzed. Error mentions allocator. -std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp FAIL - # Not analyzed. Seems to force a sign conversion error? std/iterators/iterator.primitives/iterator.operations/advance.pass.cpp SKIPPED @@ -858,9 +824,6 @@ std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op std/ranges/range.adaptors/range.lazy.split/ctor.copy_move.pass.cpp FAIL std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/iter_swap.pass.cpp FAIL -# Not analyzed. Checking whether packaged_task is constructible from an allocator and a packaged_task of a different type. -std/thread/futures/futures.task/futures.task.members/ctor2.compile.pass.cpp FAIL - # Not analyzed. # MSVC error C2131: expression did not evaluate to a constant # MSVC note: failure was caused by a read of an uninitialized symbol From c0b2f471904562e97b3f73494cebed24f8e73908 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:19:46 -0700 Subject: [PATCH 03/14] Update reasons for algorithm.version.compile.pass.cpp failing. --- tests/libcxx/expected_results.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index f9f780f1c4..ace78f8bdc 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -72,7 +72,8 @@ std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp FAIL # Test expects __cpp_lib_chrono to have the old value 201611L for P0505R0; we define the C++20 value 201907L for P1466R3. std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp FAIL -# Tests expect __cpp_lib_ranges to have the old value 201811L for P0896R4; we define the C++20 value 201911L for P1716R3. +# Test expects __cpp_lib_freestanding_algorithm to not be defined before C++26; we define it unconditionally. +# Test expects __cpp_lib_shift to have the C++20 value 201806L for P0769R2; we define the C++23 value 202202L for P2440R1. std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp FAIL # Test expects __cpp_lib_print to have the old value 202207L for P2093R14; we define the C++23 value 202406L for P3235R3. From abb04d0e254b0e1c5d32ab99eb5e924f093293a6 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:25:10 -0700 Subject: [PATCH 04/14] Add P2674R1 is_implicit_lifetime to missing STL features. --- tests/libcxx/expected_results.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index ace78f8bdc..20564c5eca 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -215,6 +215,9 @@ std/language.support/support.limits/support.limits.general/cstdlib.version.compi # P2255R2 "Type Traits To Detect References Binding To Temporaries" std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp FAIL +# P2674R1 is_implicit_lifetime +std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.pass.cpp FAIL + # *** MISSING COMPILER FEATURES *** # P1169R4 static operator() From 93dc446e412a621278a2231ffe8e10621dbe7362 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:29:48 -0700 Subject: [PATCH 05/14] MSVC implemented multidim subscripts, but this is blocked by a constexpr bug. --- tests/libcxx/expected_results.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 20564c5eca..d264140b97 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -228,10 +228,6 @@ std/thread/futures/futures.task/futures.task.members/ctad.static.compile.pass.cp std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp:0 FAIL std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp:1 FAIL -# P2128R6 Multidimensional Subscript Operator -std/containers/views/mdspan/mdspan/index_operator.pass.cpp:0 FAIL -std/containers/views/mdspan/mdspan/index_operator.pass.cpp:1 FAIL - # *** MISSING LWG ISSUE RESOLUTIONS *** # LWG-2503 "multiline option should be added to syntax_option_type" @@ -802,6 +798,8 @@ std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp:0 FAIL std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp:1 FAIL std/containers/sequences/vector/vector.cons/construct_size_value_alloc.pass.cpp:0 FAIL std/containers/sequences/vector/vector.cons/construct_size_value_alloc.pass.cpp:1 FAIL +std/containers/views/mdspan/mdspan/index_operator.pass.cpp:0 FAIL +std/containers/views/mdspan/mdspan/index_operator.pass.cpp:1 FAIL # Not analyzed. Looks like a test bug, assuming that hash> is constexpr. std/containers/sequences/vector.bool/enabled_hash.pass.cpp FAIL From 04c8bc9d1eef4c777d2702f33178adfc39ba31da Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:45:31 -0700 Subject: [PATCH 06/14] LLVM-105966 was merged, but MSVC is still blocked; created LLVM-113608. --- tests/libcxx/expected_results.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index d264140b97..75d304b164 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -33,8 +33,9 @@ std/utilities/format/format.range/format.range.fmtset/format.functions.vformat.p # LLVM-100506: [libc++][test] Precondition violation in rand.dist.uni.real/param_ctor.pass.cpp std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp FAIL -# LLVM-105966: [libc++][test] Fix is_always_lock_free test -std/atomics/atomics.lockfree/is_always_lock_free.cpp FAIL +# LLVM-113608: [libc++][test] Use ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings) for -Wno-psabi +std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:0 FAIL +std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:1 FAIL # Non-Standard regex behavior. # "It seems likely that the test is still non-conforming due to how libc++ handles the 'w' character class." From 3aad077d2870d304799ef5d757115c366cd76501 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 24 Oct 2024 11:54:20 -0700 Subject: [PATCH 07/14] Reported LLVM-113609. --- tests/libcxx/expected_results.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 75d304b164..ef16545775 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -37,6 +37,9 @@ std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:0 FAIL std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:1 FAIL +# LLVM-113609: [libc++][test] Non-rebindable test_alloc in string.capacity/deallocate_size.pass.cpp +std/strings/basic.string/string.capacity/deallocate_size.pass.cpp FAIL + # Non-Standard regex behavior. # "It seems likely that the test is still non-conforming due to how libc++ handles the 'w' character class." std/re/re.traits/lookup_classname.pass.cpp FAIL From 70140eb8ec314cb5654265ff25de3b7388aefa97 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 25 Oct 2024 11:13:56 -0700 Subject: [PATCH 08/14] Update llvm-project. --- llvm-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm-project b/llvm-project index 7b9f988a53..f4db221258 160000 --- a/llvm-project +++ b/llvm-project @@ -1 +1 @@ -Subproject commit 7b9f988a535c3549b71025e951e3a36a2bf0fa03 +Subproject commit f4db221258cb44a8f9804ce852c0403328de39b2 From 668c343cb5e6a33b3698a2927780a970a9adff81 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 25 Oct 2024 11:14:12 -0700 Subject: [PATCH 09/14] I merged LLVM-113608. --- tests/libcxx/expected_results.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index ef16545775..7e690a8242 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -33,10 +33,6 @@ std/utilities/format/format.range/format.range.fmtset/format.functions.vformat.p # LLVM-100506: [libc++][test] Precondition violation in rand.dist.uni.real/param_ctor.pass.cpp std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp FAIL -# LLVM-113608: [libc++][test] Use ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings) for -Wno-psabi -std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:0 FAIL -std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp:1 FAIL - # LLVM-113609: [libc++][test] Non-rebindable test_alloc in string.capacity/deallocate_size.pass.cpp std/strings/basic.string/string.capacity/deallocate_size.pass.cpp FAIL From f11e25b60ff00657d8b5c017069ed62f63d531e1 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 25 Oct 2024 11:18:20 -0700 Subject: [PATCH 10/14] LLVM-108296 renamed `test_hash_enabled_for_type` => `test_hash_enabled` and `test_hash_disabled_for_type` => `test_hash_disabled` --- tests/std/tests/P0088R3_variant/test.cpp | 14 +++++++------- tests/std/tests/P0220R1_optional/test.cpp | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/std/tests/P0088R3_variant/test.cpp b/tests/std/tests/P0088R3_variant/test.cpp index 99fde74335..5dd7c560ca 100644 --- a/tests/std/tests/P0088R3_variant/test.cpp +++ b/tests/std/tests/P0088R3_variant/test.cpp @@ -760,7 +760,7 @@ void test_hash_monostate() { static_assert(std::is_copy_constructible::value, ""); } { - test_hash_enabled_for_type(); + test_hash_enabled(); } } @@ -795,18 +795,18 @@ namespace hash { void test_hash_variant_enabled() { { #ifndef __EDG__ // TRANSITION, DevCom-10107834 - test_hash_enabled_for_type >(); - test_hash_enabled_for_type >(); + test_hash_enabled >(); + test_hash_enabled >(); #endif // ^^^ no workaround ^^^ } { - test_hash_disabled_for_type>(); - test_hash_disabled_for_type>(); + test_hash_disabled>(); + test_hash_disabled>(); } { #ifndef __EDG__ // TRANSITION, DevCom-10107834 - test_hash_enabled_for_type>(); - test_hash_enabled_for_type>(); + test_hash_enabled>(); + test_hash_enabled>(); #endif // ^^^ no workaround ^^^ } } diff --git a/tests/std/tests/P0220R1_optional/test.cpp b/tests/std/tests/P0220R1_optional/test.cpp index f3c38ba3d1..34ed93ae66 100644 --- a/tests/std/tests/P0220R1_optional/test.cpp +++ b/tests/std/tests/P0220R1_optional/test.cpp @@ -862,18 +862,18 @@ int run_test() } { #ifndef __EDG__ // TRANSITION, DevCom-10107834 - test_hash_enabled_for_type >(); - test_hash_enabled_for_type >(); - test_hash_enabled_for_type >(); - test_hash_enabled_for_type >(); + test_hash_enabled >(); + test_hash_enabled >(); + test_hash_enabled >(); + test_hash_enabled >(); #endif // ^^^ no workaround ^^^ - test_hash_disabled_for_type>(); - test_hash_disabled_for_type>(); + test_hash_disabled>(); + test_hash_disabled>(); #ifndef __EDG__ // TRANSITION, DevCom-10107834 - test_hash_enabled_for_type>(); - test_hash_enabled_for_type>(); + test_hash_enabled>(); + test_hash_enabled>(); #endif // ^^^ no workaround ^^^ } From 60bd1def0bbbeffda651d46b246f2e6a2f9b4bca Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 25 Oct 2024 11:41:58 -0700 Subject: [PATCH 11/14] Add workarounds for LLVM-113633. --- tests/std/tests/P0088R3_variant/test.cpp | 5 +++++ tests/std/tests/P0088R3_variant_msvc/test.cpp | 5 +++++ tests/std/tests/P0220R1_any/test.cpp | 5 +++++ tests/std/tests/P0220R1_optional/test.cpp | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/tests/std/tests/P0088R3_variant/test.cpp b/tests/std/tests/P0088R3_variant/test.cpp index 5dd7c560ca..44545a5fc3 100644 --- a/tests/std/tests/P0088R3_variant/test.cpp +++ b/tests/std/tests/P0088R3_variant/test.cpp @@ -32,6 +32,11 @@ #if !defined(_PREFAST_) || !defined(_M_IX86) // TRANSITION, VSO-1639191 +#ifndef __clang__ // TRANSITION, LLVM-113633 +#define __SIZEOF_DOUBLE__ 8 +#define __SIZEOF_LONG_DOUBLE__ 8 +#endif // ^^^ workaround ^^^ + #define _SILENCE_CXX20_VOLATILE_DEPRECATION_WARNING #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers diff --git a/tests/std/tests/P0088R3_variant_msvc/test.cpp b/tests/std/tests/P0088R3_variant_msvc/test.cpp index 81fadf0855..d496cf623d 100644 --- a/tests/std/tests/P0088R3_variant_msvc/test.cpp +++ b/tests/std/tests/P0088R3_variant_msvc/test.cpp @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +#ifndef __clang__ // TRANSITION, LLVM-113633 +#define __SIZEOF_DOUBLE__ 8 +#define __SIZEOF_LONG_DOUBLE__ 8 +#endif // ^^^ workaround ^^^ + #define _SILENCE_CXX23_ALIGNED_UNION_DEPRECATION_WARNING #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers diff --git a/tests/std/tests/P0220R1_any/test.cpp b/tests/std/tests/P0220R1_any/test.cpp index 971363bfba..6571d72ba7 100644 --- a/tests/std/tests/P0220R1_any/test.cpp +++ b/tests/std/tests/P0220R1_any/test.cpp @@ -26,6 +26,11 @@ // Yes, this is an awkward hand process; notably the required headers can change without notice. We should investigate // running the libc++ tests directly in all of our configurations so we needn't replicate this subset of files. +#ifndef __clang__ // TRANSITION, LLVM-113633 +#define __SIZEOF_DOUBLE__ 8 +#define __SIZEOF_LONG_DOUBLE__ 8 +#endif // ^^^ workaround ^^^ + #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers #include diff --git a/tests/std/tests/P0220R1_optional/test.cpp b/tests/std/tests/P0220R1_optional/test.cpp index 34ed93ae66..e1951a1144 100644 --- a/tests/std/tests/P0220R1_optional/test.cpp +++ b/tests/std/tests/P0220R1_optional/test.cpp @@ -28,6 +28,11 @@ // Yes, this is an awkward hand process; notably the required headers can change without notice. We should investigate // running the libc++ tests directly in all of our configurations so we needn't replicate this subset of files. +#ifndef __clang__ // TRANSITION, LLVM-113633 +#define __SIZEOF_DOUBLE__ 8 +#define __SIZEOF_LONG_DOUBLE__ 8 +#endif // ^^^ workaround ^^^ + #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers #include From ce11b52378848fb469cdcae58ff07a59b921c8b7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 25 Oct 2024 12:19:16 -0700 Subject: [PATCH 12/14] Apply change from LLVM-108956 to P0220R1_any. --- tests/std/tests/P0220R1_any/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/std/tests/P0220R1_any/test.cpp b/tests/std/tests/P0220R1_any/test.cpp index 6571d72ba7..56cf5beb62 100644 --- a/tests/std/tests/P0220R1_any/test.cpp +++ b/tests/std/tests/P0220R1_any/test.cpp @@ -706,7 +706,7 @@ int run_test() struct TestConstexpr : public std::any { constexpr TestConstexpr() : std::any() {} }; - static TEST_CONSTINIT std::any a; + TEST_CONSTINIT static std::any a; (void)a; } #endif // ^^^ no workaround ^^^ From 5a0644c30695d54680c3215a8cbaa08e4a1b2de7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Sat, 26 Oct 2024 03:35:52 -0700 Subject: [PATCH 13/14] Update llvm-project. --- llvm-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm-project b/llvm-project index f4db221258..69ead949d0 160000 --- a/llvm-project +++ b/llvm-project @@ -1 +1 @@ -Subproject commit f4db221258cb44a8f9804ce852c0403328de39b2 +Subproject commit 69ead949d08ff0bb8cbbf4f7143aaa6687830f6b From 9d58299765a501ff8287a7e691bea37cd089b4d2 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Sat, 26 Oct 2024 03:36:14 -0700 Subject: [PATCH 14/14] Revert "Add workarounds for LLVM-113633." This reverts commit 60bd1def0bbbeffda651d46b246f2e6a2f9b4bca. --- tests/std/tests/P0088R3_variant/test.cpp | 5 ----- tests/std/tests/P0088R3_variant_msvc/test.cpp | 5 ----- tests/std/tests/P0220R1_any/test.cpp | 5 ----- tests/std/tests/P0220R1_optional/test.cpp | 5 ----- 4 files changed, 20 deletions(-) diff --git a/tests/std/tests/P0088R3_variant/test.cpp b/tests/std/tests/P0088R3_variant/test.cpp index 44545a5fc3..5dd7c560ca 100644 --- a/tests/std/tests/P0088R3_variant/test.cpp +++ b/tests/std/tests/P0088R3_variant/test.cpp @@ -32,11 +32,6 @@ #if !defined(_PREFAST_) || !defined(_M_IX86) // TRANSITION, VSO-1639191 -#ifndef __clang__ // TRANSITION, LLVM-113633 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_LONG_DOUBLE__ 8 -#endif // ^^^ workaround ^^^ - #define _SILENCE_CXX20_VOLATILE_DEPRECATION_WARNING #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers diff --git a/tests/std/tests/P0088R3_variant_msvc/test.cpp b/tests/std/tests/P0088R3_variant_msvc/test.cpp index d496cf623d..81fadf0855 100644 --- a/tests/std/tests/P0088R3_variant_msvc/test.cpp +++ b/tests/std/tests/P0088R3_variant_msvc/test.cpp @@ -1,11 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -#ifndef __clang__ // TRANSITION, LLVM-113633 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_LONG_DOUBLE__ 8 -#endif // ^^^ workaround ^^^ - #define _SILENCE_CXX23_ALIGNED_UNION_DEPRECATION_WARNING #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers diff --git a/tests/std/tests/P0220R1_any/test.cpp b/tests/std/tests/P0220R1_any/test.cpp index 56cf5beb62..2ee2b6f48a 100644 --- a/tests/std/tests/P0220R1_any/test.cpp +++ b/tests/std/tests/P0220R1_any/test.cpp @@ -26,11 +26,6 @@ // Yes, this is an awkward hand process; notably the required headers can change without notice. We should investigate // running the libc++ tests directly in all of our configurations so we needn't replicate this subset of files. -#ifndef __clang__ // TRANSITION, LLVM-113633 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_LONG_DOUBLE__ 8 -#endif // ^^^ workaround ^^^ - #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers #include diff --git a/tests/std/tests/P0220R1_optional/test.cpp b/tests/std/tests/P0220R1_optional/test.cpp index e1951a1144..34ed93ae66 100644 --- a/tests/std/tests/P0220R1_optional/test.cpp +++ b/tests/std/tests/P0220R1_optional/test.cpp @@ -28,11 +28,6 @@ // Yes, this is an awkward hand process; notably the required headers can change without notice. We should investigate // running the libc++ tests directly in all of our configurations so we needn't replicate this subset of files. -#ifndef __clang__ // TRANSITION, LLVM-113633 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_LONG_DOUBLE__ 8 -#endif // ^^^ workaround ^^^ - #define _LIBCXX_IN_DEVCRT #include // Must precede any other libc++ headers #include