diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -170,6 +170,8 @@
     -------------------------------------------------------------------
     ``__cpp_lib_array_constexpr``                     ``201811L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_assume_aligned``                      *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_atomic_flag_test``                    ``201907L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_atomic_float``                        *unimplemented*
@@ -184,48 +186,108 @@
     ------------------------------------------------- -----------------
     ``__cpp_lib_atomic_wait``                         ``201907L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_barrier``                             ``201907L``
+    ------------------------------------------------- -----------------
     ``__cpp_lib_bind_front``                          *unimplemented*
     ------------------------------------------------- -----------------
     ``__cpp_lib_bit_cast``                            *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_bitops``                              *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_bounded_array_traits``                ``201902L``
+    ------------------------------------------------- -----------------
     ``__cpp_lib_char8_t``                             ``201811L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_concepts``                            *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_algorithms``                *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_complex``                   *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_constexpr_dynamic_alloc``             ``201907L``
     ------------------------------------------------- -----------------
-    ``__cpp_lib_constexpr_functional``                ``201907L``
+    ``__cpp_lib_constexpr_functional``                *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_iterator``                  *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_memory``                    *unimplemented*
     ------------------------------------------------- -----------------
     ``__cpp_lib_constexpr_numeric``                   ``201911L``
     ------------------------------------------------- -----------------
-    ``__cpp_lib_constexpr_swap_algorithms``           *unimplemented*
+    ``__cpp_lib_constexpr_string``                    *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_string_view``               *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_tuple``                     *unimplemented*
     ------------------------------------------------- -----------------
     ``__cpp_lib_constexpr_utility``                   ``201811L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_constexpr_vector``                    *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_coroutine``                           *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_destroying_delete``                   ``201806L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_endian``                              ``201907L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_erase_if``                            ``202002L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_execution``                           *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_generic_unordered_lookup``            ``201811L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_int_pow2``                            ``202002L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_integer_comparison_functions``        *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_interpolate``                         ``201902L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_is_constant_evaluated``               ``201811L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_is_layout_compatible``                *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_is_nothrow_convertible``              ``201806L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_is_pointer_interconvertible``         *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_jthread``                             *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_latch``                               ``201907L``
+    ------------------------------------------------- -----------------
     ``__cpp_lib_list_remove_return_type``             ``201806L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_math_constants``                      ``201907L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_polymorphic_allocator``               *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_ranges``                              *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_remove_cvref``                        ``201711L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_semaphore``                           ``201907L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_shift``                               *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_smart_ptr_for_overwrite``             *unimplemented*
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_source_location``                     *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_span``                                ``202002L``
     ------------------------------------------------- -----------------
+    ``__cpp_lib_ssize``                               ``201902L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_starts_ends_with``                    ``201711L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_string_view``                         ``201803L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_syncbuf``                             *unimplemented*
+    ------------------------------------------------- -----------------
     ``__cpp_lib_three_way_comparison``                *unimplemented*
     ------------------------------------------------- -----------------
+    ``__cpp_lib_to_address``                          ``201711L``
+    ------------------------------------------------- -----------------
     ``__cpp_lib_to_array``                            ``201907L``
+    ------------------------------------------------- -----------------
+    ``__cpp_lib_unwrap_ref``                          ``201811L``
     ================================================= =================
 
diff --git a/libcxx/include/version b/libcxx/include/version
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -24,6 +24,7 @@
 __cpp_lib_array_constexpr                               201811L <array> <iterator>
                                                         201603L // C++17
 __cpp_lib_as_const                                      201510L <utility>
+__cpp_lib_assume_aligned                                201811L <memory>
 __cpp_lib_atomic_flag_test                              201907L <atomic>
 __cpp_lib_atomic_float                                  201711L <atomic>
 __cpp_lib_atomic_is_always_lock_free                    201603L <atomic>
@@ -32,9 +33,12 @@
 __cpp_lib_atomic_shared_ptr                             201711L <atomic>
 __cpp_lib_atomic_value_initialization                   201911L <atomic> <memory>
 __cpp_lib_atomic_wait                                   201907L <atomic>
-__cpp_lib_bind_front                                    201811L <functional>
+__cpp_lib_barrier                                       201907L <barrier>
+__cpp_lib_bind_front                                    201907L <functional>
 __cpp_lib_bit_cast                                      201806L <bit>
+__cpp_lib_bitops                                        201907L <bit>
 __cpp_lib_bool_constant                                 201505L <type_traits>
+__cpp_lib_bounded_array_traits                          201902L <type_traits>
 __cpp_lib_boyer_moore_searcher                          201603L <functional>
 __cpp_lib_byte                                          201603L <cstddef>
 __cpp_lib_char8_t                                       201811L <atomic> <filesystem> <istream>
@@ -44,12 +48,20 @@
 __cpp_lib_chrono_udls                                   201304L <chrono>
 __cpp_lib_clamp                                         201603L <algorithm>
 __cpp_lib_complex_udls                                  201309L <complex>
-__cpp_lib_concepts                                      201806L <concepts>
+__cpp_lib_concepts                                      202002L <concepts>
+__cpp_lib_constexpr_algorithms                          201806L <algorithm>
+__cpp_lib_constexpr_complex                             201711L <complex>
 __cpp_lib_constexpr_dynamic_alloc                       201907L <memory>
 __cpp_lib_constexpr_functional                          201907L <functional>
+__cpp_lib_constexpr_iterator                            201811L <iterator>
+__cpp_lib_constexpr_memory                              201811L <memory>
 __cpp_lib_constexpr_numeric                             201911L <numeric>
-__cpp_lib_constexpr_swap_algorithms                     201806L <algorithm>
+__cpp_lib_constexpr_string                              201907L <string>
+__cpp_lib_constexpr_string_view                         201811L <string_view>
+__cpp_lib_constexpr_tuple                               201811L <tuple>
 __cpp_lib_constexpr_utility                             201811L <utility>
+__cpp_lib_constexpr_vector                              201907L <vector>
+__cpp_lib_coroutine                                     201902L <coroutine>
 __cpp_lib_destroying_delete                             201806L <new>
 __cpp_lib_enable_shared_from_this                       201603L <memory>
 __cpp_lib_endian                                        201907L <bit>
@@ -57,7 +69,8 @@
                                                                 <map> <set> <string>
                                                                 <unordered_map> <unordered_set> <vector>
 __cpp_lib_exchange_function                             201304L <utility>
-__cpp_lib_execution                                     201603L <execution>
+__cpp_lib_execution                                     201902L <execution>
+                                                        201603L // C++17
 __cpp_lib_filesystem                                    201703L <filesystem>
 __cpp_lib_gcd_lcm                                       201606L <numeric>
 __cpp_lib_generic_associative_lookup                    201304L <map> <set>
@@ -67,16 +80,22 @@
 __cpp_lib_hypot                                         201603L <cmath>
 __cpp_lib_incomplete_container_elements                 201505L <forward_list> <list> <vector>
 __cpp_lib_int_pow2                                      202002L <bit>
+__cpp_lib_integer_comparison_functions                  202002L <utility>
 __cpp_lib_integer_sequence                              201304L <utility>
 __cpp_lib_integral_constant_callable                    201304L <type_traits>
-__cpp_lib_interpolate                                   201902L <numeric>
+__cpp_lib_interpolate                                   201902L <cmath> <numeric>
 __cpp_lib_invoke                                        201411L <functional>
 __cpp_lib_is_aggregate                                  201703L <type_traits>
 __cpp_lib_is_constant_evaluated                         201811L <type_traits>
 __cpp_lib_is_final                                      201402L <type_traits>
 __cpp_lib_is_invocable                                  201703L <type_traits>
+__cpp_lib_is_layout_compatible                          201907L <type_traits>
+__cpp_lib_is_nothrow_convertible                        201806L <type_traits>
 __cpp_lib_is_null_pointer                               201309L <type_traits>
+__cpp_lib_is_pointer_interconvertible                   201907L <type_traits>
 __cpp_lib_is_swappable                                  201603L <type_traits>
+__cpp_lib_jthread                                       201911L <stop_token> <thread>
+__cpp_lib_latch                                         201907L <latch>
 __cpp_lib_launder                                       201606L <new>
 __cpp_lib_list_remove_return_type                       201806L <forward_list> <list>
 __cpp_lib_logical_traits                                201510L <type_traits>
@@ -97,32 +116,44 @@
 __cpp_lib_null_iterators                                201304L <iterator>
 __cpp_lib_optional                                      201606L <optional>
 __cpp_lib_parallel_algorithm                            201603L <algorithm> <numeric>
+__cpp_lib_polymorphic_allocator                         201902L <memory>
 __cpp_lib_quoted_string_io                              201304L <iomanip>
 __cpp_lib_ranges                                        201811L <algorithm> <functional> <iterator>
                                                                 <memory> <ranges>
 __cpp_lib_raw_memory_algorithms                         201606L <memory>
+__cpp_lib_remove_cvref                                  201711L <type_traits>
 __cpp_lib_result_of_sfinae                              201210L <functional> <type_traits>
 __cpp_lib_robust_nonmodifying_seq_ops                   201304L <algorithm>
 __cpp_lib_sample                                        201603L <algorithm>
 __cpp_lib_scoped_lock                                   201703L <mutex>
+__cpp_lib_semaphore                                     201907L <semaphore>
 __cpp_lib_shared_mutex                                  201505L <shared_mutex>
 __cpp_lib_shared_ptr_arrays                             201611L <memory>
 __cpp_lib_shared_ptr_weak_type                          201606L <memory>
 __cpp_lib_shared_timed_mutex                            201402L <shared_mutex>
+__cpp_lib_shift                                         201806L <algorithm>
+__cpp_lib_smart_ptr_for_overwrite                       202002L <memory>
+__cpp_lib_source_location                               201907L <source_location>
 __cpp_lib_span                                          202002L <span>
+__cpp_lib_ssize                                         201902L <iterator>
+__cpp_lib_starts_ends_with                              201711L <string> <string_view>
 __cpp_lib_string_udls                                   201304L <string>
-__cpp_lib_string_view                                   201606L <string> <string_view>
-__cpp_lib_three_way_comparison                          201711L <compare>
+__cpp_lib_string_view                                   201803L <string> <string_view>
+                                                        201606L // C++17
+__cpp_lib_syncbuf                                       201803L <syncstream>
+__cpp_lib_three_way_comparison                          201907L <compare>
+__cpp_lib_to_address                                    201711L <memory>
 __cpp_lib_to_array                                      201907L <array>
 __cpp_lib_to_chars                                      201611L <utility>
 __cpp_lib_transformation_trait_aliases                  201304L <type_traits>
-__cpp_lib_transparent_operators                         201510L <functional>
+__cpp_lib_transparent_operators                         201510L <functional> <memory>
                                                         201210L // C++14
 __cpp_lib_tuple_element_t                               201402L <tuple>
 __cpp_lib_tuples_by_type                                201304L <tuple> <utility>
 __cpp_lib_type_trait_variable_templates                 201510L <type_traits>
 __cpp_lib_uncaught_exceptions                           201411L <exception>
 __cpp_lib_unordered_map_try_emplace                     201411L <unordered_map>
+__cpp_lib_unwrap_ref                                    201811L <functional>
 __cpp_lib_variant                                       201606L <variant>
 __cpp_lib_void_t                                        201411L <type_traits>
 
@@ -225,6 +256,7 @@
 #if _LIBCPP_STD_VER > 17
 # undef  __cpp_lib_array_constexpr
 # define __cpp_lib_array_constexpr                      201811L
+// # define __cpp_lib_assume_aligned                       201811L
 # if !defined(_LIBCPP_HAS_NO_THREADS)
 #   define __cpp_lib_atomic_flag_test                   201907L
 # endif
@@ -246,36 +278,76 @@
 # if !defined(_LIBCPP_HAS_NO_THREADS)
 #   define __cpp_lib_atomic_wait                        201907L
 # endif
-// # define __cpp_lib_bind_front                           201811L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   define __cpp_lib_barrier                            201907L
+# endif
+// # define __cpp_lib_bind_front                           201907L
 // # define __cpp_lib_bit_cast                             201806L
+// # define __cpp_lib_bitops                               201907L
+# define __cpp_lib_bounded_array_traits                 201902L
 # if !defined(_LIBCPP_NO_HAS_CHAR8_T)
 #   define __cpp_lib_char8_t                            201811L
 # endif
-// # define __cpp_lib_concepts                             201806L
+// # define __cpp_lib_concepts                             202002L
+// # define __cpp_lib_constexpr_algorithms                 201806L
+// # define __cpp_lib_constexpr_complex                    201711L
 # define __cpp_lib_constexpr_dynamic_alloc              201907L
-# define __cpp_lib_constexpr_functional                 201907L
+// # define __cpp_lib_constexpr_functional                 201907L
+// # define __cpp_lib_constexpr_iterator                   201811L
+// # define __cpp_lib_constexpr_memory                     201811L
 # define __cpp_lib_constexpr_numeric                    201911L
-// # define __cpp_lib_constexpr_swap_algorithms            201806L
+// # define __cpp_lib_constexpr_string                     201907L
+// # define __cpp_lib_constexpr_string_view                201811L
+// # define __cpp_lib_constexpr_tuple                      201811L
 # define __cpp_lib_constexpr_utility                    201811L
+// # define __cpp_lib_constexpr_vector                     201907L
+// # define __cpp_lib_coroutine                            201902L
 # if _LIBCPP_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
 #   define __cpp_lib_destroying_delete                  201806L
 # endif
 # define __cpp_lib_endian                               201907L
 # define __cpp_lib_erase_if                             202002L
+# undef  __cpp_lib_execution
+// # define __cpp_lib_execution                            201902L
 # define __cpp_lib_generic_unordered_lookup             201811L
 # define __cpp_lib_int_pow2                             202002L
+// # define __cpp_lib_integer_comparison_functions         202002L
 # define __cpp_lib_interpolate                          201902L
 # if !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)
 #   define __cpp_lib_is_constant_evaluated              201811L
 # endif
+// # define __cpp_lib_is_layout_compatible                 201907L
+# define __cpp_lib_is_nothrow_convertible               201806L
+// # define __cpp_lib_is_pointer_interconvertible          201907L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+// #   define __cpp_lib_jthread                            201911L
+# endif
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   define __cpp_lib_latch                              201907L
+# endif
 # define __cpp_lib_list_remove_return_type              201806L
 # if defined(__cpp_concepts) && __cpp_concepts >= 201811L
 #   define __cpp_lib_math_constants                     201907L
 # endif
+// # define __cpp_lib_polymorphic_allocator                201902L
 // # define __cpp_lib_ranges                               201811L
+# define __cpp_lib_remove_cvref                         201711L
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   define __cpp_lib_semaphore                          201907L
+# endif
+// # define __cpp_lib_shift                                201806L
+// # define __cpp_lib_smart_ptr_for_overwrite              202002L
+// # define __cpp_lib_source_location                      201907L
 # define __cpp_lib_span                                 202002L
-// # define __cpp_lib_three_way_comparison                 201711L
+# define __cpp_lib_ssize                                201902L
+# define __cpp_lib_starts_ends_with                     201711L
+# undef  __cpp_lib_string_view
+# define __cpp_lib_string_view                          201803L
+// # define __cpp_lib_syncbuf                              201803L
+// # define __cpp_lib_three_way_comparison                 201907L
+# define __cpp_lib_to_address                           201711L
 # define __cpp_lib_to_array                             201907L
+# define __cpp_lib_unwrap_ref                           201811L
 #endif
 
 #endif // _LIBCPP_VERSIONH
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
@@ -15,11 +15,12 @@
 
 /*  Constant                                 Value
     __cpp_lib_clamp                          201603L [C++17]
-    __cpp_lib_constexpr_swap_algorithms      201806L [C++20]
+    __cpp_lib_constexpr_algorithms           201806L [C++20]
     __cpp_lib_parallel_algorithm             201603L [C++17]
     __cpp_lib_ranges                         201811L [C++20]
     __cpp_lib_robust_nonmodifying_seq_ops    201304L [C++14]
     __cpp_lib_sample                         201603L [C++17]
+    __cpp_lib_shift                          201806L [C++20]
 */
 
 #include <algorithm>
@@ -31,8 +32,8 @@
 #   error "__cpp_lib_clamp should not be defined before c++17"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
 # ifdef __cpp_lib_parallel_algorithm
@@ -51,14 +52,18 @@
 #   error "__cpp_lib_sample should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_clamp
 #   error "__cpp_lib_clamp should not be defined before c++17"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
 # ifdef __cpp_lib_parallel_algorithm
@@ -80,6 +85,10 @@
 #   error "__cpp_lib_sample should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_clamp
@@ -89,8 +98,8 @@
 #   error "__cpp_lib_clamp should have the value 201603L in c++17"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
 # endif
 
 # if !defined(_LIBCPP_VERSION)
@@ -124,6 +133,10 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_clamp
@@ -134,15 +147,15 @@
 # endif
 
 # if !defined(_LIBCPP_VERSION)
-#   ifndef __cpp_lib_constexpr_swap_algorithms
-#     error "__cpp_lib_constexpr_swap_algorithms should be defined in c++20"
+#   ifndef __cpp_lib_constexpr_algorithms
+#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
 #   endif
-#   if __cpp_lib_constexpr_swap_algorithms != 201806L
-#     error "__cpp_lib_constexpr_swap_algorithms should have the value 201806L in c++20"
+#   if __cpp_lib_constexpr_algorithms != 201806L
+#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
-#   ifdef __cpp_lib_constexpr_swap_algorithms
-#     error "__cpp_lib_constexpr_swap_algorithms should not be defined because it is unimplemented in libc++!"
+#   ifdef __cpp_lib_constexpr_algorithms
+#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
 #   endif
 # endif
 
@@ -186,6 +199,19 @@
 #   error "__cpp_lib_sample should have the value 201603L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_shift
+#     error "__cpp_lib_shift should be defined in c++20"
+#   endif
+#   if __cpp_lib_shift != 201806L
+#     error "__cpp_lib_shift should have the value 201806L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_shift
+#     error "__cpp_lib_shift should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER == 20
 
 int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.pass.cpp
new file mode 100644
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.pass.cpp
@@ -0,0 +1,60 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+
+// UNSUPPORTED: libcpp-has-no-threads
+
+// <barrier>
+
+// Test the feature test macros defined by <barrier>
+
+/*  Constant             Value
+    __cpp_lib_barrier    201907L [C++20]
+*/
+
+#include <barrier>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_barrier
+#     error "__cpp_lib_barrier should be defined in c++20"
+#   endif
+#   if __cpp_lib_barrier != 201907L
+#     error "__cpp_lib_barrier should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_barrier
+#     error "__cpp_lib_barrier should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
+#endif // TEST_STD_VER == 20
+
+int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.pass.cpp
@@ -15,6 +15,7 @@
 
 /*  Constant              Value
     __cpp_lib_bit_cast    201806L [C++20]
+    __cpp_lib_bitops      201907L [C++20]
     __cpp_lib_endian      201907L [C++20]
     __cpp_lib_int_pow2    202002L [C++20]
 */
@@ -28,6 +29,10 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_endian
 #   error "__cpp_lib_endian should not be defined before c++20"
 # endif
@@ -42,6 +47,10 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_endian
 #   error "__cpp_lib_endian should not be defined before c++20"
 # endif
@@ -56,6 +65,10 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_endian
 #   error "__cpp_lib_endian should not be defined before c++20"
 # endif
@@ -79,6 +92,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_bitops
+#     error "__cpp_lib_bitops should be defined in c++20"
+#   endif
+#   if __cpp_lib_bitops != 201907L
+#     error "__cpp_lib_bitops should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_bitops
+#     error "__cpp_lib_bitops should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_endian
 #   error "__cpp_lib_endian should be defined in c++20"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
@@ -15,6 +15,7 @@
 
 /*  Constant                            Value
     __cpp_lib_hypot                     201603L [C++17]
+    __cpp_lib_interpolate               201902L [C++20]
     __cpp_lib_math_special_functions    201603L [C++17]
 */
 
@@ -27,6 +28,10 @@
 #   error "__cpp_lib_hypot should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_interpolate
+#   error "__cpp_lib_interpolate should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_math_special_functions
 #   error "__cpp_lib_math_special_functions should not be defined before c++17"
 # endif
@@ -37,6 +42,10 @@
 #   error "__cpp_lib_hypot should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_interpolate
+#   error "__cpp_lib_interpolate should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_math_special_functions
 #   error "__cpp_lib_math_special_functions should not be defined before c++17"
 # endif
@@ -50,6 +59,10 @@
 #   error "__cpp_lib_hypot should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_interpolate
+#   error "__cpp_lib_interpolate should not be defined before c++20"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_math_special_functions
 #     error "__cpp_lib_math_special_functions should be defined in c++17"
@@ -72,6 +85,13 @@
 #   error "__cpp_lib_hypot should have the value 201603L in c++20"
 # endif
 
+# ifndef __cpp_lib_interpolate
+#   error "__cpp_lib_interpolate should be defined in c++20"
+# endif
+# if __cpp_lib_interpolate != 201902L
+#   error "__cpp_lib_interpolate should have the value 201902L in c++20"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_math_special_functions
 #     error "__cpp_lib_math_special_functions should be defined in c++20"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.pass.cpp
@@ -14,7 +14,7 @@
 // Test the feature test macros defined by <compare>
 
 /*  Constant                          Value
-    __cpp_lib_three_way_comparison    201711L [C++20]
+    __cpp_lib_three_way_comparison    201907L [C++20]
 */
 
 #include <compare>
@@ -44,8 +44,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
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_three_way_comparison
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.pass.cpp
@@ -13,8 +13,9 @@
 
 // Test the feature test macros defined by <complex>
 
-/*  Constant                  Value
-    __cpp_lib_complex_udls    201309L [C++14]
+/*  Constant                       Value
+    __cpp_lib_complex_udls         201309L [C++14]
+    __cpp_lib_constexpr_complex    201711L [C++20]
 */
 
 #include <complex>
@@ -26,6 +27,10 @@
 #   error "__cpp_lib_complex_udls should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifndef __cpp_lib_complex_udls
@@ -35,6 +40,10 @@
 #   error "__cpp_lib_complex_udls should have the value 201309L in c++14"
 # endif
 
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_complex_udls
@@ -44,6 +53,10 @@
 #   error "__cpp_lib_complex_udls should have the value 201309L in c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_complex_udls
@@ -53,6 +66,19 @@
 #   error "__cpp_lib_complex_udls should have the value 201309L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_complex
+#     error "__cpp_lib_constexpr_complex should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_complex != 201711L
+#     error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_complex
+#     error "__cpp_lib_constexpr_complex should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 #endif // TEST_STD_VER == 20
 
 int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
@@ -14,7 +14,7 @@
 // Test the feature test macros defined by <concepts>
 
 /*  Constant              Value
-    __cpp_lib_concepts    201806L [C++20]
+    __cpp_lib_concepts    202002L [C++20]
 */
 
 #include <concepts>
@@ -44,8 +44,8 @@
 #   ifndef __cpp_lib_concepts
 #     error "__cpp_lib_concepts should be defined in c++20"
 #   endif
-#   if __cpp_lib_concepts != 201806L
-#     error "__cpp_lib_concepts should have the value 201806L in c++20"
+#   if __cpp_lib_concepts != 202002L
+#     error "__cpp_lib_concepts should have the value 202002L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_concepts
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.pass.cpp
@@ -15,6 +15,7 @@
 
 /*  Constant               Value
     __cpp_lib_execution    201603L [C++17]
+                           201902L [C++20]
 */
 
 #include <execution>
@@ -53,8 +54,8 @@
 #   ifndef __cpp_lib_execution
 #     error "__cpp_lib_execution should be defined in c++20"
 #   endif
-#   if __cpp_lib_execution != 201603L
-#     error "__cpp_lib_execution should have the value 201603L in c++20"
+#   if __cpp_lib_execution != 201902L
+#     error "__cpp_lib_execution should have the value 201902L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_execution
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
@@ -14,7 +14,7 @@
 // Test the feature test macros defined by <functional>
 
 /*  Constant                           Value
-    __cpp_lib_bind_front               201811L [C++20]
+    __cpp_lib_bind_front               201907L [C++20]
     __cpp_lib_boyer_moore_searcher     201603L [C++17]
     __cpp_lib_constexpr_functional     201907L [C++20]
     __cpp_lib_invoke                   201411L [C++17]
@@ -23,6 +23,7 @@
     __cpp_lib_result_of_sfinae         201210L [C++14]
     __cpp_lib_transparent_operators    201210L [C++14]
                                        201510L [C++17]
+    __cpp_lib_unwrap_ref               201811L [C++20]
 */
 
 #include <functional>
@@ -62,6 +63,10 @@
 #   error "__cpp_lib_transparent_operators should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_bind_front
@@ -102,6 +107,10 @@
 #   error "__cpp_lib_transparent_operators should have the value 201210L in c++14"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifdef __cpp_lib_bind_front
@@ -157,14 +166,18 @@
 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_bind_front
 #     error "__cpp_lib_bind_front should be defined in c++20"
 #   endif
-#   if __cpp_lib_bind_front != 201811L
-#     error "__cpp_lib_bind_front should have the value 201811L in c++20"
+#   if __cpp_lib_bind_front != 201907L
+#     error "__cpp_lib_bind_front should have the value 201907L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_bind_front
@@ -185,11 +198,17 @@
 #   endif
 # endif
 
-# ifndef __cpp_lib_constexpr_functional
-#   error "__cpp_lib_constexpr_functional should be defined in c++20"
-# endif
-# if __cpp_lib_constexpr_functional != 201907L
-#   error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_functional
+#     error "__cpp_lib_constexpr_functional should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_functional != 201907L
+#     error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_functional
+#     error "__cpp_lib_constexpr_functional should not be defined because it is unimplemented in libc++!"
+#   endif
 # endif
 
 # ifndef __cpp_lib_invoke
@@ -233,6 +252,13 @@
 #   error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
 # endif
 
+# ifndef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should be defined in c++20"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+#   error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
+# endif
+
 #endif // TEST_STD_VER == 20
 
 int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.pass.cpp
@@ -16,10 +16,12 @@
 /*  Constant                                Value
     __cpp_lib_array_constexpr               201603L [C++17]
                                             201811L [C++20]
+    __cpp_lib_constexpr_iterator            201811L [C++20]
     __cpp_lib_make_reverse_iterator         201402L [C++14]
     __cpp_lib_nonmember_container_access    201411L [C++17]
     __cpp_lib_null_iterators                201304L [C++14]
     __cpp_lib_ranges                        201811L [C++20]
+    __cpp_lib_ssize                         201902L [C++20]
 */
 
 #include <iterator>
@@ -31,6 +33,10 @@
 #   error "__cpp_lib_array_constexpr should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_make_reverse_iterator
 #   error "__cpp_lib_make_reverse_iterator should not be defined before c++14"
 # endif
@@ -47,12 +53,20 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_array_constexpr
 #   error "__cpp_lib_array_constexpr should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_make_reverse_iterator
 #   error "__cpp_lib_make_reverse_iterator should be defined in c++14"
 # endif
@@ -75,6 +89,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # ifndef __cpp_lib_array_constexpr
@@ -84,6 +102,10 @@
 #   error "__cpp_lib_array_constexpr should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_make_reverse_iterator
 #   error "__cpp_lib_make_reverse_iterator should be defined in c++17"
 # endif
@@ -109,6 +131,10 @@
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # ifndef __cpp_lib_array_constexpr
@@ -118,6 +144,19 @@
 #   error "__cpp_lib_array_constexpr should have the value 201811L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_iterator
+#     error "__cpp_lib_constexpr_iterator should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_iterator != 201811L
+#     error "__cpp_lib_constexpr_iterator should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_iterator
+#     error "__cpp_lib_constexpr_iterator should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_make_reverse_iterator
 #   error "__cpp_lib_make_reverse_iterator should be defined in c++20"
 # endif
@@ -152,6 +191,13 @@
 #   endif
 # endif
 
+# ifndef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should be defined in c++20"
+# endif
+# if __cpp_lib_ssize != 201902L
+#   error "__cpp_lib_ssize should have the value 201902L in c++20"
+# endif
+
 #endif // TEST_STD_VER == 20
 
 int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.pass.cpp
new file mode 100644
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.pass.cpp
@@ -0,0 +1,60 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+
+// UNSUPPORTED: libcpp-has-no-threads
+
+// <latch>
+
+// Test the feature test macros defined by <latch>
+
+/*  Constant           Value
+    __cpp_lib_latch    201907L [C++20]
+*/
+
+#include <latch>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_latch
+#     error "__cpp_lib_latch should be defined in c++20"
+#   endif
+#   if __cpp_lib_latch != 201907L
+#     error "__cpp_lib_latch should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_latch
+#     error "__cpp_lib_latch should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
+#endif // TEST_STD_VER == 20
+
+int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.pass.cpp
@@ -16,14 +16,21 @@
 /*  Constant                                      Value
     __cpp_lib_addressof_constexpr                 201603L [C++17]
     __cpp_lib_allocator_traits_is_always_equal    201411L [C++17]
+    __cpp_lib_assume_aligned                      201811L [C++20]
     __cpp_lib_atomic_value_initialization         201911L [C++20]
     __cpp_lib_constexpr_dynamic_alloc             201907L [C++20]
+    __cpp_lib_constexpr_memory                    201811L [C++20]
     __cpp_lib_enable_shared_from_this             201603L [C++17]
     __cpp_lib_make_unique                         201304L [C++14]
+    __cpp_lib_polymorphic_allocator               201902L [C++20]
     __cpp_lib_ranges                              201811L [C++20]
     __cpp_lib_raw_memory_algorithms               201606L [C++17]
     __cpp_lib_shared_ptr_arrays                   201611L [C++17]
     __cpp_lib_shared_ptr_weak_type                201606L [C++17]
+    __cpp_lib_smart_ptr_for_overwrite             202002L [C++20]
+    __cpp_lib_to_address                          201711L [C++20]
+    __cpp_lib_transparent_operators               201210L [C++14]
+                                                  201510L [C++17]
 */
 
 #include <memory>
@@ -39,6 +46,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_value_initialization
 #   error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
 # endif
@@ -47,6 +58,10 @@
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_enable_shared_from_this
 #   error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
 # endif
@@ -55,6 +70,10 @@
 #   error "__cpp_lib_make_unique should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_ranges
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
@@ -71,6 +90,18 @@
 #   error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_transparent_operators
+#   error "__cpp_lib_transparent_operators should not be defined before c++14"
+# endif
+
 #elif TEST_STD_VER == 14
 
 # ifdef __cpp_lib_addressof_constexpr
@@ -81,6 +112,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_value_initialization
 #   error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
 # endif
@@ -89,6 +124,10 @@
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_enable_shared_from_this
 #   error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
 # endif
@@ -100,6 +139,10 @@
 #   error "__cpp_lib_make_unique should have the value 201304L in c++14"
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_ranges
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
@@ -116,6 +159,21 @@
 #   error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+#   error "__cpp_lib_transparent_operators should be defined in c++14"
+# endif
+# if __cpp_lib_transparent_operators != 201210L
+#   error "__cpp_lib_transparent_operators should have the value 201210L in c++14"
+# endif
+
 #elif TEST_STD_VER == 17
 
 # if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700
@@ -138,6 +196,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_value_initialization
 #   error "__cpp_lib_atomic_value_initialization should not be defined before c++20"
 # endif
@@ -146,6 +208,10 @@
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_enable_shared_from_this
 #   error "__cpp_lib_enable_shared_from_this should be defined in c++17"
 # endif
@@ -160,6 +226,10 @@
 #   error "__cpp_lib_make_unique should have the value 201304L in c++17"
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_ranges
 #   error "__cpp_lib_ranges should not be defined before c++20"
 # endif
@@ -185,6 +255,21 @@
 #   error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17"
 # endif
 
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+#   error "__cpp_lib_transparent_operators should be defined in c++17"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+#   error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
+# endif
+
 #elif TEST_STD_VER == 20
 
 # if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700
@@ -207,6 +292,19 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_assume_aligned
+#     error "__cpp_lib_assume_aligned should be defined in c++20"
+#   endif
+#   if __cpp_lib_assume_aligned != 201811L
+#     error "__cpp_lib_assume_aligned should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_assume_aligned
+#     error "__cpp_lib_assume_aligned should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_atomic_value_initialization
 #     error "__cpp_lib_atomic_value_initialization should be defined in c++20"
@@ -227,6 +325,19 @@
 #   error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_memory
+#     error "__cpp_lib_constexpr_memory should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_memory != 201811L
+#     error "__cpp_lib_constexpr_memory should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_memory
+#     error "__cpp_lib_constexpr_memory should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_enable_shared_from_this
 #   error "__cpp_lib_enable_shared_from_this should be defined in c++20"
 # endif
@@ -241,6 +352,19 @@
 #   error "__cpp_lib_make_unique should have the value 201304L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_polymorphic_allocator
+#     error "__cpp_lib_polymorphic_allocator should be defined in c++20"
+#   endif
+#   if __cpp_lib_polymorphic_allocator != 201902L
+#     error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_polymorphic_allocator
+#     error "__cpp_lib_polymorphic_allocator should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_ranges
 #     error "__cpp_lib_ranges should be defined in c++20"
@@ -275,6 +399,33 @@
 #   error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_smart_ptr_for_overwrite
+#     error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20"
+#   endif
+#   if __cpp_lib_smart_ptr_for_overwrite != 202002L
+#     error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_smart_ptr_for_overwrite
+#     error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifndef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should be defined in c++20"
+# endif
+# if __cpp_lib_to_address != 201711L
+#   error "__cpp_lib_to_address should have the value 201711L in c++20"
+# endif
+
+# ifndef __cpp_lib_transparent_operators
+#   error "__cpp_lib_transparent_operators should be defined in c++20"
+# endif
+# if __cpp_lib_transparent_operators != 201510L
+#   error "__cpp_lib_transparent_operators should have the value 201510L in c++20"
+# endif
+
 #endif // TEST_STD_VER == 20
 
 int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.pass.cpp
new file mode 100644
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.pass.cpp
@@ -0,0 +1,60 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+
+// UNSUPPORTED: libcpp-has-no-threads
+
+// <semaphore>
+
+// Test the feature test macros defined by <semaphore>
+
+/*  Constant               Value
+    __cpp_lib_semaphore    201907L [C++20]
+*/
+
+#include <semaphore>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_semaphore
+#     error "__cpp_lib_semaphore should be defined in c++20"
+#   endif
+#   if __cpp_lib_semaphore != 201907L
+#     error "__cpp_lib_semaphore should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_semaphore
+#     error "__cpp_lib_semaphore should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
+#endif // TEST_STD_VER == 20
+
+int main(int, char**) { return 0; }
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
@@ -16,10 +16,13 @@
 /*  Constant                                      Value
     __cpp_lib_allocator_traits_is_always_equal    201411L [C++17]
     __cpp_lib_char8_t                             201811L [C++20]
+    __cpp_lib_constexpr_string                    201907L [C++20]
     __cpp_lib_erase_if                            202002L [C++20]
     __cpp_lib_nonmember_container_access          201411L [C++17]
+    __cpp_lib_starts_ends_with                    201711L [C++20]
     __cpp_lib_string_udls                         201304L [C++14]
     __cpp_lib_string_view                         201606L [C++17]
+                                                  201803L [C++20]
 */
 
 #include <string>
@@ -35,6 +38,10 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -43,6 +50,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should not be defined before c++14"
 # endif
@@ -61,6 +72,10 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -69,6 +84,10 @@
 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++14"
 # endif
@@ -93,6 +112,10 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -104,6 +127,10 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++17"
 # endif
@@ -140,6 +167,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_string
+#     error "__cpp_lib_constexpr_string should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_string != 201907L
+#     error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_string
+#     error "__cpp_lib_constexpr_string should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should be defined in c++20"
 # endif
@@ -154,6 +194,13 @@
 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
 # endif
 
+# ifndef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should be defined in c++20"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+#   error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++20"
 # endif
@@ -164,8 +211,8 @@
 # ifndef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should be defined in c++20"
 # endif
-# if __cpp_lib_string_view != 201606L
-#   error "__cpp_lib_string_view should have the value 201606L in c++20"
+# if __cpp_lib_string_view != 201803L
+#   error "__cpp_lib_string_view should have the value 201803L in c++20"
 # endif
 
 #endif // TEST_STD_VER == 20
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp
@@ -13,9 +13,12 @@
 
 // Test the feature test macros defined by <string_view>
 
-/*  Constant                 Value
-    __cpp_lib_char8_t        201811L [C++20]
-    __cpp_lib_string_view    201606L [C++17]
+/*  Constant                           Value
+    __cpp_lib_char8_t                  201811L [C++20]
+    __cpp_lib_constexpr_string_view    201811L [C++20]
+    __cpp_lib_starts_ends_with         201711L [C++20]
+    __cpp_lib_string_view              201606L [C++17]
+                                       201803L [C++20]
 */
 
 #include <string_view>
@@ -27,6 +30,14 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should not be defined before c++17"
 # endif
@@ -37,6 +48,14 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should not be defined before c++17"
 # endif
@@ -47,6 +66,14 @@
 #   error "__cpp_lib_char8_t should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should be defined in c++17"
 # endif
@@ -69,11 +96,31 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_string_view
+#     error "__cpp_lib_constexpr_string_view should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_string_view != 201811L
+#     error "__cpp_lib_constexpr_string_view should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_string_view
+#     error "__cpp_lib_constexpr_string_view should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifndef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should be defined in c++20"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+#   error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should be defined in c++20"
 # endif
-# if __cpp_lib_string_view != 201606L
-#   error "__cpp_lib_string_view should have the value 201606L in c++20"
+# if __cpp_lib_string_view != 201803L
+#   error "__cpp_lib_string_view should have the value 201803L in c++20"
 # endif
 
 #endif // TEST_STD_VER == 20
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.pass.cpp
copy from libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
copy to libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.pass.cpp
@@ -9,47 +9,49 @@
 // WARNING: This test was generated by generate_feature_test_macro_components.py
 // and should not be edited manually.
 
-// <concepts>
+// UNSUPPORTED: libcpp-has-no-threads
 
-// Test the feature test macros defined by <concepts>
+// <thread>
 
-/*  Constant              Value
-    __cpp_lib_concepts    201806L [C++20]
+// Test the feature test macros defined by <thread>
+
+/*  Constant             Value
+    __cpp_lib_jthread    201911L [C++20]
 */
 
-#include <concepts>
+#include <thread>
 #include "test_macros.h"
 
 #if TEST_STD_VER < 14
 
-# ifdef __cpp_lib_concepts
-#   error "__cpp_lib_concepts should not be defined before c++20"
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
 # endif
 
 #elif TEST_STD_VER == 14
 
-# ifdef __cpp_lib_concepts
-#   error "__cpp_lib_concepts should not be defined before c++20"
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
 # endif
 
 #elif TEST_STD_VER == 17
 
-# ifdef __cpp_lib_concepts
-#   error "__cpp_lib_concepts should not be defined before c++20"
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
 # endif
 
 #elif TEST_STD_VER == 20
 
 # if !defined(_LIBCPP_VERSION)
-#   ifndef __cpp_lib_concepts
-#     error "__cpp_lib_concepts should be defined in c++20"
+#   ifndef __cpp_lib_jthread
+#     error "__cpp_lib_jthread should be defined in c++20"
 #   endif
-#   if __cpp_lib_concepts != 201806L
-#     error "__cpp_lib_concepts should have the value 201806L in c++20"
+#   if __cpp_lib_jthread != 201911L
+#     error "__cpp_lib_jthread should have the value 201911L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
-#   ifdef __cpp_lib_concepts
-#     error "__cpp_lib_concepts should not be defined because it is unimplemented in libc++!"
+#   ifdef __cpp_lib_jthread
+#     error "__cpp_lib_jthread should not be defined because it is unimplemented in libc++!"
 #   endif
 # endif
 
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.pass.cpp
@@ -15,6 +15,7 @@
 
 /*  Constant                     Value
     __cpp_lib_apply              201603L [C++17]
+    __cpp_lib_constexpr_tuple    201811L [C++20]
     __cpp_lib_make_from_tuple    201606L [C++17]
     __cpp_lib_tuple_element_t    201402L [C++14]
     __cpp_lib_tuples_by_type     201304L [C++14]
@@ -29,6 +30,10 @@
 #   error "__cpp_lib_apply should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_make_from_tuple
 #   error "__cpp_lib_make_from_tuple should not be defined before c++17"
 # endif
@@ -47,6 +52,10 @@
 #   error "__cpp_lib_apply should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_make_from_tuple
 #   error "__cpp_lib_make_from_tuple should not be defined before c++17"
 # endif
@@ -74,6 +83,10 @@
 #   error "__cpp_lib_apply should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_make_from_tuple
 #   error "__cpp_lib_make_from_tuple should be defined in c++17"
 # endif
@@ -104,6 +117,19 @@
 #   error "__cpp_lib_apply should have the value 201603L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_tuple
+#     error "__cpp_lib_constexpr_tuple should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_tuple != 201811L
+#     error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_tuple
+#     error "__cpp_lib_constexpr_tuple should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_make_from_tuple
 #   error "__cpp_lib_make_from_tuple should be defined in c++20"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
@@ -15,15 +15,20 @@
 
 /*  Constant                                       Value
     __cpp_lib_bool_constant                        201505L [C++17]
+    __cpp_lib_bounded_array_traits                 201902L [C++20]
     __cpp_lib_has_unique_object_representations    201606L [C++17]
     __cpp_lib_integral_constant_callable           201304L [C++14]
     __cpp_lib_is_aggregate                         201703L [C++17]
     __cpp_lib_is_constant_evaluated                201811L [C++20]
     __cpp_lib_is_final                             201402L [C++14]
     __cpp_lib_is_invocable                         201703L [C++17]
+    __cpp_lib_is_layout_compatible                 201907L [C++20]
+    __cpp_lib_is_nothrow_convertible               201806L [C++20]
     __cpp_lib_is_null_pointer                      201309L [C++14]
+    __cpp_lib_is_pointer_interconvertible          201907L [C++20]
     __cpp_lib_is_swappable                         201603L [C++17]
     __cpp_lib_logical_traits                       201510L [C++17]
+    __cpp_lib_remove_cvref                         201711L [C++20]
     __cpp_lib_result_of_sfinae                     201210L [C++14]
     __cpp_lib_transformation_trait_aliases         201304L [C++14]
     __cpp_lib_type_trait_variable_templates        201510L [C++17]
@@ -39,6 +44,10 @@
 #   error "__cpp_lib_bool_constant should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_has_unique_object_representations
 #   error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
 # endif
@@ -63,10 +72,22 @@
 #   error "__cpp_lib_is_invocable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should not be defined before c++17"
 # endif
@@ -75,6 +96,10 @@
 #   error "__cpp_lib_logical_traits should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should not be defined before c++14"
 # endif
@@ -97,6 +122,10 @@
 #   error "__cpp_lib_bool_constant should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_has_unique_object_representations
 #   error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
 # endif
@@ -127,6 +156,14 @@
 #   error "__cpp_lib_is_invocable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++14"
 # endif
@@ -134,6 +171,10 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++14"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should not be defined before c++17"
 # endif
@@ -142,6 +183,10 @@
 #   error "__cpp_lib_logical_traits should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++14"
 # endif
@@ -173,6 +218,10 @@
 #   error "__cpp_lib_bool_constant should have the value 201505L in c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
 #   ifndef __cpp_lib_has_unique_object_representations
 #     error "__cpp_lib_has_unique_object_representations should be defined in c++17"
@@ -224,6 +273,14 @@
 #   error "__cpp_lib_is_invocable should have the value 201703L in c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++17"
 # endif
@@ -231,6 +288,10 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should be defined in c++17"
 # endif
@@ -245,6 +306,10 @@
 #   error "__cpp_lib_logical_traits should have the value 201510L in c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++17"
 # endif
@@ -282,6 +347,13 @@
 #   error "__cpp_lib_bool_constant should have the value 201505L in c++20"
 # endif
 
+# ifndef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should be defined in c++20"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+#   error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20"
+# endif
+
 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
 #   ifndef __cpp_lib_has_unique_object_representations
 #     error "__cpp_lib_has_unique_object_representations should be defined in c++20"
@@ -342,6 +414,26 @@
 #   error "__cpp_lib_is_invocable should have the value 201703L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_is_layout_compatible
+#     error "__cpp_lib_is_layout_compatible should be defined in c++20"
+#   endif
+#   if __cpp_lib_is_layout_compatible != 201907L
+#     error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_is_layout_compatible
+#     error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifndef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should be defined in c++20"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+#   error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++20"
 # endif
@@ -349,6 +441,19 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_is_pointer_interconvertible
+#     error "__cpp_lib_is_pointer_interconvertible should be defined in c++20"
+#   endif
+#   if __cpp_lib_is_pointer_interconvertible != 201907L
+#     error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_is_pointer_interconvertible
+#     error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should be defined in c++20"
 # endif
@@ -363,6 +468,13 @@
 #   error "__cpp_lib_logical_traits should have the value 201510L in c++20"
 # endif
 
+# ifndef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should be defined in c++20"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+#   error "__cpp_lib_remove_cvref should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++20"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
@@ -13,13 +13,14 @@
 
 // Test the feature test macros defined by <utility>
 
-/*  Constant                       Value
-    __cpp_lib_as_const             201510L [C++17]
-    __cpp_lib_constexpr_utility    201811L [C++20]
-    __cpp_lib_exchange_function    201304L [C++14]
-    __cpp_lib_integer_sequence     201304L [C++14]
-    __cpp_lib_to_chars             201611L [C++17]
-    __cpp_lib_tuples_by_type       201304L [C++14]
+/*  Constant                                  Value
+    __cpp_lib_as_const                        201510L [C++17]
+    __cpp_lib_constexpr_utility               201811L [C++20]
+    __cpp_lib_exchange_function               201304L [C++14]
+    __cpp_lib_integer_comparison_functions    202002L [C++20]
+    __cpp_lib_integer_sequence                201304L [C++14]
+    __cpp_lib_to_chars                        201611L [C++17]
+    __cpp_lib_tuples_by_type                  201304L [C++14]
 */
 
 #include <utility>
@@ -39,6 +40,10 @@
 #   error "__cpp_lib_exchange_function should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should not be defined before c++14"
 # endif
@@ -68,6 +73,10 @@
 #   error "__cpp_lib_exchange_function should have the value 201304L in c++14"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++14"
 # endif
@@ -106,6 +115,10 @@
 #   error "__cpp_lib_exchange_function should have the value 201304L in c++17"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++17"
 # endif
@@ -156,6 +169,19 @@
 #   error "__cpp_lib_exchange_function should have the value 201304L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_integer_comparison_functions
+#     error "__cpp_lib_integer_comparison_functions should be defined in c++20"
+#   endif
+#   if __cpp_lib_integer_comparison_functions != 202002L
+#     error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_integer_comparison_functions
+#     error "__cpp_lib_integer_comparison_functions should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++20"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
@@ -15,6 +15,7 @@
 
 /*  Constant                                      Value
     __cpp_lib_allocator_traits_is_always_equal    201411L [C++17]
+    __cpp_lib_constexpr_vector                    201907L [C++20]
     __cpp_lib_erase_if                            202002L [C++20]
     __cpp_lib_incomplete_container_elements       201505L [C++17]
     __cpp_lib_nonmember_container_access          201411L [C++17]
@@ -29,6 +30,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -47,6 +52,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -68,6 +77,10 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should not be defined before c++20"
 # endif
@@ -95,6 +108,19 @@
 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_vector
+#     error "__cpp_lib_constexpr_vector should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_vector != 201907L
+#     error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_vector
+#     error "__cpp_lib_constexpr_vector should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_erase_if
 #   error "__cpp_lib_erase_if should be defined in c++20"
 # endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
@@ -21,6 +21,7 @@
     __cpp_lib_array_constexpr                      201603L [C++17]
                                                    201811L [C++20]
     __cpp_lib_as_const                             201510L [C++17]
+    __cpp_lib_assume_aligned                       201811L [C++20]
     __cpp_lib_atomic_flag_test                     201907L [C++20]
     __cpp_lib_atomic_float                         201711L [C++20]
     __cpp_lib_atomic_is_always_lock_free           201603L [C++17]
@@ -29,9 +30,12 @@
     __cpp_lib_atomic_shared_ptr                    201711L [C++20]
     __cpp_lib_atomic_value_initialization          201911L [C++20]
     __cpp_lib_atomic_wait                          201907L [C++20]
-    __cpp_lib_bind_front                           201811L [C++20]
+    __cpp_lib_barrier                              201907L [C++20]
+    __cpp_lib_bind_front                           201907L [C++20]
     __cpp_lib_bit_cast                             201806L [C++20]
+    __cpp_lib_bitops                               201907L [C++20]
     __cpp_lib_bool_constant                        201505L [C++17]
+    __cpp_lib_bounded_array_traits                 201902L [C++20]
     __cpp_lib_boyer_moore_searcher                 201603L [C++17]
     __cpp_lib_byte                                 201603L [C++17]
     __cpp_lib_char8_t                              201811L [C++20]
@@ -39,18 +43,27 @@
     __cpp_lib_chrono_udls                          201304L [C++14]
     __cpp_lib_clamp                                201603L [C++17]
     __cpp_lib_complex_udls                         201309L [C++14]
-    __cpp_lib_concepts                             201806L [C++20]
+    __cpp_lib_concepts                             202002L [C++20]
+    __cpp_lib_constexpr_algorithms                 201806L [C++20]
+    __cpp_lib_constexpr_complex                    201711L [C++20]
     __cpp_lib_constexpr_dynamic_alloc              201907L [C++20]
     __cpp_lib_constexpr_functional                 201907L [C++20]
+    __cpp_lib_constexpr_iterator                   201811L [C++20]
+    __cpp_lib_constexpr_memory                     201811L [C++20]
     __cpp_lib_constexpr_numeric                    201911L [C++20]
-    __cpp_lib_constexpr_swap_algorithms            201806L [C++20]
+    __cpp_lib_constexpr_string                     201907L [C++20]
+    __cpp_lib_constexpr_string_view                201811L [C++20]
+    __cpp_lib_constexpr_tuple                      201811L [C++20]
     __cpp_lib_constexpr_utility                    201811L [C++20]
+    __cpp_lib_constexpr_vector                     201907L [C++20]
+    __cpp_lib_coroutine                            201902L [C++20]
     __cpp_lib_destroying_delete                    201806L [C++20]
     __cpp_lib_enable_shared_from_this              201603L [C++17]
     __cpp_lib_endian                               201907L [C++20]
     __cpp_lib_erase_if                             202002L [C++20]
     __cpp_lib_exchange_function                    201304L [C++14]
     __cpp_lib_execution                            201603L [C++17]
+                                                   201902L [C++20]
     __cpp_lib_filesystem                           201703L [C++17]
     __cpp_lib_gcd_lcm                              201606L [C++17]
     __cpp_lib_generic_associative_lookup           201304L [C++14]
@@ -60,6 +73,7 @@
     __cpp_lib_hypot                                201603L [C++17]
     __cpp_lib_incomplete_container_elements        201505L [C++17]
     __cpp_lib_int_pow2                             202002L [C++20]
+    __cpp_lib_integer_comparison_functions         202002L [C++20]
     __cpp_lib_integer_sequence                     201304L [C++14]
     __cpp_lib_integral_constant_callable           201304L [C++14]
     __cpp_lib_interpolate                          201902L [C++20]
@@ -68,8 +82,13 @@
     __cpp_lib_is_constant_evaluated                201811L [C++20]
     __cpp_lib_is_final                             201402L [C++14]
     __cpp_lib_is_invocable                         201703L [C++17]
+    __cpp_lib_is_layout_compatible                 201907L [C++20]
+    __cpp_lib_is_nothrow_convertible               201806L [C++20]
     __cpp_lib_is_null_pointer                      201309L [C++14]
+    __cpp_lib_is_pointer_interconvertible          201907L [C++20]
     __cpp_lib_is_swappable                         201603L [C++17]
+    __cpp_lib_jthread                              201911L [C++20]
+    __cpp_lib_latch                                201907L [C++20]
     __cpp_lib_launder                              201606L [C++17]
     __cpp_lib_list_remove_return_type              201806L [C++20]
     __cpp_lib_logical_traits                       201510L [C++17]
@@ -86,21 +105,32 @@
     __cpp_lib_null_iterators                       201304L [C++14]
     __cpp_lib_optional                             201606L [C++17]
     __cpp_lib_parallel_algorithm                   201603L [C++17]
+    __cpp_lib_polymorphic_allocator                201902L [C++20]
     __cpp_lib_quoted_string_io                     201304L [C++14]
     __cpp_lib_ranges                               201811L [C++20]
     __cpp_lib_raw_memory_algorithms                201606L [C++17]
+    __cpp_lib_remove_cvref                         201711L [C++20]
     __cpp_lib_result_of_sfinae                     201210L [C++14]
     __cpp_lib_robust_nonmodifying_seq_ops          201304L [C++14]
     __cpp_lib_sample                               201603L [C++17]
     __cpp_lib_scoped_lock                          201703L [C++17]
+    __cpp_lib_semaphore                            201907L [C++20]
     __cpp_lib_shared_mutex                         201505L [C++17]
     __cpp_lib_shared_ptr_arrays                    201611L [C++17]
     __cpp_lib_shared_ptr_weak_type                 201606L [C++17]
     __cpp_lib_shared_timed_mutex                   201402L [C++14]
+    __cpp_lib_shift                                201806L [C++20]
+    __cpp_lib_smart_ptr_for_overwrite              202002L [C++20]
+    __cpp_lib_source_location                      201907L [C++20]
     __cpp_lib_span                                 202002L [C++20]
+    __cpp_lib_ssize                                201902L [C++20]
+    __cpp_lib_starts_ends_with                     201711L [C++20]
     __cpp_lib_string_udls                          201304L [C++14]
     __cpp_lib_string_view                          201606L [C++17]
-    __cpp_lib_three_way_comparison                 201711L [C++20]
+                                                   201803L [C++20]
+    __cpp_lib_syncbuf                              201803L [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]
     __cpp_lib_transformation_trait_aliases         201304L [C++14]
@@ -111,6 +141,7 @@
     __cpp_lib_type_trait_variable_templates        201510L [C++17]
     __cpp_lib_uncaught_exceptions                  201411L [C++17]
     __cpp_lib_unordered_map_try_emplace            201411L [C++17]
+    __cpp_lib_unwrap_ref                           201811L [C++20]
     __cpp_lib_variant                              201606L [C++17]
     __cpp_lib_void_t                               201411L [C++17]
 */
@@ -144,6 +175,10 @@
 #   error "__cpp_lib_as_const should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_flag_test
 #   error "__cpp_lib_atomic_flag_test should not be defined before c++20"
 # endif
@@ -176,6 +211,10 @@
 #   error "__cpp_lib_atomic_wait should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -184,10 +223,18 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_bool_constant
 #   error "__cpp_lib_bool_constant should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_boyer_moore_searcher
 #   error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
 # endif
@@ -220,6 +267,14 @@
 #   error "__cpp_lib_concepts should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_dynamic_alloc
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
@@ -228,18 +283,42 @@
 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_numeric
 #   error "__cpp_lib_constexpr_numeric should not be defined before c++20"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
 # endif
 
 # ifdef __cpp_lib_constexpr_utility
 #   error "__cpp_lib_constexpr_utility should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_coroutine
+#   error "__cpp_lib_coroutine should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -300,6 +379,10 @@
 #   error "__cpp_lib_int_pow2 should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should not be defined before c++14"
 # endif
@@ -332,14 +415,34 @@
 #   error "__cpp_lib_is_invocable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_launder
 #   error "__cpp_lib_launder should not be defined before c++17"
 # endif
@@ -404,6 +507,10 @@
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_quoted_string_io
 #   error "__cpp_lib_quoted_string_io should not be defined before c++14"
 # endif
@@ -416,6 +523,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should not be defined before c++14"
 # endif
@@ -432,6 +543,10 @@
 #   error "__cpp_lib_scoped_lock should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_shared_mutex
 #   error "__cpp_lib_shared_mutex should not be defined before c++17"
 # endif
@@ -448,10 +563,30 @@
 #   error "__cpp_lib_shared_timed_mutex should not be defined before c++14"
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_source_location
+#   error "__cpp_lib_source_location should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_span
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should not be defined before c++14"
 # endif
@@ -460,10 +595,18 @@
 #   error "__cpp_lib_string_view should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_syncbuf
+#   error "__cpp_lib_syncbuf should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_three_way_comparison
 #   error "__cpp_lib_three_way_comparison should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_to_array
 #   error "__cpp_lib_to_array should not be defined before c++20"
 # endif
@@ -500,6 +643,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_variant
 #   error "__cpp_lib_variant should not be defined before c++17"
 # endif
@@ -534,6 +681,10 @@
 #   error "__cpp_lib_as_const should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_flag_test
 #   error "__cpp_lib_atomic_flag_test should not be defined before c++20"
 # endif
@@ -566,6 +717,10 @@
 #   error "__cpp_lib_atomic_wait should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -574,10 +729,18 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_bool_constant
 #   error "__cpp_lib_bool_constant should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_boyer_moore_searcher
 #   error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
 # endif
@@ -616,6 +779,14 @@
 #   error "__cpp_lib_concepts should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_dynamic_alloc
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
@@ -624,18 +795,42 @@
 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_numeric
 #   error "__cpp_lib_constexpr_numeric should not be defined before c++20"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
 # endif
 
 # ifdef __cpp_lib_constexpr_utility
 #   error "__cpp_lib_constexpr_utility should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_coroutine
+#   error "__cpp_lib_coroutine should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -702,6 +897,10 @@
 #   error "__cpp_lib_int_pow2 should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++14"
 # endif
@@ -743,6 +942,14 @@
 #   error "__cpp_lib_is_invocable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++14"
 # endif
@@ -750,10 +957,22 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++14"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_launder
 #   error "__cpp_lib_launder should not be defined before c++17"
 # endif
@@ -827,6 +1046,10 @@
 #   error "__cpp_lib_parallel_algorithm should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_quoted_string_io
 #   error "__cpp_lib_quoted_string_io should be defined in c++14"
 # endif
@@ -842,6 +1065,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++14"
 # endif
@@ -864,6 +1091,10 @@
 #   error "__cpp_lib_scoped_lock should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_shared_mutex
 #   error "__cpp_lib_shared_mutex should not be defined before c++17"
 # endif
@@ -889,10 +1120,30 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_source_location
+#   error "__cpp_lib_source_location should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_span
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++14"
 # endif
@@ -904,10 +1155,18 @@
 #   error "__cpp_lib_string_view should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_syncbuf
+#   error "__cpp_lib_syncbuf should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_three_way_comparison
 #   error "__cpp_lib_three_way_comparison should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_to_array
 #   error "__cpp_lib_to_array should not be defined before c++20"
 # endif
@@ -956,6 +1215,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_variant
 #   error "__cpp_lib_variant should not be defined before c++17"
 # endif
@@ -1014,6 +1277,10 @@
 #   error "__cpp_lib_as_const should have the value 201510L in c++17"
 # endif
 
+# ifdef __cpp_lib_assume_aligned
+#   error "__cpp_lib_assume_aligned should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_atomic_flag_test
 #   error "__cpp_lib_atomic_flag_test should not be defined before c++20"
 # endif
@@ -1055,6 +1322,10 @@
 #   error "__cpp_lib_atomic_wait should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_barrier
+#   error "__cpp_lib_barrier should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_bind_front
 #   error "__cpp_lib_bind_front should not be defined before c++20"
 # endif
@@ -1063,6 +1334,10 @@
 #   error "__cpp_lib_bit_cast should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_bitops
+#   error "__cpp_lib_bitops should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_bool_constant
 #   error "__cpp_lib_bool_constant should be defined in c++17"
 # endif
@@ -1070,6 +1345,10 @@
 #   error "__cpp_lib_bool_constant should have the value 201505L in c++17"
 # endif
 
+# ifdef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_boyer_moore_searcher
 #     error "__cpp_lib_boyer_moore_searcher should be defined in c++17"
@@ -1126,6 +1405,14 @@
 #   error "__cpp_lib_concepts should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_algorithms
+#   error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_complex
+#   error "__cpp_lib_constexpr_complex should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_dynamic_alloc
 #   error "__cpp_lib_constexpr_dynamic_alloc should not be defined before c++20"
 # endif
@@ -1134,18 +1421,42 @@
 #   error "__cpp_lib_constexpr_functional should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_iterator
+#   error "__cpp_lib_constexpr_iterator should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_memory
+#   error "__cpp_lib_constexpr_memory should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_constexpr_numeric
 #   error "__cpp_lib_constexpr_numeric should not be defined before c++20"
 # endif
 
-# ifdef __cpp_lib_constexpr_swap_algorithms
-#   error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++20"
+# ifdef __cpp_lib_constexpr_string
+#   error "__cpp_lib_constexpr_string should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_string_view
+#   error "__cpp_lib_constexpr_string_view should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_constexpr_tuple
+#   error "__cpp_lib_constexpr_tuple should not be defined before c++20"
 # endif
 
 # ifdef __cpp_lib_constexpr_utility
 #   error "__cpp_lib_constexpr_utility should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_constexpr_vector
+#   error "__cpp_lib_constexpr_vector should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_coroutine
+#   error "__cpp_lib_coroutine should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_destroying_delete
 #   error "__cpp_lib_destroying_delete should not be defined before c++20"
 # endif
@@ -1254,6 +1565,10 @@
 #   error "__cpp_lib_int_pow2 should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_integer_comparison_functions
+#   error "__cpp_lib_integer_comparison_functions should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++17"
 # endif
@@ -1310,6 +1625,14 @@
 #   error "__cpp_lib_is_invocable should have the value 201703L in c++17"
 # endif
 
+# ifdef __cpp_lib_is_layout_compatible
+#   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++17"
 # endif
@@ -1317,6 +1640,10 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
 # endif
 
+# ifdef __cpp_lib_is_pointer_interconvertible
+#   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should be defined in c++17"
 # endif
@@ -1324,6 +1651,14 @@
 #   error "__cpp_lib_is_swappable should have the value 201603L in c++17"
 # endif
 
+# ifdef __cpp_lib_jthread
+#   error "__cpp_lib_jthread should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_latch
+#   error "__cpp_lib_latch should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_launder
 #   error "__cpp_lib_launder should be defined in c++17"
 # endif
@@ -1448,6 +1783,10 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_polymorphic_allocator
+#   error "__cpp_lib_polymorphic_allocator should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_quoted_string_io
 #   error "__cpp_lib_quoted_string_io should be defined in c++17"
 # endif
@@ -1466,6 +1805,10 @@
 #   error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
 # endif
 
+# ifdef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++17"
 # endif
@@ -1494,6 +1837,10 @@
 #   error "__cpp_lib_scoped_lock should have the value 201703L in c++17"
 # endif
 
+# ifdef __cpp_lib_semaphore
+#   error "__cpp_lib_semaphore should not be defined before c++20"
+# endif
+
 # if !defined(_LIBCPP_HAS_NO_THREADS)
 #   ifndef __cpp_lib_shared_mutex
 #     error "__cpp_lib_shared_mutex should be defined in c++17"
@@ -1534,10 +1881,30 @@
 #   endif
 # endif
 
+# ifdef __cpp_lib_shift
+#   error "__cpp_lib_shift should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_smart_ptr_for_overwrite
+#   error "__cpp_lib_smart_ptr_for_overwrite should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_source_location
+#   error "__cpp_lib_source_location should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_span
 #   error "__cpp_lib_span should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should not be defined before c++20"
+# endif
+
+# ifdef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++17"
 # endif
@@ -1552,10 +1919,18 @@
 #   error "__cpp_lib_string_view should have the value 201606L in c++17"
 # endif
 
+# ifdef __cpp_lib_syncbuf
+#   error "__cpp_lib_syncbuf should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_three_way_comparison
 #   error "__cpp_lib_three_way_comparison should not be defined before c++20"
 # endif
 
+# ifdef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should not be defined before c++20"
+# endif
+
 # ifdef __cpp_lib_to_array
 #   error "__cpp_lib_to_array should not be defined before c++20"
 # endif
@@ -1622,6 +1997,10 @@
 #   error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++17"
 # endif
 
+# ifdef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should not be defined before c++20"
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++17"
 # endif
@@ -1686,6 +2065,19 @@
 #   error "__cpp_lib_as_const should have the value 201510L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_assume_aligned
+#     error "__cpp_lib_assume_aligned should be defined in c++20"
+#   endif
+#   if __cpp_lib_assume_aligned != 201811L
+#     error "__cpp_lib_assume_aligned should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_assume_aligned
+#     error "__cpp_lib_assume_aligned should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_HAS_NO_THREADS)
 #   ifndef __cpp_lib_atomic_flag_test
 #     error "__cpp_lib_atomic_flag_test should be defined in c++20"
@@ -1790,12 +2182,25 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_barrier
+#     error "__cpp_lib_barrier should be defined in c++20"
+#   endif
+#   if __cpp_lib_barrier != 201907L
+#     error "__cpp_lib_barrier should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_barrier
+#     error "__cpp_lib_barrier should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_bind_front
 #     error "__cpp_lib_bind_front should be defined in c++20"
 #   endif
-#   if __cpp_lib_bind_front != 201811L
-#     error "__cpp_lib_bind_front should have the value 201811L in c++20"
+#   if __cpp_lib_bind_front != 201907L
+#     error "__cpp_lib_bind_front should have the value 201907L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_bind_front
@@ -1816,6 +2221,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_bitops
+#     error "__cpp_lib_bitops should be defined in c++20"
+#   endif
+#   if __cpp_lib_bitops != 201907L
+#     error "__cpp_lib_bitops should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_bitops
+#     error "__cpp_lib_bitops should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_bool_constant
 #   error "__cpp_lib_bool_constant should be defined in c++20"
 # endif
@@ -1823,6 +2241,13 @@
 #   error "__cpp_lib_bool_constant should have the value 201505L in c++20"
 # endif
 
+# ifndef __cpp_lib_bounded_array_traits
+#   error "__cpp_lib_bounded_array_traits should be defined in c++20"
+# endif
+# if __cpp_lib_bounded_array_traits != 201902L
+#   error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20"
+# endif
+
 # if !defined(_LIBCPP_VERSION)
 #   ifndef __cpp_lib_boyer_moore_searcher
 #     error "__cpp_lib_boyer_moore_searcher should be defined in c++20"
@@ -1888,8 +2313,8 @@
 #   ifndef __cpp_lib_concepts
 #     error "__cpp_lib_concepts should be defined in c++20"
 #   endif
-#   if __cpp_lib_concepts != 201806L
-#     error "__cpp_lib_concepts should have the value 201806L in c++20"
+#   if __cpp_lib_concepts != 202002L
+#     error "__cpp_lib_concepts should have the value 202002L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_concepts
@@ -1897,6 +2322,32 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_algorithms
+#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_algorithms != 201806L
+#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_algorithms
+#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_complex
+#     error "__cpp_lib_constexpr_complex should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_complex != 201711L
+#     error "__cpp_lib_constexpr_complex should have the value 201711L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_complex
+#     error "__cpp_lib_constexpr_complex should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_constexpr_dynamic_alloc
 #   error "__cpp_lib_constexpr_dynamic_alloc should be defined in c++20"
 # endif
@@ -1904,11 +2355,43 @@
 #   error "__cpp_lib_constexpr_dynamic_alloc should have the value 201907L in c++20"
 # endif
 
-# ifndef __cpp_lib_constexpr_functional
-#   error "__cpp_lib_constexpr_functional should be defined in c++20"
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_functional
+#     error "__cpp_lib_constexpr_functional should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_functional != 201907L
+#     error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_functional
+#     error "__cpp_lib_constexpr_functional should not be defined because it is unimplemented in libc++!"
+#   endif
 # endif
-# if __cpp_lib_constexpr_functional != 201907L
-#   error "__cpp_lib_constexpr_functional should have the value 201907L in c++20"
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_iterator
+#     error "__cpp_lib_constexpr_iterator should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_iterator != 201811L
+#     error "__cpp_lib_constexpr_iterator should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_iterator
+#     error "__cpp_lib_constexpr_iterator should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_memory
+#     error "__cpp_lib_constexpr_memory should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_memory != 201811L
+#     error "__cpp_lib_constexpr_memory should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_memory
+#     error "__cpp_lib_constexpr_memory should not be defined because it is unimplemented in libc++!"
+#   endif
 # endif
 
 # ifndef __cpp_lib_constexpr_numeric
@@ -1919,15 +2402,41 @@
 # endif
 
 # if !defined(_LIBCPP_VERSION)
-#   ifndef __cpp_lib_constexpr_swap_algorithms
-#     error "__cpp_lib_constexpr_swap_algorithms should be defined in c++20"
+#   ifndef __cpp_lib_constexpr_string
+#     error "__cpp_lib_constexpr_string should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_string != 201907L
+#     error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_string
+#     error "__cpp_lib_constexpr_string should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_string_view
+#     error "__cpp_lib_constexpr_string_view should be defined in c++20"
 #   endif
-#   if __cpp_lib_constexpr_swap_algorithms != 201806L
-#     error "__cpp_lib_constexpr_swap_algorithms should have the value 201806L in c++20"
+#   if __cpp_lib_constexpr_string_view != 201811L
+#     error "__cpp_lib_constexpr_string_view should have the value 201811L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
-#   ifdef __cpp_lib_constexpr_swap_algorithms
-#     error "__cpp_lib_constexpr_swap_algorithms should not be defined because it is unimplemented in libc++!"
+#   ifdef __cpp_lib_constexpr_string_view
+#     error "__cpp_lib_constexpr_string_view should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_tuple
+#     error "__cpp_lib_constexpr_tuple should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_tuple != 201811L
+#     error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_tuple
+#     error "__cpp_lib_constexpr_tuple should not be defined because it is unimplemented in libc++!"
 #   endif
 # endif
 
@@ -1938,6 +2447,32 @@
 #   error "__cpp_lib_constexpr_utility should have the value 201811L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_constexpr_vector
+#     error "__cpp_lib_constexpr_vector should be defined in c++20"
+#   endif
+#   if __cpp_lib_constexpr_vector != 201907L
+#     error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_constexpr_vector
+#     error "__cpp_lib_constexpr_vector should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_coroutine
+#     error "__cpp_lib_coroutine should be defined in c++20"
+#   endif
+#   if __cpp_lib_coroutine != 201902L
+#     error "__cpp_lib_coroutine should have the value 201902L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_coroutine
+#     error "__cpp_lib_coroutine should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
 #   ifndef __cpp_lib_destroying_delete
 #     error "__cpp_lib_destroying_delete should be defined in c++20"
@@ -1983,8 +2518,8 @@
 #   ifndef __cpp_lib_execution
 #     error "__cpp_lib_execution should be defined in c++20"
 #   endif
-#   if __cpp_lib_execution != 201603L
-#     error "__cpp_lib_execution should have the value 201603L in c++20"
+#   if __cpp_lib_execution != 201902L
+#     error "__cpp_lib_execution should have the value 201902L in c++20"
 #   endif
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_execution
@@ -2067,6 +2602,19 @@
 #   error "__cpp_lib_int_pow2 should have the value 202002L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_integer_comparison_functions
+#     error "__cpp_lib_integer_comparison_functions should be defined in c++20"
+#   endif
+#   if __cpp_lib_integer_comparison_functions != 202002L
+#     error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_integer_comparison_functions
+#     error "__cpp_lib_integer_comparison_functions should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_integer_sequence
 #   error "__cpp_lib_integer_sequence should be defined in c++20"
 # endif
@@ -2135,6 +2683,26 @@
 #   error "__cpp_lib_is_invocable should have the value 201703L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_is_layout_compatible
+#     error "__cpp_lib_is_layout_compatible should be defined in c++20"
+#   endif
+#   if __cpp_lib_is_layout_compatible != 201907L
+#     error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_is_layout_compatible
+#     error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# ifndef __cpp_lib_is_nothrow_convertible
+#   error "__cpp_lib_is_nothrow_convertible should be defined in c++20"
+# endif
+# if __cpp_lib_is_nothrow_convertible != 201806L
+#   error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20"
+# endif
+
 # ifndef __cpp_lib_is_null_pointer
 #   error "__cpp_lib_is_null_pointer should be defined in c++20"
 # endif
@@ -2142,6 +2710,19 @@
 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_is_pointer_interconvertible
+#     error "__cpp_lib_is_pointer_interconvertible should be defined in c++20"
+#   endif
+#   if __cpp_lib_is_pointer_interconvertible != 201907L
+#     error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_is_pointer_interconvertible
+#     error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_is_swappable
 #   error "__cpp_lib_is_swappable should be defined in c++20"
 # endif
@@ -2149,6 +2730,32 @@
 #   error "__cpp_lib_is_swappable should have the value 201603L in c++20"
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_jthread
+#     error "__cpp_lib_jthread should be defined in c++20"
+#   endif
+#   if __cpp_lib_jthread != 201911L
+#     error "__cpp_lib_jthread should have the value 201911L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_jthread
+#     error "__cpp_lib_jthread should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_latch
+#     error "__cpp_lib_latch should be defined in c++20"
+#   endif
+#   if __cpp_lib_latch != 201907L
+#     error "__cpp_lib_latch should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_latch
+#     error "__cpp_lib_latch should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_launder
 #   error "__cpp_lib_launder should be defined in c++20"
 # endif
@@ -2285,6 +2892,19 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_polymorphic_allocator
+#     error "__cpp_lib_polymorphic_allocator should be defined in c++20"
+#   endif
+#   if __cpp_lib_polymorphic_allocator != 201902L
+#     error "__cpp_lib_polymorphic_allocator should have the value 201902L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_polymorphic_allocator
+#     error "__cpp_lib_polymorphic_allocator should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_quoted_string_io
 #   error "__cpp_lib_quoted_string_io should be defined in c++20"
 # endif
@@ -2312,6 +2932,13 @@
 #   error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++20"
 # endif
 
+# ifndef __cpp_lib_remove_cvref
+#   error "__cpp_lib_remove_cvref should be defined in c++20"
+# endif
+# if __cpp_lib_remove_cvref != 201711L
+#   error "__cpp_lib_remove_cvref should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_result_of_sfinae
 #   error "__cpp_lib_result_of_sfinae should be defined in c++20"
 # endif
@@ -2340,6 +2967,19 @@
 #   error "__cpp_lib_scoped_lock should have the value 201703L in c++20"
 # endif
 
+# if !defined(_LIBCPP_HAS_NO_THREADS)
+#   ifndef __cpp_lib_semaphore
+#     error "__cpp_lib_semaphore should be defined in c++20"
+#   endif
+#   if __cpp_lib_semaphore != 201907L
+#     error "__cpp_lib_semaphore should have the value 201907L in c++20"
+#   endif
+# else
+#   ifdef __cpp_lib_semaphore
+#     error "__cpp_lib_semaphore should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!"
+#   endif
+# endif
+
 # if !defined(_LIBCPP_HAS_NO_THREADS)
 #   ifndef __cpp_lib_shared_mutex
 #     error "__cpp_lib_shared_mutex should be defined in c++20"
@@ -2380,6 +3020,45 @@
 #   endif
 # endif
 
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_shift
+#     error "__cpp_lib_shift should be defined in c++20"
+#   endif
+#   if __cpp_lib_shift != 201806L
+#     error "__cpp_lib_shift should have the value 201806L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_shift
+#     error "__cpp_lib_shift should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_smart_ptr_for_overwrite
+#     error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20"
+#   endif
+#   if __cpp_lib_smart_ptr_for_overwrite != 202002L
+#     error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_smart_ptr_for_overwrite
+#     error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_source_location
+#     error "__cpp_lib_source_location should be defined in c++20"
+#   endif
+#   if __cpp_lib_source_location != 201907L
+#     error "__cpp_lib_source_location should have the value 201907L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_source_location
+#     error "__cpp_lib_source_location should not be defined because it is unimplemented in libc++!"
+#   endif
+# endif
+
 # ifndef __cpp_lib_span
 #   error "__cpp_lib_span should be defined in c++20"
 # endif
@@ -2387,6 +3066,20 @@
 #   error "__cpp_lib_span should have the value 202002L in c++20"
 # endif
 
+# ifndef __cpp_lib_ssize
+#   error "__cpp_lib_ssize should be defined in c++20"
+# endif
+# if __cpp_lib_ssize != 201902L
+#   error "__cpp_lib_ssize should have the value 201902L in c++20"
+# endif
+
+# ifndef __cpp_lib_starts_ends_with
+#   error "__cpp_lib_starts_ends_with should be defined in c++20"
+# endif
+# if __cpp_lib_starts_ends_with != 201711L
+#   error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_string_udls
 #   error "__cpp_lib_string_udls should be defined in c++20"
 # endif
@@ -2397,16 +3090,29 @@
 # ifndef __cpp_lib_string_view
 #   error "__cpp_lib_string_view should be defined in c++20"
 # endif
-# if __cpp_lib_string_view != 201606L
-#   error "__cpp_lib_string_view should have the value 201606L in c++20"
+# if __cpp_lib_string_view != 201803L
+#   error "__cpp_lib_string_view should have the value 201803L in c++20"
+# endif
+
+# if !defined(_LIBCPP_VERSION)
+#   ifndef __cpp_lib_syncbuf
+#     error "__cpp_lib_syncbuf should be defined in c++20"
+#   endif
+#   if __cpp_lib_syncbuf != 201803L
+#     error "__cpp_lib_syncbuf should have the value 201803L in c++20"
+#   endif
+# else // _LIBCPP_VERSION
+#   ifdef __cpp_lib_syncbuf
+#     error "__cpp_lib_syncbuf should not be defined because it is unimplemented in libc++!"
+#   endif
 # endif
 
 # if !defined(_LIBCPP_VERSION)
 #   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
 # else // _LIBCPP_VERSION
 #   ifdef __cpp_lib_three_way_comparison
@@ -2414,6 +3120,13 @@
 #   endif
 # endif
 
+# ifndef __cpp_lib_to_address
+#   error "__cpp_lib_to_address should be defined in c++20"
+# endif
+# if __cpp_lib_to_address != 201711L
+#   error "__cpp_lib_to_address should have the value 201711L in c++20"
+# endif
+
 # ifndef __cpp_lib_to_array
 #   error "__cpp_lib_to_array should be defined in c++20"
 # endif
@@ -2483,6 +3196,13 @@
 #   error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++20"
 # endif
 
+# ifndef __cpp_lib_unwrap_ref
+#   error "__cpp_lib_unwrap_ref should be defined in c++20"
+# endif
+# if __cpp_lib_unwrap_ref != 201811L
+#   error "__cpp_lib_unwrap_ref should have the value 201811L in c++20"
+# endif
+
 # ifndef __cpp_lib_variant
 #   error "__cpp_lib_variant should be defined in c++20"
 # endif
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -56,6 +56,11 @@
     "name": "__cpp_lib_as_const",
     "values": { "c++17": 201510 },
     "headers": ["utility"],
+  }, {
+    "name": "__cpp_lib_assume_aligned",
+    "values": { "c++20": 201811 },
+    "headers": ["memory"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_atomic_flag_test",
     "values": { "c++20": 201907 },
@@ -108,9 +113,15 @@
     "headers": ["atomic"],
     "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
     "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+  }, {
+    "name": "__cpp_lib_barrier",
+    "values": { "c++20": 201907 },
+    "headers": ["barrier"],
+    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+    "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
   }, {
     "name": "__cpp_lib_bind_front",
-    "values": { "c++20": 201811 },
+    "values": { "c++20": 201907 },
     "headers": ["functional"],
     "unimplemented": True,
   }, {
@@ -118,10 +129,19 @@
     "values": { "c++20": 201806 },
     "headers": ["bit"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_bitops",
+    "values": { "c++20": 201907 },
+    "headers": ["bit"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_bool_constant",
     "values": { "c++17": 201505 },
     "headers": ["type_traits"],
+  }, {
+    "name": "__cpp_lib_bounded_array_traits",
+    "values": { "c++20": 201902 },
+    "headers": ["type_traits"],
   }, {
     "name": "__cpp_lib_boyer_moore_searcher",
     "values": { "c++17": 201603 },
@@ -155,9 +175,19 @@
     "headers": ["complex"],
   }, {
     "name": "__cpp_lib_concepts",
-    "values": { "c++20": 201806 },
+    "values": { "c++20": 202002 },
     "headers": ["concepts"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_algorithms",
+    "values": { "c++20": 201806 },
+    "headers": ["algorithm"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_complex",
+    "values": { "c++20": 201711 },
+    "headers": ["complex"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_constexpr_dynamic_alloc",
     "values": { "c++20": 201907 },
@@ -166,19 +196,50 @@
     "name": "__cpp_lib_constexpr_functional",
     "values": { "c++20": 201907 },
     "headers": ["functional"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_iterator",
+    "values": { "c++20": 201811 },
+    "headers": ["iterator"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_memory",
+    "values": { "c++20": 201811 },
+    "headers": ["memory"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_constexpr_numeric",
     "values": { "c++20": 201911 },
     "headers": ["numeric"],
   }, {
-    "name": "__cpp_lib_constexpr_swap_algorithms",
-    "values": { "c++20": 201806 },
-    "headers": ["algorithm"],
+    "name": "__cpp_lib_constexpr_string",
+    "values": { "c++20": 201907 },
+    "headers": ["string"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_string_view",
+    "values": { "c++20": 201811 },
+    "headers": ["string_view"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_constexpr_tuple",
+    "values": { "c++20": 201811 },
+    "headers": ["tuple"],
     "unimplemented": True,
   }, {
     "name": "__cpp_lib_constexpr_utility",
     "values": { "c++20": 201811 },
     "headers": ["utility"],
+  }, {
+    "name": "__cpp_lib_constexpr_vector",
+    "values": { "c++20": 201907 },
+    "headers": ["vector"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_coroutine",
+    "values": { "c++20": 201902 },
+    "headers": ["coroutine"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_destroying_delete",
     "values": { "c++20": 201806 },
@@ -203,7 +264,7 @@
     "headers": ["utility"],
   }, {
     "name": "__cpp_lib_execution",
-    "values": { "c++17": 201603 },
+    "values": { "c++17": 201603, "c++20": 201902 },
     "headers": ["execution"],
     "unimplemented": True,
   }, {
@@ -245,6 +306,11 @@
     "name": "__cpp_lib_int_pow2",
     "values": { "c++20": 202002 },
     "headers": ["bit"],
+  }, {
+    "name": "__cpp_lib_integer_comparison_functions",
+    "values": { "c++20": 202002 },
+    "headers": ["utility"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_integer_sequence",
     "values": { "c++14": 201304 },
@@ -256,7 +322,7 @@
   }, {
     "name": "__cpp_lib_interpolate",
     "values": { "c++20": 201902 },
-    "headers": ["numeric"],
+    "headers": ["cmath", "numeric"],
   }, {
     "name": "__cpp_lib_invoke",
     "values": { "c++17": 201411 },
@@ -281,14 +347,41 @@
     "name": "__cpp_lib_is_invocable",
     "values": { "c++17": 201703 },
     "headers": ["type_traits"],
+  }, {
+    "name": "__cpp_lib_is_layout_compatible",
+    "values": { "c++20": 201907 },
+    "headers": ["type_traits"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_is_nothrow_convertible",
+    "values": { "c++20": 201806 },
+    "headers": ["type_traits"],
   }, {
     "name": "__cpp_lib_is_null_pointer",
     "values": { "c++14": 201309 },
     "headers": ["type_traits"],
+  }, {
+    "name": "__cpp_lib_is_pointer_interconvertible",
+    "values": { "c++20": 201907 },
+    "headers": ["type_traits"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_is_swappable",
     "values": { "c++17": 201603 },
     "headers": ["type_traits"],
+  }, {
+    "name": "__cpp_lib_jthread",
+    "values": { "c++20": 201911 },
+    "headers": ["stop_token", "thread"],
+    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+    "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_latch",
+    "values": { "c++20": 201907 },
+    "headers": ["latch"],
+    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+    "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
   }, {
     "name": "__cpp_lib_launder",
     "values": { "c++17": 201606 },
@@ -358,6 +451,11 @@
     "values": { "c++17": 201603 },
     "headers": ["algorithm", "numeric"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_polymorphic_allocator",
+    "values": { "c++20": 201902 },
+    "headers": ["memory"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_quoted_string_io",
     "values": { "c++14": 201304 },
@@ -371,6 +469,10 @@
     "name": "__cpp_lib_raw_memory_algorithms",
     "values": { "c++17": 201606 },
     "headers": ["memory"],
+  }, {
+    "name": "__cpp_lib_remove_cvref",
+    "values": { "c++20": 201711 },
+    "headers": ["type_traits"],
   }, {
     "name": "__cpp_lib_result_of_sfinae",
     "values": { "c++14": 201210 },
@@ -387,6 +489,12 @@
     "name": "__cpp_lib_scoped_lock",
     "values": { "c++17": 201703 },
     "headers": ["mutex"],
+  }, {
+    "name": "__cpp_lib_semaphore",
+    "values": { "c++20": 201907 },
+    "headers": ["semaphore"],
+    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+    "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
   }, {
     "name": "__cpp_lib_shared_mutex",
     "values": { "c++17": 201505 },
@@ -407,23 +515,55 @@
     "headers": ["shared_mutex"],
     "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
     "internal_depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
+  }, {
+    "name": "__cpp_lib_shift",
+    "values": { "c++20": 201806 },
+    "headers": ["algorithm"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_smart_ptr_for_overwrite",
+    "values": { "c++20": 202002 },
+    "headers": ["memory"],
+    "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_source_location",
+    "values": { "c++20": 201907 },
+    "headers": ["source_location"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_span",
     "values": { "c++20": 202002 },
     "headers": ["span"],
+  }, {
+    "name": "__cpp_lib_ssize",
+    "values": { "c++20": 201902 },
+    "headers": ["iterator"],
+  }, {
+    "name": "__cpp_lib_starts_ends_with",
+    "values": { "c++20": 201711 },
+    "headers": ["string", "string_view"],
   }, {
     "name": "__cpp_lib_string_udls",
     "values": { "c++14": 201304 },
     "headers": ["string"],
   }, {
     "name": "__cpp_lib_string_view",
-    "values": { "c++17": 201606 },
+    "values": { "c++17": 201606, "c++20": 201803 },
     "headers": ["string", "string_view"],
+  }, {
+    "name": "__cpp_lib_syncbuf",
+    "values": { "c++20": 201803 },
+    "headers": ["syncstream"],
+    "unimplemented": True,
   }, {
     "name": "__cpp_lib_three_way_comparison",
-    "values": { "c++20": 201711 },
+    "values": { "c++20": 201907 },
     "headers": ["compare"],
     "unimplemented": True,
+  }, {
+    "name": "__cpp_lib_to_address",
+    "values": { "c++20": 201711 },
+    "headers": ["memory"],
   }, {
     "name": "__cpp_lib_to_array",
     "values": { "c++20": 201907 },
@@ -440,7 +580,7 @@
   }, {
     "name": "__cpp_lib_transparent_operators",
     "values": { "c++14": 201210, "c++17": 201510 },
-    "headers": ["functional"],
+    "headers": ["functional", "memory"],
   }, {
     "name": "__cpp_lib_tuple_element_t",
     "values": { "c++14": 201402 },
@@ -461,6 +601,10 @@
     "name": "__cpp_lib_unordered_map_try_emplace",
     "values": { "c++17": 201411 },
     "headers": ["unordered_map"],
+  }, {
+    "name": "__cpp_lib_unwrap_ref",
+    "values": { "c++20": 201811 },
+    "headers": ["functional"],
   }, {
     "name": "__cpp_lib_variant",
     "values": { "c++17": 201606 },
@@ -483,13 +627,16 @@
 # <thread> is a hard error in that case.
 lit_markup = {
   "atomic": ["UNSUPPORTED: libcpp-has-no-threads"],
-  "shared_mutex": ["UNSUPPORTED: libcpp-has-no-threads"],
-  "thread": ["UNSUPPORTED: libcpp-has-no-threads"],
+  "barrier": ["UNSUPPORTED: libcpp-has-no-threads"],
   "iomanip": ["UNSUPPORTED: libcpp-has-no-localization"],
   "istream": ["UNSUPPORTED: libcpp-has-no-localization"],
+  "latch": ["UNSUPPORTED: libcpp-has-no-threads"],
   "locale": ["UNSUPPORTED: libcpp-has-no-localization"],
   "ostream": ["UNSUPPORTED: libcpp-has-no-localization"],
   "regex": ["UNSUPPORTED: libcpp-has-no-localization"],
+  "semaphore": ["UNSUPPORTED: libcpp-has-no-threads"],
+  "shared_mutex": ["UNSUPPORTED: libcpp-has-no-threads"],
+  "thread": ["UNSUPPORTED: libcpp-has-no-threads"],
 }
 
 def get_std_dialects():