summaryrefslogtreecommitdiffstats
path: root/libcxx
Commit message (Collapse)AuthorAgeFilesLines
* [libc++] Allow running ABI list tests with different ABI versionsLouis Dionne2018-07-194-17/+2425
| | | | | | | | | | | | | | | Summary: Currently, the ABI list test only works for ABI version 1. This commit allows running the ABI list test with ABI version 2. It also adds an ABI list file for ABI v2 on Mac OS X. Reviewers: EricWF Subscribers: mgorny, christof, dexonsmith, llvm-commits, mclow.lists Differential Revision: https://reviews.llvm.org/D49509 llvm-svn: 337477
* Update the synopsis for <chrono> for C++20. No functional change.Marshall Clow2018-07-181-0/+492
| | | | llvm-svn: 337406
* Address "always inline function is not always inlinable" warning with GCC.Eric Fiselier2018-07-171-13/+8
| | | | | | | | | | | | When an always_inline function is used prior to the functions definition, the compiler may not be able to inline it as requested by the attribute. GCC flags the `basic_string(CharT const*)` function as one such example. This patch supresses the warning, and the problem, by moving the definition of the string constructor to the inline declaration. This ensures the body is available when it is first ODR used. llvm-svn: 337235
* Fix PR38160 - init_priority attribute not supported by GCC on Apple.Eric Fiselier2018-07-161-1/+12
| | | | | | | | This patch guards the use of __attribute__((init_priority(101))) within memory_resource.cpp when building with compilers that don't support it. Specifically GCC on Apple platforms, and MSVC. llvm-svn: 337205
* [CMake] Use correct variable as header install prefixPetr Hosek2018-07-151-2/+2
| | | | | | | | | | This variable is already set in CMakeLists.txt but it wasn't used which means that the headers get installed into a wrong location when the per target runtime directory option is being used. Differential Revision: https://reviews.llvm.org/D49345 llvm-svn: 337118
* Mark __equal_to 's operations as constexpr.Marshall Clow2018-07-141-4/+4
| | | | llvm-svn: 337087
* Mark one more __wrap_iter operation as constexpr.Marshall Clow2018-07-141-1/+2
| | | | llvm-svn: 337085
* wrap _LIBCPP_HAS_NO_CXX14_CONSTEXPR in defined(...)Marshall Clow2018-07-131-1/+1
| | | | llvm-svn: 337028
* Shot in the dark to fix gcc 4.9 / c++11 buildMarshall Clow2018-07-131-3/+3
| | | | llvm-svn: 337027
* Make internal class __wrap_iter constexpr when not using libc++'s debugging ↵Marshall Clow2018-07-133-56/+66
| | | | | | mode. Introduce a new macro _LIBCPP_CONSTEXPR_IF_NODEBUG to mark this. llvm-svn: 337019
* Fix a couple of 'unused variable' warnings in a vector test. NFC.Marshall Clow2018-07-131-0/+4
| | | | llvm-svn: 337016
* Turns out that wide literals U"xxx" and u"xxx" are c++11 and later.Marshall Clow2018-07-121-0/+2
| | | | llvm-svn: 336880
* [libc++] Take 2: Replace uses of _LIBCPP_ALWAYS_INLINE by ↵Louis Dionne2018-07-1130-387/+377
| | | | | | | | | | | | | | | | | | | | | | | | | | _LIBCPP_INLINE_VISIBILITY Summary: We never actually mean to always inline a function -- all the uses of the macro I could find are actually attempts to control the visibility of symbols. This is better described by _LIBCPP_INLINE_VISIBILITY, which is actually always defined the same. This change is orthogonal to the decision of what we're actually going to do with _LIBCPP_INLINE_VISIBILITY -- it just simplifies things by having one canonical way of doing things. Note that this commit had originally been applied in r336369 and then reverted in r336382 because of unforeseen problems. Both of these problems have now been fixed. Reviewers: EricWF, mclow.lists Subscribers: christof, dexonsmith, erikvanderpoel Differential Revision: https://reviews.llvm.org/D48892 llvm-svn: 336866
* Same reversed ifdef happened twice. Test fix only, NFC to the library.Marshall Clow2018-07-111-1/+1
| | | | llvm-svn: 336856
* Fix a test #ifdef that was reversed. NFC to the library.Marshall Clow2018-07-111-1/+1
| | | | llvm-svn: 336855
* [CMake] Set per-runtime library directory suffix in runtimes buildPetr Hosek2018-07-101-1/+1
| | | | | | | | | | | | Do not use LLVM_RUNTIMES_LIBDIR_SUFFIX variable which is an internal variable used by the runtimes build from individual runtimes, instead set per-runtime librarhy directory suffix variable which is necessary for the sanitized runtimes build to install libraries into correct location. Differential Revision: https://reviews.llvm.org/D49121 llvm-svn: 336713
* [libc++] Declare noop_coroutine() with _LIBCPP_INLINE_VISIBILITYLouis Dionne2018-07-101-0/+1
| | | | | | | | | | | | | | | | | Summary: It was defined with the right visibility, but declared without any visibility. This function was left out of a prior revision that did the same to several functions in <compare> (r336665) because the compiler I used didn't support coroutines. This reinforces the need for automated checks -- there might still be several cases of this throughout the library. Reviewers: EricWF Subscribers: modocache, christof, dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D49145 llvm-svn: 336709
* Remove BUILD file from google-benchmarkEric Fiselier2018-07-101-65/+0
| | | | llvm-svn: 336666
* [libc++] Declare <compare> operators with the proper visibility attributeLouis Dionne2018-07-101-55/+55
| | | | | | | | | | | | | | | | | | | | | | Summary: Many operators in <compare> were _defined_ with the proper visibility attribute, but they were _declared_ without any. This is not a problem until we change the definition of _LIBCPP_INLINE_VISIBILITY to something that requires the declaration to be decorated. I also marked `strong_equality::operator weak_equality()` as `_LIBCPP_INLINE_VISIBILITY`, since it seems like it had been forgotten. This came up while trying to get rid of `__attribute__((__always_inline__))` in favor of `__attribute__((internal_linkage))`. Reviewers: EricWF, mclow.lists Subscribers: christof, dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D49104 llvm-svn: 336665
* Add new string benchmarksEric Fiselier2018-07-101-0/+21
| | | | llvm-svn: 336636
* Update google-benchark to trunkEric Fiselier2018-07-1066-729/+2671
| | | | llvm-svn: 336635
* [test] two small cleanups:Casey Carter2018-07-092-5/+2
| | | | | | | | * Remove unused type from is_assignable.pass.cpp * Don't specialize `common_type<::X<float>>` in common_type.pass.cpp, which violates the requirements of [meta.trans.other]/5 llvm-svn: 336618
* type_traits: aligned_union is NOT the same as __uncvref [NFC]Casey Carter2018-07-081-25/+25
| | | | llvm-svn: 336502
* Revert "[libc++] Replace uses of _LIBCPP_ALWAYS_INLINE by ↵Louis Dionne2018-07-0530-377/+387
| | | | | | | | | | | | | | | _LIBCPP_INLINE_VISIBILITY" This reverts commit r336369. The commit had two problems: 1. __pbump was marked as _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY instead of _LIBCPP_INLINE_VISIBILITY, which lead to two symbols being added in the dylib and the check-cxx-abilist failing. 2. The LLDB tests started failing because they undefine `_LIBCPP_INLINE_VISIBILITY`. I need to figure out why they do that and fix the tests before we can go forward with this change. llvm-svn: 336382
* Fix HTML blunderMarshall Clow2018-07-051-1/+1
| | | | llvm-svn: 336381
* [libc++] Replace uses of _LIBCPP_ALWAYS_INLINE by _LIBCPP_INLINE_VISIBILITYLouis Dionne2018-07-0530-387/+377
| | | | | | | | | | | | | | | | | | | | Summary: We never actually mean to always inline a function -- all the uses of the macro I could find are actually attempts to control the visibility of symbols. This is better described by _LIBCPP_INLINE_VISIBILITY, which is actually always defined the same. This change is orthogonal to the decision of what we're actually going to do with _LIBCPP_INLINE_VISIBILITY -- it just simplifies things by having one canonical way of doing things. Reviewers: EricWF Subscribers: christof, llvm-commits, dexonsmith, erikvanderpoel, mclow.lists Differential Revision: https://reviews.llvm.org/D48892 llvm-svn: 336369
* [NFC] Add <initializer_list> to the synopsis of <utility>Louis Dionne2018-07-051-0/+2
| | | | | | | | | | | | | | Summary: It is part of the synopsis in the Standard and <utility> does include it, but it was left out of the synopsis comment. Reviewers: EricWF, mclow.lists Subscribers: christof, llvm-commits Differential Revision: https://reviews.llvm.org/D48611 llvm-svn: 336368
* Remove old workaround that is no longer neededEric Fiselier2018-07-041-3/+0
| | | | llvm-svn: 336297
* [libc++] Install the missing header __errcZhihao Yuan2018-07-031-0/+1
| | | | | | | | | | | | Summary: Omitted from D41347. Reviewers: EricWF Subscribers: mgorny, christof, ldionne, cfe-commits Differential Revision: https://reviews.llvm.org/D48864 llvm-svn: 336165
* [libc++] Lift std::errc into a separated headerZhihao Yuan2018-07-033-187/+220
| | | | | | | | | | | | | | Summary: This is needed to implement `<charconv>`, otherwise `<charconv>` would need to include `<system_error>`, which pulls in `<string>` -- a header which the `<charconv>` proposal intends to keep away from. Reviewers: mclow.lists, EricWF Reviewed By: mclow.lists Subscribers: christof, cfe-commits Differential Revision: https://reviews.llvm.org/D41347 llvm-svn: 336164
* [Win32] Overload ==, != for locale_t and long longPirama Arumuga Nainar2018-07-021-0/+8
| | | | | | | | | | | | | | | | Summary: _is_chartype_l (needed for isxdigit_l) in MinGW compares locale_t and NULL. NULL is 'long long' for 64-bit, and this results in ambiguous overloads when compiled with Clang. Define a concrete overload for the operators to fix the ambiguity. Reviewers: mstorsjo, EricWF, srhines, danalbert Subscribers: christof, cfe-commits, ldionne Differential Revision: https://reviews.llvm.org/D48749 llvm-svn: 336141
* Implement LWG 2946, 3075 and 3076. Reviewed as https://reviews.llvm.org/D48616Marshall Clow2018-07-0228-148/+755
| | | | llvm-svn: 336132
* Configure ELAST for MinGWPirama Arumuga Nainar2018-06-281-2/+2
| | | | | | | | | | | | | | Summary: Use _LIBCPP_MSVCRT_LIKE while configuring ELAST, so MinGW gets the same configuration as MSVC. Reviewers: compnerd, srhines, danalbert, mstorsjo Subscribers: christof, ldionne, cfe-commits Differential Revision: https://reviews.llvm.org/D48731 llvm-svn: 335916
* [CMake] Rename cxx_headers back to cxx-headers.Ahmed Bougacha2018-06-282-5/+5
| | | | | | | | | | | | | | r334477 renamed the cxx-headers target to cxx_headers, but various pieces sort-of expect the target names to match the component (e.g., LLVM_DISTRIBUTION_COMPONENTS in the various bootstrap caches, which, via some magic foreign to me, seems to expect cxx-headers, install-cxx-headers, and install-cxx-headers-stripped to exist.) Revert back to cxx-headers. Differential Revision: https://reviews.llvm.org/D48701 llvm-svn: 335899
* Support for multiarch runtimes layoutPetr Hosek2018-06-283-9/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | This change adds a support for multiarch style runtimes layout, so in addition to the existing layout where runtimes get installed to: lib/clang/$version/lib/$os Clang now allows runtimes to be installed to: lib/clang/$version/$target/lib This also includes libc++, libc++abi and libunwind; today those are assumed to be in Clang library directory built for host, with the new layout it is possible to install libc++, libc++abi and libunwind into the runtime directory built for different targets. The use of new layout is enabled by setting the LLVM_ENABLE_RUNTIME_TARGET_DIR CMake variable and is supported by both projects and runtimes layouts. The runtimes CMake build has been further modified to use the new layout when building runtimes for multiple targets. Differential Revision: https://reviews.llvm.org/D45604 llvm-svn: 335809
* [CMake] Fix install-cxx target.Matt Morehouse2018-06-251-1/+1
| | | | | | Was broken by r334477. llvm-svn: 335507
* [CMake] Convert paths to the right form in standalone builds on WindowsMartin Storsjo2018-06-202-3/+7
| | | | | | | | | | | | | The paths output from llvm-config --cmakedir and from clang --print-libgcc-file-name can contain backslashes, while CMake can't handle the paths in this form. This matches what compiler-rt already does (since SVN r203789 and r293195). Differential Revision: https://reviews.llvm.org/D48356 llvm-svn: 335172
* Fix libcxx tests after clang r334677.Richard Smith2018-06-171-3/+7
| | | | | | Feature test macro versions may have a trailing L. llvm-svn: 334917
* Remove P0771, which was not passed in RapperswilMarshall Clow2018-06-161-1/+0
| | | | llvm-svn: 334894
* [libcxx] [test] Strip trailing whitespace. NFC.Stephan T. Lavavej2018-06-1419-38/+38
| | | | llvm-svn: 334676
* [libcxx] [test] Update msvc_stdlib_force_include.hpp.Stephan T. Lavavej2018-06-141-11/+0
| | | | | | | | MSVC's STL removed _SCL_SECURE_NO_WARNINGS. MSVC's STL implemented feature-test macros. llvm-svn: 334675
* [CMake] Use common variable for all header targets NFCPetr Hosek2018-06-123-9/+8
| | | | | | This simplifies the handling of header targets. llvm-svn: 334477
* [CMake] Add a missing target dependency on C++ ABI headersPetr Hosek2018-06-122-1/+2
| | | | | | | This resolves the breakage introduced in r334468 which results in build error when using CMake Makefile generator. llvm-svn: 334470
* Reland "Use custom command and target to install libc++ headers"Petr Hosek2018-06-124-40/+243
| | | | | | | | | | | | | | | | | | | Using file(COPY FILE...) has several downsides. Since the file command is only executed at configuration time, any changes to headers made after the initial CMake execution are ignored. This can lead to subtle errors since the just built Clang will be using stale libc++ headers. Furthermore, since the headers are copied prior to executing the build system, this may hide missing dependencies on libc++ from other LLVM components. This changes replaces the use of file(COPY FILE...) command with a custom command and target which addresses all aforementioned issues and matches the implementation already used by other LLVM components that also install headers like Clang builtin headers. Differential Revision: https://reviews.llvm.org/D44773 llvm-svn: 334468
* Update the to-do list with motions from Rapperswil.Marshall Clow2018-06-121-1/+44
| | | | llvm-svn: 334467
* Mark the test using <experimental/memory_resource> to require c++experimental.Volodymyr Sapsai2018-06-111-0/+1
| | | | | | | | | | | | | | | | | When built against the old libc++ version the test was causing linker error Undefined symbols for architecture x86_64: "std::experimental::fundamentals_v1::pmr::new_delete_resource()", referenced from: void test_evil<WidgetV0, WidgetV0>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV0, WidgetV1>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV0, WidgetV2>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV0, WidgetV3>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV1, WidgetV0>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV1, WidgetV1>() in construct_piecewise_pair_evil.pass.cpp.o void test_evil<WidgetV1, WidgetV2>() in construct_piecewise_pair_evil.pass.cpp.o ... llvm-svn: 334431
* Remove unused code from __functional_base. NFC.Eric Fiselier2018-06-062-12/+2
| | | | | | | | | | | | | | Patch from Arthur O'Dwyer. `__user_alloc_construct_impl` is used by <experimental/memory_resource>, but this `__user_alloc_construct` is never used. Also, `<experimental/memory_resource>` doesn't need a full definition of `std::tuple`; just the forward declaration in `<__tuple>` will suffice. Reviewed as https://reviews.llvm.org/D46806 llvm-svn: 334069
* Fix test failures after r334053.Eric Fiselier2018-06-066-9/+20
| | | | llvm-svn: 334056
* Fix PR37694 - std::vector doesn't correctly move construct allocators.Eric Fiselier2018-06-057-30/+264
| | | | | | | | | | | | | | | | | | | C++2a[container.requirements.general]p8 states that when move constructing a container, the allocator is move constructed. Vector previously copy constructed these allocators. This patch fixes that bug. Additionally it cleans up some unnecessary allocator conversions when copy constructing containers. Libc++ uses __internal_allocator_traits::select_on_copy_construction to select the correct allocator during copy construction, but it unnecessarily converted the resulting allocator to the user specified allocator type and back. After this patch list and forward_list no longer do that. Technically we're supposed to be using allocator_traits<allocator_type>::select_on_copy_construction, but that should seemingly be addressed as a separate patch, if at all. llvm-svn: 334053
* Fix a strict aliasing violation in map and unordered_map.Erik Pilkington2018-06-044-89/+177
| | | | | | | | | | | | These containers type-punned between pair<K, V> and pair<const K, V> as an optimization. This commit instead provides access to the pair via a pair of references that assign through to the underlying object. It's still undefined to mutate a const object, but clang doesn't optimize on this for data members, so this should be safe. Differential revision: https://reviews.llvm.org/D47607 llvm-svn: 333948
OpenPOWER on IntegriCloud