summaryrefslogtreecommitdiffstats
path: root/libcxx
Commit message (Collapse)AuthorAgeFilesLines
* [libc++] Fix recursive instantiation in std::array.Eric Fiselier2020-06-261-1/+1
| | | | | | | | | | | | | | The use of the `&& ...` fold expression in std::array's deduction guides recursively builds a set of binary operator expressions of depth N where `N` is the number of elements in the initializer. This is problematic because arrays may be large, and instantiation depth is limited. This patch addresses the issue by flattening the SFINAE using the existing `__all` type trait. (cherry picked from commit c6eb584c64872fbb779df14acd31c1f3947f6e52)
* Bump version to 10.0.1Tom Stellard2020-04-131-1/+1
|
* ReleaseNotes: remove in-progress warnings, tidy up a bitHans Wennborg2020-02-281-21/+3
|
* [libc++] Fix ABI break in __bit_reference.Eric Fiselier2020-02-202-0/+72
| | | | | | | | | | | | | | | | | | | The libc++ __bit_iterator type has weird ABI calling conventions as a quirk of the implementation. The const bit iterator is trivial, but the non-const bit iterator is not because it declares a user-defined copy constructor. Changing this now is an ABI break, so this test ensures that each type is trivial/non-trivial as expected. The definition of 'non-trivial for the purposes of calls': A type is considered non-trivial for the purposes of calls if: * it has a non-trivial copy constructor, move constructor, or destructor, or * all of its copy and move constructors are deleted. (cherry picked from commit a829443cc7359ecf0f2de8f82519f511795675ec)
* [libcxx] Support Python 3.8 in the test suiteSergej Jaskiewicz2020-02-191-2/+12
| | | | | | | | | | | | | | | | Summary: `platform.linux_distribution()` has been deprecated in Python 3.5 and removed in Python 3.8. Reviewers: bcain, bcraig, jroelofs, EricWF, mclow.lists, ldionne Reviewed By: jroelofs Subscribers: dexonsmith, christof, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D72501 (cherry picked from commit 7b8dc8c57697e95fd0b1248e4494ecc0f929aba1)
* Drop git version suffixAaron Puchert2020-02-171-1/+1
| | | | | | | | | | | | | | Summary: Also fix the version for libcxxabi, which was stuck in the past. Reviewers: hans, mclow.lists Reviewed By: hans Subscribers: mgorny, christof, libcxx-commits, llvm-commits, ldionne Tags: #libc, #llvm Differential Revision: https://reviews.llvm.org/D74586
* [libcxx] Add release notes for the 10.x branch for things I've doneMartin Storsjö2020-02-051-0/+5
| | | | Differential Revision: https://reviews.llvm.org/D74029
* [libcxx] [Windows] Store the lconv struct returned from localeconv in locale_tMartin Storsjö2020-02-042-7/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes using non-default locales, which currently can crash when e.g. formatting numbers. Within the localeconv_l function, the per-thread locale is temporarily changed with __libcpp_locale_guard, then localeconv() is called, returning an lconv * struct pointer. When localeconv_l returns, the __libcpp_locale_guard dtor restores the per-thread locale back to the original. This invalidates the contents of the earlier returned lconv struct, and all C strings that are pointed to within it are also invalidated. Thus, to have an actually working localeconv_l function, the function needs to allocate some sort of storage for the returned contents, that stays valid for as long as the caller needs to use the returned struct. Extend the libcxx/win32 specific locale_t class with storage for a deep copy of a lconv struct, and change localeconv_l to take a reference to the locale_t, to allow it to store the returned lconv struct there. This works fine for libcxx itself, but wouldn't necessarily be right for a caller that uses libcxx's localeconv_l function. This fixes around 11 of libcxx's currently failing tests on windows. Differential Revision: https://reviews.llvm.org/D69505 (cherry picked from commit 7db4f2c6945a24a7d81dad3362700353e2ec369e)
* Revert "[libcxx] Force-cache LIBCXX_CXX_ABI_LIBRARY_PATH"Sergej Jaskiewicz2020-01-311-1/+1
| | | | | | This reverts commit 41f4dfd63ea0fe995ddfba1838aa5ed972cc1377. It broke standalone libc++ builds, which now try to use libc++abi from the wrong directory, instead of system instance.
* Define _LIBCPP_HAS_TIMESPEC_GET for FreeBSD when appropriateDimitry Andric2020-01-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | Summary: FreeBSD got `timespec_get` support somewhere in the 12.x timeframe, but the C++ version check in its system headers was written incorrectly. This has now been fixed for both FreeBSD 13 and 12. Add checks for the corresponding `__FreeBSD_version` values, to define `_LIBCPP_HAS_TIMESPEC_GET` when the function is supported. Reviewers: emaste, EricWF, ldionne, mclow.lists Reviewed By: ldionne Subscribers: arichardson, krytarowski, christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D71522 (cherry picked from commit 5e416ba943b7c737deb8eca62756f7b4fa925845)
* Add test for spaceship operator to __configDavid Zarzycki2020-01-241-3/+2
| | | | | | | | | | | | | | | | | | | Summary: The libcxx test suite auto-detects spaceship operator, but __config does not. This means that the libcxx test suite has been broken for over a month when using top-of-tree clang. This also really ought to be fixed before 10.0. See: bc633a42dd409dbeb456263e3388b8caa4680aa0 Reviewers: chandlerc, mclow.lists, EricWF, ldionne, CaseyCarter Reviewed By: EricWF Subscribers: broadwaylamb, hans, dexonsmith, tstellar, llvm-commits, libcxx-commits Tags: #libc, #llvm Differential Revision: https://reviews.llvm.org/D72980 (cherry picked from commit 5dda92fcb0ce9206f831aa7cddf24421dcf044d7)
* [libcxx] Use mtx_plain | mtx_recursive following C11 APIPetr Hosek2020-01-171-1/+1
| | | | | | | | | The C11 API specifies that to initialize a recursive mutex, mtx_plain | mtx_recursive should be used with mtx_init. Differential Revision: https://reviews.llvm.org/D72809 (cherry picked from commit 3481e5d7ed08d068a4e3427cb1afcd8bf2acafdc)
* [libcxx] Use C11 thread API on FuchsiaPetr Hosek2020-01-142-21/+225
| | | | | | | | | | | On Fuchsia, pthread API is emulated on top of C11 thread API. Using C11 thread API directly is more efficient. While this implementation is only used by Fuchsia at the moment, it's not Fuchsia specific, and could be used by other platforms that use C11 threads rather than pthreads in the future. Differential Revision: https://reviews.llvm.org/D64378
* [libcxx] [Windows] Make a more proper implementation of strftime_l for mingw ↵Martin Storsjö2020-01-142-1/+10
| | | | | | | | | | | | | | | | with msvcrt.dll This also makes this function consistent with the rest of the libc++ provided fallbacks. The locale support in msvcrt.dll is very limited anyway; it can only be configured processwide, not per thread, and it only seems to support the locales "C" and "" (the user set locale), so it's hard to make any meaningful automatic test for it. But manually tested, this change does make time formatting locale code in libc++ output times in the user requested format, when using locale "". Differential Revision: https://reviews.llvm.org/D69554
* [libcxx] [test] Add casts to avoid signed/unsigned mismatch warnings on MSVC++Billy Robert O'Neal III2020-01-143-3/+3
| | | | A bug was filed that these warnings should not be emitted as DevCom-883961. ( https://developercommunity.visualstudio.com/content/problem/883961/c4389-signedunsigned-mismatch-should-not-be-emitte.html )
* Revert "[libc++] Explicitly enumerate std::string external instantiations."Oliver Stannard2020-01-134-62/+4
| | | | | | | This is causing failures for multiple buildbots and bootstrap builds, details at https://reviews.llvm.org/rG61bd1920. This reverts commit 61bd19206f61ace4b007838a2ff8884a13ec0374.
* [libcxx] Force-cache LIBCXX_CXX_ABI_LIBRARY_PATHSergej Jaskiewicz2020-01-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: The `LIBCXX_CXX_ABI_LIBRARY_PATH` CMake variable is cached once in libcxx/cmake/Modules/HandleLibCXXABI.cmake in the `setup_abi_lib` macro, and then cached again in libcxx/test/CMakeLists.txt. There, if it is not set to a value, it is by default set to `LIBCXX_LIBRARY_DIR`. However, this new value is not actually cached, because the old (empty) value has been already cached. Use the `FORCE` CMake flag so that it is saved to the cache. This should not break anything, because the code changed here previously had no effect, when it should have. Reviewers: jroelofs, bcraig, ldionne, EricWF, mclow.lists, vvereschaka, eastig Reviewed By: vvereschaka Subscribers: mgorny, christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D69169
* [libc++] Explicitly enumerate std::string external instantiations.Eric Fiselier2020-01-094-4/+62
| | | | | | | | | | | | | | | | | | | | | | | | The external instantiation of std::string is a problem for libc++. Additions and removals of inline functions in string can cause ABI breakages, including introducing new symbols. This patch aims to: (1) Make clear which functions are explicitly instatiated. (2) Prevent new functions from being accidentally instantiated. (3) Allow a migration path for adding or removing functions from the explicit instantiation over time. Although this new formulation is uglier, it is preferable from a maintainability and readability standpoint because it explicitly enumerates the functions we've chosen to expose in our ABI. Changing this list is non-trivial and requires thought and planning. (3) is achieved by making it possible to control the extern template declaration separately from it's definition. Meaning we could add a new definition to the dylib, wait for it to roll out, then add the extern template declaration to the header. Similarly, we could remove existing extern template declarations while still keeping the definition to prevent ABI breakages.
* [libcxx] [test] Disable refwrap/weak_result.pass.cpp in C++20 mode (broken ↵Billy Robert O'Neal III2020-01-081-0/+2
| | | | by P0357R3)
* [libcxx][test] Fix span tests.Stephan T. Lavavej2020-01-086-38/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | span.cons/container.pass.cpp N4842 22.7.3.2 [span.cons]/13 constrains span's range constructor for ranges::contiguous_range (among other criteria). 24.4.5 [range.refinements]/2 says that contiguous_range requires data(), and (via contiguous_range, random_access_range, bidirectional_range, forward_range, input_range, range) it also requires begin() and end() (see 24.4.2 [range.range]/1). Therefore, IsAContainer needs to provide begin() and end(). (Detected by MSVC's concept-constrained implementation.) span.cons/stdarray.pass.cpp This test uses std::array, so it must include <array>. <span> isn't guaranteed to drag in <array>. (Detected by MSVC's implementation which uses a forward declaration to avoid dragging in <array>, for increased compiler throughput.) span.objectrep/as_bytes.pass.cpp span.objectrep/as_writable_bytes.pass.cpp Testing `sp.extent == std::dynamic_extent` triggers MSVC warning C4127 "conditional expression is constant". Using `if constexpr` is a simple way to avoid this without disrupting anyone else (as span requires C++20 mode). span.tuple/get.pass.cpp 22.7.3.2 [span.cons]/4.3: "Preconditions: If extent is not equal to dynamic_extent, then count is equal to extent." These lines were triggering undefined behavior (detected by assertions in MSVC's implementation). I changed the count arguments in the first two chunks, followed by changing the span extents, in order to preserve the test's coverage and follow the existing pattern. span.cons/span.pass.cpp 22.7.3.2 [span.cons]/18.1 constrains span's converting constructor with "Extent == dynamic_extent || Extent == OtherExtent is true". This means that converting from dynamic extent to static extent is not allowed. (Other constructors tested elsewhere, like span(It first, size_type count), can be used to write such code.) As this is the test for the converting constructor, I have: * Removed the "dynamic -> static" case from checkCV(), which is comprehensive. * Changed the initialization of std::span<T, 0> s1{}; in testConstexprSpan() and testRuntimeSpan(), because s1 is used below. * Removed ASSERT_NOEXCEPT(std::span<T, 0>{s0}); from those functions, as they are otherwise comprehensive. * Deleted testConversionSpan() entirely. Note that this could never compile (it had a bool return type, but forgot to say `return`). And it couldn't have provided useful coverage, as the /18.2 constraint "OtherElementType(*)[] is convertible to ElementType(*)[]" permits only cv-qualifications, which are already tested by checkCV().
* [libcxx] fix incorrect attribute propertyKazuaki Ishizaki2020-01-081-1/+1
| | | | | | | | | | | | | | | | Summary: `__has_attribute(fallthough)` -> `__has_attribute(fallthrough)` This is a follow-up of https://reviews.llvm.org/D72287 Reviewers: EricWF, mclow.lists, Jim Reviewed By: Jim Subscribers: christof, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D72314
* [libc++] Add additional benchmark functions to libcxx/benchmarks/string.benchEric Fiselier2020-01-071-0/+127
| | | | | | | | | | | | | | | | | | | This change adds the following benchmarks: - StringAssignStr Assign a const basic::string& value - StringAssignAsciiz Assign a const char* asciiz value StringAssignAsciizMix Assign mixed long/short const char* asciiz values - StringResizeDefaultInit Resize default init benchmark Patch by Martijn Vels (mvels@google.com) Reviewed as D72343
* [libcxx] Fix a typo in config.pySergej Jaskiewicz2019-12-261-1/+1
| | | | | | | | | | Reviewers: ldionne, jroelofs, EricWF Subscribers: christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D71890
* [libc++] Fix typo in std::midpointRuslan Baratov2019-12-211-1/+1
| | | | | | Reviewed By: mclow.lists Differential Revision: https://reviews.llvm.org/D71525
* [libc++] Update feature list for NetBSDMichał Górny2019-12-202-3/+2
| | | | | | | | | Add NetBSD to the same feature list as Fuchsia since it matches in available features, effectively enabling aligned_alloc(), timespec_get() and C11 features. Remove now-duplicate declaration of quick_exit() support. Differential Revision: https://reviews.llvm.org/D71511
* [libcxx] Fix include paths in fuzzing/partial_sort.pass.cppMikhail Maltsev2019-12-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Summary: When testing an installed (out-of-tree) version of libc++, the "libcxx/fuzzing/partial_sort.pass.cpp" test fails because of missing include files "../fuzzing/fuzzing.{h,cpp}". This happens because in the source tree "../fuzzing" can be accessed as "libcxx/include/../fuzzing", but with the installed library this does not work. This patch fixes the issue by changing the path to be relative from the `libcxx/test/fuzzing" directory. Reviewers: mclow.lists, EricWF, christof, michaelplatings Reviewed By: michaelplatings Subscribers: merge_guards_bot, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D71459
* [libc++] Add __default_init_tag to basic_string constructorsEric Fiselier2019-12-161-14/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes unneeded zero initialization of string data. For example, given the below code: void Init(void *mem) { new (mem) std::string("Hello World"); } Assembly before: Init(void*): xorps xmm0, xmm0 movups xmmword ptr [rdi], xmm0 mov qword ptr [rdi + 16], 0 mov byte ptr [rdi], 22 movabs rax, 8022916924116329800 mov qword ptr [rdi + 1], rax mov dword ptr [rdi + 8], 1684828783 mov byte ptr [rdi + 12], 0 ret Assembly after: Init(): mov byte ptr [rdi], 22 movabs rax, 8022916924116329800 mov qword ptr [rdi + 1], rax mov dword ptr [rdi + 8], 1684828783 mov byte ptr [rdi + 12], 0 ret Patch by Martijn Vels (mvels@google.com) Reviewed as https://reviews.llvm.org/D70621
* [libc++] Rework compressed pair constructors.Eric Fiselier2019-12-1612-113/+76
| | | | | | | | | | | | This patch de-duplicates most compressed pair constructors to use the same code in C++11 and C++03. Part of doing that is deleting the "__second_tag()" and replacing it with a "__value_init_tag()" which has the same effect, but allows for the removal of the special "one-arg" first element constructor. This patch is intended to have no semantic change.
* Add default initialization to compressed_pair.Eric Fiselier2019-12-162-0/+58
| | | | | | | | | | This change introduces the __default_init_tag to memory, and a corresponding element constructor to allow for default initialization of either of the pair values. This is useful for classes such as std::string where most (all) constructors explicitly initialize the values in the constructor. Patch by Martijn Vels (mvels@google.com) Reviewed as https://reviews.llvm.org/D70617
* [libcxx] [test] Include missing headers. (NFC)Stephan T. Lavavej2019-12-1310-0/+13
| | | | | | | | libcxx/test/std/containers/sequences/array/at.pass.cpp Need to include <stdexcept> for std::out_of_range. libcxx/test/std/localization/locale.categories/category.time/* Need to include <ios> for std::ios.
* [libc++] Ensure __config always defines certain configuration macros.Eric Fiselier2019-12-132-9/+12
|
* [libcxx] [test] Fix valarray UB and MSVC warnings.Stephan T. Lavavej2019-12-1210-15/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [libcxx] [test] Calling min and max on an empty valarray is UB. libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp The calls `v1.min();` and `v1.max();` were emitting nodiscard warnings with MSVC's STL. Upon closer inspection, these calls were triggering undefined behavior. N4842 [valarray.members] says: "T min() const; 8 Preconditions: size() > 0 is true. T max() const; 10 Preconditions: size() > 0 is true." As these tests already provide coverage for non-empty valarrays (immediately above), I've simply deleted the code for empty valarrays. [libcxx] [test] Add macros to msvc_stdlib_force_include.h (NFC). libcxx/test/support/msvc_stdlib_force_include.h These macros are being used by: libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of11.pass.cpp Defining them to nothing allows that test to pass. [libcxx] [test] Silence MSVC warning C5063 for is_constant_evaluated (NFC). libcxx/test/std/utilities/meta/meta.const.eval/is_constant_evaluated.pass.cpp This test is intentionally writing code that MSVC intentionally warns about, so the warning should be silenced. Additionally, comment an endif for clarity. [libcxx] [test] Silence MSVC warning C4127 (NFC). libcxx/test/support/charconv_test_helpers.h MSVC avoids emitting this warning when it sees a single constexpr value being tested, but this condition is a mix of compile-time and run-time. Using push-disable-pop is the least intrusive way to silence this. [libcxx] [test] Silence MSVC truncation warning (NFC). libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp This test is intentionally truncating float to int, which MSVC intentionally warns about, so push-disable-pop is necessary. [libcxx] [test] Avoid truncation warnings in erase_if tests (NFC). libcxx/test/std/containers/associative/map/map.erasure/erase_if.pass.cpp libcxx/test/std/containers/associative/multimap/multimap.erasure/erase_if.pass.cpp libcxx/test/std/containers/unord/unord.map/erase_if.pass.cpp libcxx/test/std/containers/unord/unord.multimap/erase_if.pass.cpp These tests use maps with `short` keys and values, emitting MSVC truncation warnings from `int`. Adding `static_cast` to `key_type` and `mapped_type` avoids these warnings. As these tests require C++20 mode (or newer), for brevity I've changed the multimap tests to use emplace to initialize the test data. This has no effect on the erase_if testing.
* [libc++] Mark all fuzzing tests as unsupported in C++03Eric Fiselier2019-12-1217-0/+33
|
* [libc++] Cleanup and enable multiple warnings.Eric Fiselier2019-12-1212-27/+40
| | | | | | | | | | Too many warnings are being disabled too quickly. Warnings are important to keeping libc++ correct. This patch re-enables two warnings: -Wconstant-evaluated and -Wdeprecated-copy. In future, all warnings disabled for the test suite should require an attached bug. The bug should state the plan for re-enabling that warning, or a strong case why it should remain disabled.
* __bit_reference: fix -Wdeprecated-copy warningsFangrui Song2019-12-121-1/+7
| | | | | | | | | | | | | | Since C++11, [depr.impldec]: The implicit definition of a copy constructor as defaulted is deprecated if the class has a user-declared copy assignment operator or a user-declared destructor. At clang HEAD, -Wdeprecated-copy (included by -Wextra) will warn on such instances. Reviewed By: EricWF Differential Revision: https://reviews.llvm.org/D71096
* [libc++] Tolerate NaN returning random distributions for nowEric Fiselier2019-12-121-2/+8
|
* [libc++] Add check to ensure oss-fuzz properly targets libc++.Eric Fiselier2019-12-121-0/+4
|
* Temporarily Revert "[libc++] Fix -Wdeprecated-copy warnings in __bit_reference"Eric Christopher2019-12-121-3/+0
| | | | | | as it's causing test failures due to mismatched visibility. This reverts commit 02bb20223bda5add729402962c70d0ebd0d98af2.
* [libc++] Fix -Wdeprecated-copy warnings in __bit_referenceEric Christopher2019-12-111-0/+3
| | | | | | | | Add a couple of default copy constructors to fix the warning. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D71395
* [libc++] Require C++14 in all cases.Eric Fiselier2019-12-111-13/+7
| | | | | | | | | LLVM has moved to C++14, and the libc++ build should too. C++14 is needed to provide constant initialization for certain global objects. I suspect this change may break some older GCC buildbots, and I'll clean those up as they fall.
* [libc++] Fix fuzzing tests with older GCC compilers.Eric Fiselier2019-12-111-7/+17
| | | | | GCC 5 doesn't support `if constexpr`, so we need to do old-style tag dispatching.
* [libc++] Fix fuzzing unit tests with exceptions disabled.Eric Fiselier2019-12-111-0/+6
| | | | We simply turn off the parts of the tests that require exceptions.
* [libc++] Add fuzzing tests for parts of <random>.Eric Fiselier2019-12-1138-587/+547
| | | | | This patch also re-names the existing fuzzing unit tests so they actually run.
* [libc++] Hide some functions and types in <future> and <thread> as hiddenLouis Dionne2019-12-102-6/+7
| | | | | Otherwise, weak symbols leak into user programs when using `async` with non-internal types.
* [libcxx] Replace func_name with __name__ for compatibility with Python 3Sergej Jaskiewicz2019-12-111-2/+2
| | | | | | | | | | | | | | Summary: The __name__ attribute is the correct way to get a function name in Python 3. This also works with Python 2. Reviewers: jroelofs, EricWF Subscribers: christof, ldionne, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D71136
* [libcxx] [test] Query the target platform, not the host oneLouis Dionne2019-12-104-36/+91
| | | | | | | | | | | | | | target_info is inferred to WindowsLocalTI on Windows hosts unless specified otherwise. In the latter case, it doesn't make sense to use Windows-specific settings if the target is not Windows. This change should not break anything, because target_info is inferred based on what platform.system() returns. self.is_windows was set based on the same platform.system() call. Thanks to Sergej Jaskiewicz for the patch. Differential Revision: https://reviews.llvm.org/D68275
* [libcxx{,abi}] Don't link libpthread and libdl on FuchsiaPetr Hosek2019-12-061-0/+5
| | | | | | | | | These are a part of the libc so linking these explicitly isn't necessary and embedding these as deplibs causes link time error. This issues was introduced in a9b5fff which changed how we emit deplibs. Differential Revision: https://reviews.llvm.org/D71135
* [libcxx{,abi}] Emit deplibs only when detected by CMakeMichał Górny2019-12-0211-11/+16
| | | | | | | | This is a followup to 35bc5276ca3. It fixes the dependent libs usage in libcxx and libcxxabi to link pthread and rt libraries only if CMake detects them, rather than based on explicit platform blacklist. Differential Revision: https://reviews.llvm.org/D70888
* [libcxx] Add -Wno-deprecated-copy to the test configDavid Zarzycki2019-11-291-0/+1
|
* Optimize and fix basic_string move assignment operator. Reviewed as ↵marshall2019-11-271-4/+14
| | | | https://reviews.llvm.org/D68623. Thanks to mvels for the patch.
OpenPOWER on IntegriCloud