Author: Louis Dionne Date: 2022-07-19T10:44:19-04:00 New Revision: 7300a651f5f3b43f9fa3a2d9927322b0e061fcb2
URL: https://github.com/llvm/llvm-project/commit/7300a651f5f3b43f9fa3a2d9927322b0e061fcb2 DIFF: https://github.com/llvm/llvm-project/commit/7300a651f5f3b43f9fa3a2d9927322b0e061fcb2.diff LOG: [libc++] Re-apply "Always build c++experimental.a"" This re-applies bb939931a1ad, which had been reverted by 09cebfb978de because it broke Chromium. The issues seen by Chromium should be addressed by 1d0f79558ca4. Differential Revision: https://reviews.llvm.org/D128927 Added: Modified: 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/docs/BuildingLibcxx.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.mem/construct_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/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/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 Removed: ################################################################################ diff --git a/clang/cmake/caches/Fuchsia-stage2.cmake b/clang/cmake/caches/Fuchsia-stage2.cmake index 13d47d16508df..566df27c1d1cc 100644 --- a/clang/cmake/caches/Fuchsia-stage2.cmake +++ b/clang/cmake/caches/Fuchsia-stage2.cmake @@ -80,7 +80,6 @@ if(WIN32) 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 "") diff --git a/clang/cmake/caches/Fuchsia.cmake b/clang/cmake/caches/Fuchsia.cmake index 83232b776ad9e..73ef571507179 100644 --- a/clang/cmake/caches/Fuchsia.cmake +++ b/clang/cmake/caches/Fuchsia.cmake @@ -51,7 +51,6 @@ endif() 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 "") diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake index b7eb04327bb1d..00bb892be595a 100644 --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake @@ -685,7 +685,6 @@ macro(add_custom_libcxx name prefix) -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 diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 3d63bb0c8fbf8..0977a7229e5d8 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -55,7 +55,6 @@ option(LIBCXX_ENABLE_ASSERTIONS 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_STATIC_LIBRARY 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) @@ -930,11 +926,7 @@ add_subdirectory(include) 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) diff --git a/libcxx/appveyor.yml b/libcxx/appveyor.yml index ae7c7ad7cf672..ea2c88e5fda7f 100644 --- a/libcxx/appveyor.yml +++ b/libcxx/appveyor.yml @@ -45,7 +45,7 @@ build_script: ############################################################################# - 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% diff --git a/libcxx/cmake/caches/AIX.cmake b/libcxx/cmake/caches/AIX.cmake index b6c483a317279..76cf177913011 100644 --- a/libcxx/cmake/caches/AIX.cmake +++ b/libcxx/cmake/caches/AIX.cmake @@ -9,7 +9,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_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 "") diff --git a/libcxx/cmake/caches/Apple.cmake b/libcxx/cmake/caches/Apple.cmake index ea701a43f96a3..734f5ac8a1b9a 100644 --- a/libcxx/cmake/caches/Apple.cmake +++ b/libcxx/cmake/caches/Apple.cmake @@ -4,7 +4,6 @@ set(CMAKE_POSITION_INDEPENDENT_CODE OFF CACHE BOOL "") 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 "") diff --git a/libcxx/cmake/caches/Generic-no-experimental.cmake b/libcxx/cmake/caches/Generic-no-experimental.cmake index 0f055f4a98e07..98f01418d197d 100644 --- a/libcxx/cmake/caches/Generic-no-experimental.cmake +++ b/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 "") diff --git a/libcxx/docs/BuildingLibcxx.rst b/libcxx/docs/BuildingLibcxx.rst index 5069c7fe06928..7c347c6b57ba5 100644 --- a/libcxx/docs/BuildingLibcxx.rst +++ b/libcxx/docs/BuildingLibcxx.rst @@ -99,8 +99,7 @@ it is the simplest way to build. -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 @@ In either case, then run: > 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 @@ libc++ specific options 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: diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst index f69f9990cf314..343937b941495 100644 --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -34,22 +34,20 @@ matches that Standard in the library. 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 +``_LIBCPP_ENABLE_EXPERIMENTAL`` macro can be defined to turn those features on. Note +that you will also need to link to the appropriate ``libc++experimental.a`` static +archive. .. 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, diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index efa477715be2b..0800a4d12313f 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -315,32 +315,31 @@ endif() # 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}) - target_link_libraries(cxx_experimental PUBLIC cxx-headers) - 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) - if (LIBCXX_HERMETIC_STATIC_LIBRARY) - # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site - # too. Define it in the same way here, to avoid redefinition conflicts. - target_compile_definitions(cxx_experimental PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=) - endif() +add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES}) +target_link_libraries(cxx_experimental PUBLIC cxx-headers) +if (LIBCXX_ENABLE_SHARED) + target_link_libraries(cxx_experimental PRIVATE cxx_shared) +else() + target_link_libraries(cxx_experimental PRIVATE cxx_static) endif() +if (LIBCXX_HERMETIC_STATIC_LIBRARY) + # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site + # too. Define it in the same way here, to avoid redefinition conflicts. + target_compile_definitions(cxx_experimental PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=) +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 @@ -376,7 +375,7 @@ if (LIBCXX_INSTALL_STATIC_LIBRARY) 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 @@ -393,10 +392,7 @@ endif() 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) @@ -406,7 +402,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES) 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}" @@ -414,7 +410,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES) -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}" diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt index b85f726fd1c02..b06db91536eb2 100644 --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -93,10 +93,6 @@ if (NOT LIBCXX_ENABLE_EXCEPTIONS) 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() diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp index a3b5eade7d08b..876aa2dad1497 100644 --- a/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // memory_resource * new_delete_resource() diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp index 1a99d02ebdba0..04748c3b58953 100644 --- a/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // memory_resource * new_delete_resource() diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp index d080b059e2f0d..6fc77f58428b8 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // template <class T> class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp index 2a9ca2b39b4b3..5f71e4b5eb650 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <memory_resource> // template <class T> class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp index 6030c132a0b8e..58550fe530688 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // template <class T> class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp index 2776e16b1d683..1a8146ce0ca48 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // template <class T> class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp index 5ca6e812c98cf..7ab203401dc43 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // template <class T> class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp index 34ea9e1b303ce..21e3d01d58629 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/deque> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp index f20d176eccf3b..7925f1058c63e 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/forward_list> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp index c4eae679d7e2d..d33d132cd8049 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/list> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp index 4998f3e64b6a2..5ab24e794fb1e 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/map> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp index eb30b202d9d57..8079840a46bb1 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/regex> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp index 6c3ba831d96d4..7539b53184b00 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/set> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp index 95cb8e5a8d3dc..ee141039c4516 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/string> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp index 2087aac4e76c9..775ebcc082293 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/unordered_map> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp index da7ecd9c0d13d..7ef0d6f03f28b 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/unordered_set> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp index f0b14b87cef62..8f76c2397477a 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/vector> // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp index 91bf1f5efd918..d904d5a14558b 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // memory_resource * new_delete_resource() diff --git a/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp index bdd62484d0759..a08e4f93f0816 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp +++ b/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.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // <experimental/memory_resource> // memory_resource * null_memory_resource() diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot index 81a68467e3e16..1de4ad9a208e7 100755 --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -105,7 +105,6 @@ function generate-cmake-libcxx-win() { # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and # when building tests) to allow enabling filesystem for running tests, # even if it uses a non-permanent ABI. - generate-cmake-base \ -DLLVM_ENABLE_RUNTIMES="libcxx" \ -DCMAKE_C_COMPILER=clang-cl \ @@ -523,7 +522,7 @@ clang-cl-dll) # 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 -DLIBCXX_TEST_PARAMS="enable_experimental=False" echo "+++ Running the libc++ tests" ${NINJA} -vC "${BUILD_DIR}" check-cxx ;; diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py index ef6aef077d658..a4f4bf226d77f 100644 --- a/libcxx/utils/libcxx/test/params.py +++ b/libcxx/utils/libcxx/test/params.py @@ -159,15 +159,19 @@ def getStdFlag(cfg, std): ])), 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 [ - 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') + # + # TODO: Switch to using the appropriate experimental compiler flag once + # all compilers we support implement that flag. + AddFeature('c++experimental'), + PrependLinkFlag(lambda cfg: '-llibc++experimental' if _isMSVC(cfg) else '-lc++experimental'), + AddCompileFlag('-D_LIBCPP_ENABLE_EXPERIMENTAL'), ]), Parameter(name='long_tests', choices=[True, False], type=bool, default=True, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits