ldionne updated this revision to Diff 442378.
ldionne marked 2 inline comments as done.
ldionne added a comment.
Address review comments and try to fix some CI issues
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128927/new/
https://reviews.llvm.org/D128927
Files:
clang/cmake/caches/Fuchsia-stage2.cmake
clang/cmake/caches/Fuchsia.cmake
compiler-rt/cmake/Modules/AddCompilerRT.cmake
libcxx/CMakeLists.txt
libcxx/appveyor.yml
libcxx/cmake/caches/AIX.cmake
libcxx/cmake/caches/Apple.cmake
libcxx/cmake/caches/Generic-no-experimental.cmake
libcxx/cmake/caches/MinGW.cmake
libcxx/docs/BuildingLibcxx.rst
libcxx/docs/ReleaseNotes.rst
libcxx/docs/UsingLibcxx.rst
libcxx/src/CMakeLists.txt
libcxx/test/CMakeLists.txt
libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp
libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp
libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp
libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp
libcxx/utils/ci/run-buildbot
libcxx/utils/libcxx/test/params.py
Index: libcxx/utils/libcxx/test/params.py
===================================================================
--- libcxx/utils/libcxx/test/params.py
+++ libcxx/utils/libcxx/test/params.py
@@ -62,6 +62,13 @@
return '-std='+fallbacks[std]
return None
+# TODO: Remove this once all the compilers we support understand `-funstable`
+def getUnstableFlag(cfg):
+ if hasCompileFlag(cfg, '-funstable'):
+ return '-funstable -lc++experimental' # TODO: Remove this once Clang's -funstable flag implies -lc++experimental
+ else:
+ return '-D_LIBCPP_ENABLE_EXPERIMENTAL -lc++experimental'
+
DEFAULT_PARAMETERS = [
Parameter(name='target_triple', type=str,
help="The target triple to compile the test suite for. This must be "
@@ -156,15 +163,10 @@
])),
Parameter(name='enable_experimental', choices=[True, False], type=bool, default=True,
- help="Whether to enable tests for experimental C++ libraries (typically Library Fundamentals TSes).",
+ help="Whether to enable tests for experimental C++ Library features.",
actions=lambda experimental: [] if not experimental else [
+ AddCompileFlag(getUnstableFlag),
AddFeature('c++experimental'),
- # When linking in MSVC mode via the Clang driver, a -l<foo>
- # maps to <foo>.lib, so we need to use -llibc++experimental here
- # to make it link against the static libc++experimental.lib.
- # We can't check for the feature 'msvc' in available_features
- # as those features are added after processing parameters.
- PrependLinkFlag(lambda config: '-llibc++experimental' if _isMSVC(config) else '-lc++experimental')
]),
Parameter(name='long_tests', choices=[True, False], type=bool, default=True,
Index: libcxx/utils/ci/run-buildbot
===================================================================
--- libcxx/utils/ci/run-buildbot
+++ libcxx/utils/ci/run-buildbot
@@ -517,13 +517,7 @@
;;
clang-cl-dll)
clean
- # TODO: Currently, building with the experimental library breaks running
- # tests (the test linking look for the c++experimental library with the
- # wrong name, and the statically linked c++experimental can't be linked
- # correctly when libc++ visibility attributes indicate dllimport linkage
- # anyway), thus just disable the experimental library. Remove this
- # setting when cmake and the test driver does the right thing automatically.
- generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
+ generate-cmake-libcxx-win
echo "+++ Running the libc++ tests"
${NINJA} -vC "${BUILD_DIR}" check-cxx
;;
Index: libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// memory_resource * null_memory_resource()
Index: libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// memory_resource * new_delete_resource()
Index: libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
//-----------------------------------------------------------------------------
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/vector>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/unordered_set>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/unordered_map>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/string>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/set>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp
@@ -9,6 +9,11 @@
// UNSUPPORTED: c++03
// UNSUPPORTED: no-localization
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/regex>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/map>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/list>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/forward_list>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/deque>
// namespace std { namespace experimental { namespace pmr {
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator;
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator;
Index: libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp
===================================================================
--- libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp
+++ libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// template <class T> class polymorphic_allocator
Index: libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp
===================================================================
--- libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp
+++ libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// memory_resource * new_delete_resource()
Index: libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp
===================================================================
--- libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp
+++ libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp
@@ -8,6 +8,11 @@
// UNSUPPORTED: c++03
+// Aligned allocation is required by std::experimental::pmr, but it was not provided
+// before macosx10.14 and as a result we get linker errors when deploying to older than
+// macosx10.14.
+// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
+
// <experimental/memory_resource>
// memory_resource * new_delete_resource()
Index: libcxx/test/CMakeLists.txt
===================================================================
--- libcxx/test/CMakeLists.txt
+++ libcxx/test/CMakeLists.txt
@@ -93,10 +93,6 @@
serialize_lit_param(enable_exceptions False)
endif()
-if (NOT LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
- serialize_lit_param(enable_experimental False)
-endif()
-
if (NOT LIBCXX_ENABLE_RTTI)
serialize_lit_param(enable_rtti False)
endif()
Index: libcxx/src/CMakeLists.txt
===================================================================
--- libcxx/src/CMakeLists.txt
+++ libcxx/src/CMakeLists.txt
@@ -315,25 +315,23 @@
# Add a meta-target for both libraries.
add_custom_target(cxx DEPENDS ${LIBCXX_BUILD_TARGETS})
-if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
- set(LIBCXX_EXPERIMENTAL_SOURCES
- experimental/memory_resource.cpp
- )
- add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES})
- if (LIBCXX_ENABLE_SHARED)
- target_link_libraries(cxx_experimental PRIVATE cxx_shared)
- else()
- target_link_libraries(cxx_experimental PRIVATE cxx_static)
- endif()
-
- set_target_properties(cxx_experimental
- PROPERTIES
- COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}"
- OUTPUT_NAME "c++experimental"
+set(LIBCXX_EXPERIMENTAL_SOURCES
+ experimental/memory_resource.cpp
)
- cxx_add_common_build_flags(cxx_experimental)
+add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES})
+if (LIBCXX_ENABLE_SHARED)
+ target_link_libraries(cxx_experimental PRIVATE cxx_shared)
+else()
+ target_link_libraries(cxx_experimental PRIVATE cxx_static)
endif()
+set_target_properties(cxx_experimental
+ PROPERTIES
+ COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}"
+ OUTPUT_NAME "c++experimental"
+)
+cxx_add_common_build_flags(cxx_experimental)
+
if (LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY)
set(LIBCXX_EXTERNAL_THREADING_SUPPORT_SOURCES
@@ -369,7 +367,7 @@
RUNTIME DESTINATION ${LIBCXX_INSTALL_RUNTIME_DIR} COMPONENT cxx)
endif()
-if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY)
+if (LIBCXX_INSTALL_LIBRARY)
install(TARGETS cxx_experimental
LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
@@ -386,10 +384,7 @@
if (NOT CMAKE_CONFIGURATION_TYPES)
if(LIBCXX_INSTALL_LIBRARY)
- set(lib_install_target cxx)
- endif()
- if (LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY)
- set(experimental_lib_install_target cxx_experimental)
+ set(lib_install_target "cxx;cxx_experimental")
endif()
if(LIBCXX_INSTALL_HEADERS)
set(header_install_target install-cxx-headers)
@@ -399,7 +394,7 @@
endif()
add_custom_target(install-cxx
DEPENDS ${lib_install_target}
- ${experimental_lib_install_target}
+ cxx_experimental
${header_install_target}
${pstl_install_target}
COMMAND "${CMAKE_COMMAND}"
@@ -407,7 +402,7 @@
-P "${LIBCXX_BINARY_DIR}/cmake_install.cmake")
add_custom_target(install-cxx-stripped
DEPENDS ${lib_install_target}
- ${experimental_lib_install_target}
+ cxx_experimental
${header_install_target}
${pstl_install_target}
COMMAND "${CMAKE_COMMAND}"
Index: libcxx/docs/UsingLibcxx.rst
===================================================================
--- libcxx/docs/UsingLibcxx.rst
+++ libcxx/docs/UsingLibcxx.rst
@@ -34,22 +34,18 @@
library until the standard has been ratified.
-Using libc++experimental and ``<experimental/...>``
-===================================================
+Enabling experimental C++ Library features
+==========================================
-Libc++ provides implementations of experimental technical specifications
-in a separate library, ``libc++experimental.a``. Users of ``<experimental/...>``
-headers may be required to link ``-lc++experimental``. Note that not all
-vendors ship ``libc++experimental.a``, and as a result, you may not be
-able to use those experimental features.
-
-.. code-block:: bash
-
- $ clang++ test.cpp -lc++experimental
+Libc++ provides implementations of some experimental features. Experimental features
+are either Technical Specifications (TSes) or official features that were voted to
+the Standard but whose implementation is not complete or stable yet in libc++. Those
+are disabled by default because they are neither API nor ABI stable. However, the
+Clang flag ``-funstable`` can be used to turn those features on.
.. warning::
Experimental libraries are Experimental.
- * The contents of the ``<experimental/...>`` headers and ``libc++experimental.a``
+ * The contents of the ``<experimental/...>`` headers and the associated static
library will not remain compatible between versions.
* No guarantees of API or ABI stability are provided.
* When the standardized version of an experimental feature is implemented,
Index: libcxx/docs/ReleaseNotes.rst
===================================================================
--- libcxx/docs/ReleaseNotes.rst
+++ libcxx/docs/ReleaseNotes.rst
@@ -224,3 +224,8 @@
means that the same set of installed headers works for both DLL and static
linkage. This means that distributors finally can build both library
versions with a single CMake invocation.
+
+- The ``c++experimental.a`` library is now always built and included alongside the usual
+ libc++ library. Users must pass the ``-funstable`` compiler flag in order to use the
+ experimental features provided by it. Note that vendors are encouraged to ship the
+ experimental library now that the compiler provides an ergonomic way to use it.
Index: libcxx/docs/BuildingLibcxx.rst
===================================================================
--- libcxx/docs/BuildingLibcxx.rst
+++ libcxx/docs/BuildingLibcxx.rst
@@ -99,8 +99,7 @@
-T "ClangCL" ^
-DLLVM_ENABLE_RUNTIMES=libcxx ^
-DLIBCXX_ENABLE_SHARED=YES ^
- -DLIBCXX_ENABLE_STATIC=NO ^
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO
+ -DLIBCXX_ENABLE_STATIC=NO
> cmake --build build
CMake + ninja (MSVC)
@@ -131,8 +130,7 @@
> cmake -G Ninja -S runtimes -B build ^
-DCMAKE_C_COMPILER=clang-cl ^
-DCMAKE_CXX_COMPILER=clang-cl ^
- -DLLVM_ENABLE_RUNTIMES=libcxx ^
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO
+ -DLLVM_ENABLE_RUNTIMES=libcxx
> ninja -C build cxx
> ninja -C build check-cxx
@@ -298,23 +296,6 @@
Path where target-specific libc++ headers should be installed. If a relative
path, relative to ``CMAKE_INSTALL_PREFIX``.
-.. _libc++experimental options:
-
-libc++experimental Specific Options
-------------------------------------
-
-.. option:: LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL
-
- **Default**: ``ON``
-
- Build and test libc++experimental.a.
-
-.. option:: LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY:BOOL
-
- **Default**: ``LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY AND LIBCXX_INSTALL_LIBRARY``
-
- Install libc++experimental.a alongside libc++.
-
.. _ABI Library Specific Options:
Index: libcxx/cmake/caches/MinGW.cmake
===================================================================
--- libcxx/cmake/caches/MinGW.cmake
+++ libcxx/cmake/caches/MinGW.cmake
@@ -1,5 +1,3 @@
-set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
-
set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
Index: libcxx/cmake/caches/Generic-no-experimental.cmake
===================================================================
--- libcxx/cmake/caches/Generic-no-experimental.cmake
+++ libcxx/cmake/caches/Generic-no-experimental.cmake
@@ -1,2 +1,3 @@
-set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
+set(LIBCXX_TEST_PARAMS "enable_experimental=False" CACHE STRING "")
+set(LIBCXXABI_TEST_PARAMS "${LIBCXX_TEST_PARAMS}" CACHE STRING "")
set(LIBCXX_ENABLE_INCOMPLETE_FEATURES OFF CACHE BOOL "")
Index: libcxx/cmake/caches/Apple.cmake
===================================================================
--- libcxx/cmake/caches/Apple.cmake
+++ libcxx/cmake/caches/Apple.cmake
@@ -4,7 +4,6 @@
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
set(LIBCXX_ENABLE_ASSERTIONS OFF CACHE BOOL "")
set(LIBCXX_ABI_VERSION "1" CACHE STRING "")
-set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "")
set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
Index: libcxx/cmake/caches/AIX.cmake
===================================================================
--- libcxx/cmake/caches/AIX.cmake
+++ libcxx/cmake/caches/AIX.cmake
@@ -9,7 +9,6 @@
set(LIBCXX_ENABLE_ASSERTIONS OFF CACHE BOOL "")
set(LIBCXX_ABI_VERSION "1" CACHE STRING "")
set(LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "")
-set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "")
set(LIBCXX_ENABLE_STATIC OFF CACHE BOOL "")
set(LIBCXXABI_ENABLE_SHARED ON CACHE BOOL "")
Index: libcxx/appveyor.yml
===================================================================
--- libcxx/appveyor.yml
+++ libcxx/appveyor.yml
@@ -45,7 +45,7 @@
#############################################################################
- cmake -G "%GENERATOR%" %CMAKE_OPTIONS%
"-DCMAKE_BUILD_TYPE=%configuration%"
- "-DLLVM_PATH=C:\projects\deps\llvm" -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
+ "-DLLVM_PATH=C:\projects\deps\llvm"
-DLLVM_LIT_ARGS="-sv --show-xfail --show-unsupported"
%APPVEYOR_BUILD_FOLDER%
Index: libcxx/CMakeLists.txt
===================================================================
--- libcxx/CMakeLists.txt
+++ libcxx/CMakeLists.txt
@@ -55,7 +55,6 @@
by users in their own code regardless of this option." OFF)
option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
option(LIBCXX_ENABLE_STATIC "Build libc++ as a static library." ON)
-option(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY "Build libc++experimental.a" ON)
set(ENABLE_FILESYSTEM_DEFAULT ON)
if (WIN32 AND NOT MINGW)
# Filesystem is buildable for windows, but it requires __int128 helper
@@ -167,9 +166,6 @@
cmake_dependent_option(LIBCXX_INSTALL_SHARED_LIBRARY
"Install the shared libc++ library." ON
"LIBCXX_ENABLE_SHARED;LIBCXX_INSTALL_LIBRARY" OFF)
-cmake_dependent_option(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY
- "Install libc++experimental.a" ON
- "LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY;LIBCXX_INSTALL_LIBRARY" OFF)
option(LIBCXX_ABI_UNSTABLE "Use the unstable ABI of libc++. This is equivalent to specifying LIBCXX_ABI_VERSION=n, where n is the not-yet-stable version." OFF)
if (LIBCXX_ABI_UNSTABLE)
@@ -932,11 +928,7 @@
add_subdirectory(src)
add_subdirectory(utils)
-set(LIBCXX_TEST_DEPS "")
-
-if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
- list(APPEND LIBCXX_TEST_DEPS cxx_experimental)
-endif()
+set(LIBCXX_TEST_DEPS "cxx_experimental")
if (LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY)
list(APPEND LIBCXX_TEST_DEPS cxx_external_threads)
Index: compiler-rt/cmake/Modules/AddCompilerRT.cmake
===================================================================
--- compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ compiler-rt/cmake/Modules/AddCompilerRT.cmake
@@ -685,7 +685,6 @@
-DLIBCXXABI_HERMETIC_STATIC_LIBRARY=ON
-DLIBCXXABI_INCLUDE_TESTS=OFF
-DLIBCXX_CXX_ABI=libcxxabi
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
-DLIBCXX_ENABLE_SHARED=OFF
-DLIBCXX_HERMETIC_STATIC_LIBRARY=ON
-DLIBCXX_INCLUDE_BENCHMARKS=OFF
Index: clang/cmake/caches/Fuchsia.cmake
===================================================================
--- clang/cmake/caches/Fuchsia.cmake
+++ clang/cmake/caches/Fuchsia.cmake
@@ -50,7 +50,6 @@
if(WIN32)
set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
- set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
set(LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "")
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
Index: clang/cmake/caches/Fuchsia-stage2.cmake
===================================================================
--- clang/cmake/caches/Fuchsia-stage2.cmake
+++ clang/cmake/caches/Fuchsia-stage2.cmake
@@ -79,7 +79,6 @@
set(RUNTIMES_${target}_CMAKE_SYSTEM_NAME Windows CACHE STRING "")
set(RUNTIMES_${target}_CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "")
set(RUNTIMES_${target}_LIBCXX_ABI_VERSION 2 CACHE STRING "")
- set(RUNTIMES_${target}_LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits