From 3389604cd95d4d12eb975f4057ed21828f5b53ce Mon Sep 17 00:00:00 2001 From: Mark de Wever Date: Thu, 25 Jul 2024 18:37:36 +0200 Subject: [PATCH] [libc++][spaceship] Marks P1614 as complete. (#99375) Implements parts of: - P1902R1 Missing feature-test macros 2017-2019 Completes: - P1614R2 The Mothership has Landed Fixes #100018 --- libcxx/docs/FeatureTestMacroTable.rst | 2 +- libcxx/docs/ReleaseNotes/19.rst | 1 + libcxx/docs/Status/Cxx20.rst | 1 + libcxx/docs/Status/Cxx20Papers.csv | 2 +- libcxx/docs/Status/SpaceshipPapers.csv | 2 +- libcxx/include/version | 4 ++-- .../compare.version.compile.pass.cpp | 14 +++++++------- .../version.version.compile.pass.cpp | 14 +++++++------- .../generate_feature_test_macro_components.py | 3 +-- 9 files changed, 22 insertions(+), 21 deletions(-) diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst index 262da3f8937d21..a1506e115fe70f 100644 --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -290,7 +290,7 @@ Status ---------------------------------------------------------- ----------------- ``__cpp_lib_syncbuf`` ``201803L`` ---------------------------------------------------------- ----------------- - ``__cpp_lib_three_way_comparison`` ``201711L`` + ``__cpp_lib_three_way_comparison`` ``201907L`` ---------------------------------------------------------- ----------------- ``__cpp_lib_to_address`` ``201711L`` ---------------------------------------------------------- ----------------- diff --git a/libcxx/docs/ReleaseNotes/19.rst b/libcxx/docs/ReleaseNotes/19.rst index c2c2bfbed4ac31..92896f6b0d11e7 100644 --- a/libcxx/docs/ReleaseNotes/19.rst +++ b/libcxx/docs/ReleaseNotes/19.rst @@ -53,6 +53,7 @@ Implemented Papers ------------------ - P1132R8 - ``out_ptr`` - a scalable output pointer abstraction +- P1614R2 - The Mothership has Landed - P2637R3 - Member ``visit`` - P2652R2 - Disallow User Specialization of ``allocator_traits`` - P2819R2 - Add ``tuple`` protocol to ``complex`` diff --git a/libcxx/docs/Status/Cxx20.rst b/libcxx/docs/Status/Cxx20.rst index c00d6fb2372869..b76e30fbb3712e 100644 --- a/libcxx/docs/Status/Cxx20.rst +++ b/libcxx/docs/Status/Cxx20.rst @@ -48,6 +48,7 @@ Paper Status .. [#note-P0883.1] P0883: shared_ptr and floating-point changes weren't applied as they themselves aren't implemented yet. .. [#note-P0883.2] P0883: ``ATOMIC_FLAG_INIT`` was marked deprecated in version 14.0, but was undeprecated with the implementation of LWG3659 in version 15.0. .. [#note-P0660] P0660: The paper is implemented but the features are experimental and can be enabled via ``-fexperimental-library``. + .. [#note-P1614] P1614: ``std::strong_order(long double, long double)`` is partly implemented. .. [#note-P0355] P0355: The implementation status is: * ``Calendars`` mostly done in Clang 7 diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv index 34fc5586f74d9f..4015d7ad48b063 100644 --- a/libcxx/docs/Status/Cxx20Papers.csv +++ b/libcxx/docs/Status/Cxx20Papers.csv @@ -123,7 +123,7 @@ "`P1522R1 `__","LWG","Iterator Difference Type and Integer Overflow","Cologne","|Complete|","15.0","|ranges|" "`P1523R1 `__","LWG","Views and Size Types","Cologne","|Complete|","15.0","|ranges|" "`P1612R1 `__","LWG","Relocate Endian's Specification","Cologne","|Complete|","10.0" -"`P1614R2 `__","LWG","The Mothership has Landed","Cologne","|In Progress|","" +"`P1614R2 `__","LWG","The Mothership has Landed","Cologne","|Complete| [#note-P1614]_","19.0" "`P1638R1 `__","LWG","basic_istream_view::iterator should not be copyable","Cologne","|Complete|","16.0","|ranges|" "`P1643R1 `__","LWG","Add wait/notify to atomic_ref","Cologne","|Complete|","19.0" "`P1644R0 `__","LWG","Add wait/notify to atomic","Cologne","","" diff --git a/libcxx/docs/Status/SpaceshipPapers.csv b/libcxx/docs/Status/SpaceshipPapers.csv index 39e1f968c17547..1ab64a9caf86a3 100644 --- a/libcxx/docs/Status/SpaceshipPapers.csv +++ b/libcxx/docs/Status/SpaceshipPapers.csv @@ -1,5 +1,5 @@ "Number","Name","Status","First released version" -`P1614R2 `_,The Mothership has Landed,|In Progress|, +`P1614R2 `_,The Mothership has Landed,|Complete|,19.0 `P2404R3 `_,"Relaxing ``equality_comparable_with``'s, ``totally_ordered_with``'s, and ``three_way_comparable_with``'s common reference requirements to support move-only types",, `LWG3330 `_,Include ```` from most library headers,"|Complete|","13.0" `LWG3347 `_,"``std::pair`` now requires ``T`` and ``U`` to be *less-than-comparable*",|Nothing To Do|, diff --git a/libcxx/include/version b/libcxx/include/version index 40548098a92d66..fe64343eafbc9c 100644 --- a/libcxx/include/version +++ b/libcxx/include/version @@ -238,7 +238,7 @@ __cpp_lib_string_view 202403L __cpp_lib_syncbuf 201803L __cpp_lib_text_encoding 202306L -__cpp_lib_three_way_comparison 201711L +__cpp_lib_three_way_comparison 201907L __cpp_lib_to_address 201711L __cpp_lib_to_array 201907L __cpp_lib_to_chars 202306L @@ -446,7 +446,7 @@ __cpp_lib_void_t 201411L # if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_SYNCSTREAM) # define __cpp_lib_syncbuf 201803L # endif -# define __cpp_lib_three_way_comparison 201711L +# define __cpp_lib_three_way_comparison 201907L # define __cpp_lib_to_address 201711L # define __cpp_lib_to_array 201907L # define __cpp_lib_type_identity 201806L diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp index aac00f20c7b45e..1d61f43f9ee517 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.compile.pass.cpp @@ -16,7 +16,7 @@ // Test the feature test macros defined by /* Constant Value - __cpp_lib_three_way_comparison 201711L [C++20] + __cpp_lib_three_way_comparison 201907L [C++20] */ #include @@ -45,8 +45,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++20" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++20" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20" # endif #elif TEST_STD_VER == 23 @@ -54,8 +54,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++23" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++23" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23" # endif #elif TEST_STD_VER > 23 @@ -63,8 +63,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++26" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++26" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26" # endif #endif // TEST_STD_VER > 23 diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp index f26e7dc4b4c635..b8bad696f1bae0 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp @@ -221,7 +221,7 @@ __cpp_lib_submdspan 202306L [C++26] __cpp_lib_syncbuf 201803L [C++20] __cpp_lib_text_encoding 202306L [C++26] - __cpp_lib_three_way_comparison 201711L [C++20] + __cpp_lib_three_way_comparison 201907L [C++20] __cpp_lib_to_address 201711L [C++20] __cpp_lib_to_array 201907L [C++20] __cpp_lib_to_chars 201611L [C++17] @@ -4438,8 +4438,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++20" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++20" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20" # endif # ifndef __cpp_lib_to_address @@ -6037,8 +6037,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++23" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++23" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23" # endif # ifndef __cpp_lib_to_address @@ -7960,8 +7960,8 @@ # ifndef __cpp_lib_three_way_comparison # error "__cpp_lib_three_way_comparison should be defined in c++26" # endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++26" +# if __cpp_lib_three_way_comparison != 201907L +# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26" # endif # ifndef __cpp_lib_to_address diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py index a351112471295d..6c42748002aee3 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -1302,8 +1302,7 @@ def add_version_header(tc): }, { "name": "__cpp_lib_three_way_comparison", - "values": {"c++20": 201711}, - # {"c++20": 201907} # P1614R2 The Mothership has Landed (see P1902R1 Missing feature-test macros 2017-2019) + "values": {"c++20": 201907}, "headers": ["compare"], }, {