[Lldb-commits] [libcxx] [lldb] [llvm] [lldb][CMake] Add single target that runs libc++ tests (PR #110856)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Wed Oct 2 11:41:48 PDT 2024
https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/110856
>From ee28f91822ca449b7b4bb84293cae2aee6803da4 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Wed, 2 Oct 2024 15:44:28 +0100
Subject: [PATCH 1/3] [lldb][CMake] Add single target that runs libc++ tests
---
lldb/test/CMakeLists.txt | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/lldb/test/CMakeLists.txt b/lldb/test/CMakeLists.txt
index 5ac474736eb63d..656f9a1727b316 100644
--- a/lldb/test/CMakeLists.txt
+++ b/lldb/test/CMakeLists.txt
@@ -267,6 +267,21 @@ add_lit_testsuite(check-lldb "Running lldb lit test suite"
lldb-shell-test-deps
lldb-unit-test-deps)
+# This target covers all targets that are tied to implementation details
+# of libc++, intended to be run by the libc++ pre-merge CI.
+add_lit_testsuite(check-lldb-libcxx-integration "Running lldb libc++ support test suite"
+ ${CMAKE_CURRENT_BINARY_DIR}
+ EXCLUDE_FROM_CHECK_ALL
+ DEPENDS
+ check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx
+ check-lldb-api-functionalities-data-formatter-data-formatter-stl-generic
+ check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx-simulators
+ check-lldb-api-commands-expression-import-std-module
+ check-lldb-api-lang-cpp-std-function-step-into-callable
+ check-lldb-api-lang-cpp-std-function-recognizer
+ check-lldb-api-lang-cpp-std-invoke-recognizer
+)
+
if(LLDB_BUILT_STANDALONE)
# This has to happen *AFTER* add_lit_testsuite.
if (EXISTS ${LLVM_MAIN_SRC_DIR}/utils/llvm-lit)
>From 8527773d0db142d0e6eb69de6264938cc9cb3293 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Wed, 2 Oct 2024 16:52:37 +0100
Subject: [PATCH 2/3] Revert "Revert "[libc++] LWG3870: Remove `voidify`
(#110355)" (#110587)"
This reverts commit f3d58f4161b86a479f68acb453e9622911c688a0.
---
libcxx/docs/Status/Cxx23Issues.csv | 2 +-
libcxx/include/CMakeLists.txt | 1 -
libcxx/include/__memory/construct_at.h | 5 ++-
libcxx/include/__memory/shared_ptr.h | 14 ++++----
.../__memory/uninitialized_algorithms.h | 21 ++++++------
libcxx/include/__memory/voidify.h | 30 -----------------
libcxx/include/module.modulemap | 1 -
libcxx/include/optional | 6 ++--
.../construct_at.pass.cpp | 15 ---------
.../ranges_construct_at.pass.cpp | 10 ------
...s_uninitialized_default_construct.pass.cpp | 25 --------------
...uninitialized_default_construct_n.pass.cpp | 12 -------
...ges_uninitialized_value_construct.pass.cpp | 25 --------------
...s_uninitialized_value_construct_n.pass.cpp | 12 -------
.../ranges_uninitialized_copy.pass.cpp | 33 -------------------
.../ranges_uninitialized_copy_n.pass.cpp | 16 ---------
.../ranges_uninitialized_fill_n.pass.cpp | 14 --------
.../ranges_uninitialized_fill.pass.cpp | 29 ----------------
.../ranges_uninitialized_move.pass.cpp | 33 -------------------
.../ranges_uninitialized_move_n.pass.cpp | 16 ---------
.../gn/secondary/libcxx/include/BUILD.gn | 1 -
21 files changed, 24 insertions(+), 297 deletions(-)
delete mode 100644 libcxx/include/__memory/voidify.h
diff --git a/libcxx/docs/Status/Cxx23Issues.csv b/libcxx/docs/Status/Cxx23Issues.csv
index 1c8bb057b09660..63e4176ecba1d7 100644
--- a/libcxx/docs/Status/Cxx23Issues.csv
+++ b/libcxx/docs/Status/Cxx23Issues.csv
@@ -296,7 +296,7 @@
"`LWG3862 <https://wg21.link/LWG3862>`__","``basic_const_iterator``'s ``common_type`` specialization is underconstrained","2023-02 (Issaquah)","","",""
"`LWG3865 <https://wg21.link/LWG3865>`__","Sorting a range of ``pairs``","2023-02 (Issaquah)","|Complete|","17.0",""
"`LWG3869 <https://wg21.link/LWG3869>`__","Deprecate ``std::errc`` constants related to UNIX STREAMS","2023-02 (Issaquah)","|Complete|","19.0",""
-"`LWG3870 <https://wg21.link/LWG3870>`__","Remove ``voidify``","2023-02 (Issaquah)","","",""
+"`LWG3870 <https://wg21.link/LWG3870>`__","Remove ``voidify``","2023-02 (Issaquah)","|Complete|","20.0",""
"`LWG3871 <https://wg21.link/LWG3871>`__","Adjust note about ``terminate``","2023-02 (Issaquah)","","",""
"`LWG3872 <https://wg21.link/LWG3872>`__","``basic_const_iterator`` should have custom ``iter_move``","2023-02 (Issaquah)","","",""
"`LWG3875 <https://wg21.link/LWG3875>`__","``std::ranges::repeat_view<T, IntegerClass>::iterator`` may be ill-formed","2023-02 (Issaquah)","|Complete|","17.0",""
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 8a63280053340f..9bd1b41b8bfac4 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -560,7 +560,6 @@ set(files
__memory/unique_temporary_buffer.h
__memory/uses_allocator.h
__memory/uses_allocator_construction.h
- __memory/voidify.h
__memory_resource/memory_resource.h
__memory_resource/monotonic_buffer_resource.h
__memory_resource/polymorphic_allocator.h
diff --git a/libcxx/include/__memory/construct_at.h b/libcxx/include/__memory/construct_at.h
index eb021324800644..d8c97467f54b9f 100644
--- a/libcxx/include/__memory/construct_at.h
+++ b/libcxx/include/__memory/construct_at.h
@@ -14,7 +14,6 @@
#include <__config>
#include <__iterator/access.h>
#include <__memory/addressof.h>
-#include <__memory/voidify.h>
#include <__type_traits/enable_if.h>
#include <__type_traits/is_array.h>
#include <__utility/declval.h>
@@ -38,7 +37,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
template <class _Tp, class... _Args, class = decltype(::new(std::declval<void*>()) _Tp(std::declval<_Args>()...))>
_LIBCPP_HIDE_FROM_ABI constexpr _Tp* construct_at(_Tp* __location, _Args&&... __args) {
_LIBCPP_ASSERT_NON_NULL(__location != nullptr, "null pointer given to construct_at");
- return ::new (std::__voidify(*__location)) _Tp(std::forward<_Args>(__args)...);
+ return ::new (static_cast<void*>(__location)) _Tp(std::forward<_Args>(__args)...);
}
#endif
@@ -49,7 +48,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp* __construct_at(_Tp* __l
return std::construct_at(__location, std::forward<_Args>(__args)...);
#else
return _LIBCPP_ASSERT_NON_NULL(__location != nullptr, "null pointer given to construct_at"),
- ::new (std::__voidify(*__location)) _Tp(std::forward<_Args>(__args)...);
+ ::new (static_cast<void*>(__location)) _Tp(std::forward<_Args>(__args)...);
#endif
}
diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h
index 70964e6122d5a6..20c1b69f45ae66 100644
--- a/libcxx/include/__memory/shared_ptr.h
+++ b/libcxx/include/__memory/shared_ptr.h
@@ -248,33 +248,35 @@ struct __for_overwrite_tag {};
template <class _Tp, class _Alloc>
struct __shared_ptr_emplace : __shared_weak_count {
+ using __value_type = __remove_cv_t<_Tp>;
+
template <class... _Args,
class _Allocator = _Alloc,
__enable_if_t<is_same<typename _Allocator::value_type, __for_overwrite_tag>::value, int> = 0>
_LIBCPP_HIDE_FROM_ABI explicit __shared_ptr_emplace(_Alloc __a, _Args&&...) : __storage_(std::move(__a)) {
static_assert(
sizeof...(_Args) == 0, "No argument should be provided to the control block when using _for_overwrite");
- ::new ((void*)__get_elem()) _Tp;
+ ::new (static_cast<void*>(__get_elem())) __value_type;
}
template <class... _Args,
class _Allocator = _Alloc,
__enable_if_t<!is_same<typename _Allocator::value_type, __for_overwrite_tag>::value, int> = 0>
_LIBCPP_HIDE_FROM_ABI explicit __shared_ptr_emplace(_Alloc __a, _Args&&... __args) : __storage_(std::move(__a)) {
- using _TpAlloc = typename __allocator_traits_rebind<_Alloc, __remove_cv_t<_Tp> >::type;
+ using _TpAlloc = typename __allocator_traits_rebind<_Alloc, __value_type>::type;
_TpAlloc __tmp(*__get_alloc());
allocator_traits<_TpAlloc>::construct(__tmp, __get_elem(), std::forward<_Args>(__args)...);
}
_LIBCPP_HIDE_FROM_ABI _Alloc* __get_alloc() _NOEXCEPT { return __storage_.__get_alloc(); }
- _LIBCPP_HIDE_FROM_ABI _Tp* __get_elem() _NOEXCEPT { return __storage_.__get_elem(); }
+ _LIBCPP_HIDE_FROM_ABI __value_type* __get_elem() _NOEXCEPT { return __storage_.__get_elem(); }
private:
template <class _Allocator = _Alloc,
__enable_if_t<is_same<typename _Allocator::value_type, __for_overwrite_tag>::value, int> = 0>
_LIBCPP_HIDE_FROM_ABI void __on_zero_shared_impl() _NOEXCEPT {
- __get_elem()->~_Tp();
+ __get_elem()->~__value_type();
}
template <class _Allocator = _Alloc,
@@ -300,7 +302,7 @@ struct __shared_ptr_emplace : __shared_weak_count {
// through `std::allocate_shared` and `std::make_shared`.
struct _Storage {
struct _Data {
- _LIBCPP_COMPRESSED_PAIR(_Alloc, __alloc_, _Tp, __elem_);
+ _LIBCPP_COMPRESSED_PAIR(_Alloc, __alloc_, __value_type, __elem_);
};
_ALIGNAS_TYPE(_Data) char __buffer_[sizeof(_Data)];
@@ -312,7 +314,7 @@ struct __shared_ptr_emplace : __shared_weak_count {
return std::addressof(reinterpret_cast<_Data*>(__buffer_)->__alloc_);
}
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI _Tp* __get_elem() _NOEXCEPT {
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI __value_type* __get_elem() _NOEXCEPT {
return std::addressof(reinterpret_cast<_Data*>(__buffer_)->__elem_);
}
};
diff --git a/libcxx/include/__memory/uninitialized_algorithms.h b/libcxx/include/__memory/uninitialized_algorithms.h
index 8ff87e28b3bb51..dd72f3c10cf15a 100644
--- a/libcxx/include/__memory/uninitialized_algorithms.h
+++ b/libcxx/include/__memory/uninitialized_algorithms.h
@@ -21,7 +21,6 @@
#include <__memory/allocator_traits.h>
#include <__memory/construct_at.h>
#include <__memory/pointer_traits.h>
-#include <__memory/voidify.h>
#include <__type_traits/enable_if.h>
#include <__type_traits/extent.h>
#include <__type_traits/is_array.h>
@@ -64,7 +63,7 @@ inline _LIBCPP_HIDE_FROM_ABI pair<_InputIterator, _ForwardIterator> __uninitiali
try {
#endif
for (; __ifirst != __ilast && !__stop_copying(__idx); ++__ifirst, (void)++__idx)
- ::new (std::__voidify(*__idx)) _ValueType(*__ifirst);
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(*__ifirst);
#ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__ofirst, __idx);
@@ -94,7 +93,7 @@ __uninitialized_copy_n(_InputIterator __ifirst, _Size __n, _ForwardIterator __of
try {
#endif
for (; __n > 0 && !__stop_copying(__idx); ++__ifirst, (void)++__idx, (void)--__n)
- ::new (std::__voidify(*__idx)) _ValueType(*__ifirst);
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(*__ifirst);
#ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__ofirst, __idx);
@@ -124,7 +123,7 @@ __uninitialized_fill(_ForwardIterator __first, _Sentinel __last, const _Tp& __x)
try {
#endif
for (; __idx != __last; ++__idx)
- ::new (std::__voidify(*__idx)) _ValueType(__x);
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(__x);
#ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -152,7 +151,7 @@ __uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) {
try {
#endif
for (; __n > 0; ++__idx, (void)--__n)
- ::new (std::__voidify(*__idx)) _ValueType(__x);
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(__x);
#ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -182,7 +181,7 @@ __uninitialized_default_construct(_ForwardIterator __first, _Sentinel __last) {
try {
# endif
for (; __idx != __last; ++__idx)
- ::new (std::__voidify(*__idx)) _ValueType;
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType;
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -208,7 +207,7 @@ inline _LIBCPP_HIDE_FROM_ABI _ForwardIterator __uninitialized_default_construct_
try {
# endif
for (; __n > 0; ++__idx, (void)--__n)
- ::new (std::__voidify(*__idx)) _ValueType;
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType;
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -235,7 +234,7 @@ __uninitialized_value_construct(_ForwardIterator __first, _Sentinel __last) {
try {
# endif
for (; __idx != __last; ++__idx)
- ::new (std::__voidify(*__idx)) _ValueType();
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType();
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -261,7 +260,7 @@ inline _LIBCPP_HIDE_FROM_ABI _ForwardIterator __uninitialized_value_construct_n(
try {
# endif
for (; __n > 0; ++__idx, (void)--__n)
- ::new (std::__voidify(*__idx)) _ValueType();
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType();
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__first, __idx);
@@ -297,7 +296,7 @@ inline _LIBCPP_HIDE_FROM_ABI pair<_InputIterator, _ForwardIterator> __uninitiali
try {
# endif
for (; __ifirst != __ilast && !__stop_moving(__idx); ++__idx, (void)++__ifirst) {
- ::new (std::__voidify(*__idx)) _ValueType(__iter_move(__ifirst));
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(__iter_move(__ifirst));
}
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
@@ -335,7 +334,7 @@ inline _LIBCPP_HIDE_FROM_ABI pair<_InputIterator, _ForwardIterator> __uninitiali
try {
# endif
for (; __n > 0 && !__stop_moving(__idx); ++__idx, (void)++__ifirst, --__n)
- ::new (std::__voidify(*__idx)) _ValueType(__iter_move(__ifirst));
+ ::new (static_cast<void*>(std::addressof(*__idx))) _ValueType(__iter_move(__ifirst));
# ifndef _LIBCPP_HAS_NO_EXCEPTIONS
} catch (...) {
std::__destroy(__ofirst, __idx);
diff --git a/libcxx/include/__memory/voidify.h b/libcxx/include/__memory/voidify.h
deleted file mode 100644
index dbd083bd8c1e9a..00000000000000
--- a/libcxx/include/__memory/voidify.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// -*- C++ -*-
-//===----------------------------------------------------------------------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP___MEMORY_VOIDIFY_H
-#define _LIBCPP___MEMORY_VOIDIFY_H
-
-#include <__config>
-#include <__memory/addressof.h>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-# pragma GCC system_header
-#endif
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-template <typename _Tp>
-_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void* __voidify(_Tp& __from) {
- // Cast away cv-qualifiers to allow modifying elements of a range through const iterators.
- return const_cast<void*>(static_cast<const volatile void*>(std::addressof(__from)));
-}
-
-_LIBCPP_END_NAMESPACE_STD
-
-#endif // _LIBCPP___MEMORY_VOIDIFY_H
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 881c0ca6c3669c..dee9b0b88b7948 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -1528,7 +1528,6 @@ module std [system] {
}
module uses_allocator { header "__memory/uses_allocator.h" }
module uses_allocator_construction { header "__memory/uses_allocator_construction.h" }
- module voidify { header "__memory/voidify.h" }
header "memory"
export *
diff --git a/libcxx/include/optional b/libcxx/include/optional
index 7578833685ec1f..4e44ef990f5d29 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -287,7 +287,7 @@ struct __optional_destruct_base<_Tp, false> {
static_assert(is_object_v<value_type>, "instantiation of optional with a non-object type is undefined behavior");
union {
char __null_state_;
- value_type __val_;
+ remove_cv_t<value_type> __val_;
};
bool __engaged_;
@@ -323,7 +323,7 @@ struct __optional_destruct_base<_Tp, true> {
static_assert(is_object_v<value_type>, "instantiation of optional with a non-object type is undefined behavior");
union {
char __null_state_;
- value_type __val_;
+ remove_cv_t<value_type> __val_;
};
bool __engaged_;
@@ -377,7 +377,7 @@ struct __optional_storage_base : __optional_destruct_base<_Tp> {
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __assign_from(_That&& __opt) {
if (this->__engaged_ == __opt.has_value()) {
if (this->__engaged_)
- this->__val_ = std::forward<_That>(__opt).__get();
+ static_cast<_Tp&>(this->__val_) = std::forward<_That>(__opt).__get();
} else {
if (this->__engaged_)
this->reset();
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp
index 13442df9db3ae5..272441ebedc2f2 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp
@@ -80,21 +80,6 @@ constexpr bool test()
a.deallocate(p, 2);
}
- {
- std::allocator<Counted> a;
- Counted const* p = a.allocate(2);
- int count = 0;
- std::construct_at(p, count);
- assert(count == 1);
- std::construct_at(p+1, count);
- assert(count == 2);
- (p+1)->~Counted();
- assert(count == 1);
- p->~Counted();
- assert(count == 0);
- a.deallocate(const_cast<Counted*>(p), 2);
- }
-
return true;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/ranges_construct_at.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/ranges_construct_at.pass.cpp
index 396fed7cc3e49d..f66bf0fd647778 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/ranges_construct_at.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.construct/ranges_construct_at.pass.cpp
@@ -99,16 +99,6 @@ constexpr bool test() {
alloc.deallocate(out, 2);
}
- // Works with const pointers.
- {
- int x = 1;
- const int* ptr = &x;
-
- const int* result = std::ranges::construct_at(ptr, 42);
- assert(result == ptr);
- assert(x == 42);
- }
-
return true;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp
index 4581f1c909e381..ef969190c63148 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp
@@ -163,30 +163,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators, (iter, sentinel) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_default_construct(buf.cbegin(), buf.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
- // Works with const iterators, (range) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
- auto range = std::ranges::subrange(buf.cbegin(), buf.cend());
-
- std::ranges::uninitialized_default_construct(range);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
index 9bebe4b52a8cc9..40fbf226959098 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
@@ -75,17 +75,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_default_construct_n(buf.cbegin(), N);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct.pass.cpp
index ad74b82dce1f2b..6bab25ca38475b 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct.pass.cpp
@@ -183,30 +183,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators, (iter, sentinel) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_value_construct(buf.cbegin(), buf.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
- // Works with const iterators, (range) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- auto range = std::ranges::subrange(buf.cbegin(), buf.cend());
- std::ranges::uninitialized_value_construct(range);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
index 8f315ce0076d41..4742aefcdb5ada 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.value/ranges_uninitialized_value_construct_n.pass.cpp
@@ -94,17 +94,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_value_construct_n(buf.cbegin(), N);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp
index 92dc380728e242..52ba70b009baba 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy.pass.cpp
@@ -278,39 +278,6 @@ int main(int, char**) {
Counted::reset();
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators, (iter, sentinel) overload.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::uninitialized_copy(in, in + N, out.cbegin(), out.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
- // Works with const iterators, (range) overload.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::subrange out_range(out.cbegin(), out.cend());
- std::ranges::uninitialized_copy(in, out_range);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
// Conversions, (iter, sentinel) overload.
{
constexpr int N = 3;
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp
index 80082eb3b98e6f..84fba1aa792932 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/ranges_uninitialized_copy_n.pass.cpp
@@ -104,22 +104,6 @@ int main(int, char**) {
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::uninitialized_copy_n(in, N, out.cbegin(), out.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
// Conversions.
{
constexpr int N = 3;
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/ranges_uninitialized_fill_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/ranges_uninitialized_fill_n.pass.cpp
index 0e8846e8c7c8ff..0b35c1114d87c5 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/ranges_uninitialized_fill_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/ranges_uninitialized_fill_n.pass.cpp
@@ -101,19 +101,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_fill_n(buf.cbegin(), N, x);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::all_of(buf.begin(), buf.end(), pred));
-
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/ranges_uninitialized_fill.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/ranges_uninitialized_fill.pass.cpp
index 482515ec9483dd..6f75fc13a1c397 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/ranges_uninitialized_fill.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/ranges_uninitialized_fill.pass.cpp
@@ -198,34 +198,5 @@ int main(int, char**) {
}
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators, (iter, sentinel) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- std::ranges::uninitialized_fill(buf.cbegin(), buf.cend(), x);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::all_of(buf.begin(), buf.end(), pred));
-
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
- // Works with const iterators, (range) overload.
- {
- constexpr int N = 5;
- Buffer<Counted, N> buf;
-
- auto range = std::ranges::subrange(buf.cbegin(), buf.cend());
- std::ranges::uninitialized_fill(range, x);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::all_of(buf.begin(), buf.end(), pred));
-
- std::destroy(buf.begin(), buf.end());
- Counted::reset();
- }
-
return 0;
}
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp
index 56dd25c66e1994..c6b38b4fea8644 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move.pass.cpp
@@ -282,39 +282,6 @@ int main(int, char**) {
Counted::reset();
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators, (iter, sentinel) overload.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::uninitialized_move(in, in + N, out.cbegin(), out.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
- // Works with const iterators, (range) overload.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::subrange out_range (out.cbegin(), out.cend());
- std::ranges::uninitialized_move(in, out_range);
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
// Conversions, (iter, sentinel) overload.
{
constexpr int N = 3;
diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp
index 162b4a48537ff3..cac2acc5932b33 100644
--- a/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp
+++ b/libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.move/ranges_uninitialized_move_n.pass.cpp
@@ -105,22 +105,6 @@ int main(int, char**) {
#endif // TEST_HAS_NO_EXCEPTIONS
- // Works with const iterators.
- {
- constexpr int N = 5;
- Counted in[N] = {Counted(1), Counted(2), Counted(3), Counted(4), Counted(5)};
- Buffer<Counted, N> out;
- Counted::reset();
-
- std::ranges::uninitialized_move_n(in, N, out.cbegin(), out.cend());
- assert(Counted::current_objects == N);
- assert(Counted::total_objects == N);
- assert(std::equal(in, in + N, out.begin(), out.end()));
-
- std::destroy(out.begin(), out.end());
- }
- Counted::reset();
-
// Conversions.
{
constexpr int N = 3;
diff --git a/llvm/utils/gn/secondary/libcxx/include/BUILD.gn b/llvm/utils/gn/secondary/libcxx/include/BUILD.gn
index 3e165c3d6f634e..d850a7f20952d9 100644
--- a/llvm/utils/gn/secondary/libcxx/include/BUILD.gn
+++ b/llvm/utils/gn/secondary/libcxx/include/BUILD.gn
@@ -632,7 +632,6 @@ if (current_toolchain == default_toolchain) {
"__memory/unique_temporary_buffer.h",
"__memory/uses_allocator.h",
"__memory/uses_allocator_construction.h",
- "__memory/voidify.h",
"__memory_resource/memory_resource.h",
"__memory_resource/monotonic_buffer_resource.h",
"__memory_resource/polymorphic_allocator.h",
>From c296f0694ff237f0ac7206c60ca02561f91d4c6d Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Wed, 2 Oct 2024 19:41:35 +0100
Subject: [PATCH 3/3] fixup! adjust the libc++ pre-merge CI to run the new
target
---
libcxx/utils/ci/run-buildbot | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 229963b38f52b3..5fb1a31995f7ce 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -371,13 +371,7 @@ bootstrapping-build)
-DLLVM_LIT_ARGS="-sv --xunit-xml-output test-results.xml --timeout=1500 --time-tests"
echo "+++ Running the LLDB libc++ data formatter tests"
- ${NINJA} -vC "${BUILD_DIR}" check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx \
- check-lldb-api-functionalities-data-formatter-data-formatter-stl-generic \
- check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx-simulators \
- check-lldb-api-commands-expression-import-std-module \
- check-lldb-api-lang-cpp-std-function-step-into-callable \
- check-lldb-api-lang-cpp-std-function-recognizer \
- check-lldb-api-lang-cpp-std-invoke-recognizer
+ ${NINJA} -vC "${BUILD_DIR}" check-lldb-libcxx-integration
echo "--- Running the libc++ and libc++abi tests"
More information about the lldb-commits
mailing list