Marshall Clow
e3973fd962
Implement the infrastructure for feature-test macros. Very few actual feature test macros, though. Reviewed as: https://reviews.llvm.org/D51955
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342073 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-12 19:41:40 +00:00
Marshall Clow
53c8e25037
Fix PR# 38900 - don't call swap inside of random_shuffle when we'd be swapping an element with itself
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@341975 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-11 18:33:45 +00:00
Eric Fiselier
c39fe08b20
Add diagnostics for min/max algorithms when a InputIterator is used.
...
These algorithms require a ForwardIterator or better. Ensure
we diagnose the contract violation at compile time instead of
of silently doing the wrong thing.
Further algorithms will be audited in upcoming patches.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@340426 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-22 17:47:13 +00:00
Marshall Clow
6c372355ba
Recommit r339943 - Establish the <bit> header. NFC yet. Reviewed as https://reviews.llvm.org/D50815 - with a fix for the sanitizer bots
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@340045 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-17 16:07:48 +00:00
Vitaly Buka
245791ae73
Revert "Establish the <bit> header. NFC yet. Reviewed as https://reviews.llvm.org/D50815 "
...
Breaks build on sanitizer bots.
This reverts commit r339943.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@339971 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-16 23:57:16 +00:00
Marshall Clow
fbd46738b1
Establish the <bit> header. NFC yet. Reviewed as https://reviews.llvm.org/D50815
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@339943 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-16 21:35:38 +00:00
Marshall Clow
0d0b972927
Mark __equal_to 's operations as constexpr.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337087 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-14 04:15:19 +00:00
Marshall Clow
c005c7e34c
Make internal class __wrap_iter constexpr when not using libc++'s debugging mode. Introduce a new macro _LIBCPP_CONSTEXPR_IF_NODEBUG to mark this.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@337019 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-13 16:35:26 +00:00
Marshall Clow
f477af5fda
Fix misleading indentation; replace a couple of NULLs with nullptr. Resolves https://reviews.llvm.org/D42945 ; thanks to Bruce Mitchener for the patch.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@324378 91177308-0d34-0410-b5e6-96231b3b80d8
2018-02-06 18:58:05 +00:00
Peter Collingbourne
27c341db41
Fix the BinaryPredicate form of std::is_permutation to not rely on operator==
...
According to [1], forms 2 and 4 of std::is_permutation should use the passed in
binary predicate to compare elements. operator== should only be used for forms
1 and 3 which do not take a binary predicate.
This CL fixes forms 2 and 4 which relied on operator== for some comparisons.
[1] http://en.cppreference.com/w/cpp/algorithm/is_permutation
Patch by Thomas Anderson!
Differential Revision: https://reviews.llvm.org/D42518
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323563 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-26 21:23:27 +00:00
Marshall Clow
5b12e3bdb4
Last batch of P0202 constexpr additions: includes/set_intersection/exchange
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323159 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-22 23:10:40 +00:00
Marshall Clow
63be4189d8
Another batch of P0202 constepr algirithms. remove/remove_if/remove_copy/remove_copy_if/reverse_copy, and tests (commented out) for rotate_copy, because that depends on std::copy
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323152 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-22 21:43:04 +00:00
Marshall Clow
a15161a030
Still more P0202 constexpr-ifying. This batch is: for_each/for_each_n/lexicographical_compare
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323147 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-22 20:44:33 +00:00
Marshall Clow
48a4655868
More P0202 constexpr work. This commit adds fill/fill_n/generate/generate_n/unique/unique_copy. I removed a specialization of fill_n that recognized when we were dealing with raw pointers and 1 byte trivially-assignable types and did a memset, because the compiler will do that optimization for us.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323050 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-20 20:14:32 +00:00
Marshall Clow
a75d61347e
More P0202 constexpr-ifying in <algorithm>. This commit handles replace/replace_if/replace_copy/replace_copy_if.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322975 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-19 18:07:29 +00:00
Marshall Clow
ecd1909f5f
More P0202 constexpr-ifying in <algorithm>. This commit handles 'transform'.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322970 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-19 17:45:39 +00:00
Marshall Clow
d6082200f6
More constexpr algorithms from P0202. search/search_n
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322566 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-16 15:48:27 +00:00
Marshall Clow
39b886259e
More constexpr algorithms from P0202: lower_bound, upper_bound, equal_range, binary_search
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322529 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-16 02:34:41 +00:00
Marshall Clow
4cd596538b
More constexpr (re P0202) - equal and mismatch
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322527 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-16 02:04:10 +00:00
Marshall Clow
0dc8ca7729
More constexpr from P0202. count and count_if. Also fix a comment that Morwenn noted.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322506 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-15 19:40:34 +00:00
Marshall Clow
6a1c2ffea4
More P0202 constexpr-ifying. All the find_XXX algorithms in this commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322504 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-15 19:26:05 +00:00
Marshall Clow
bb8010f6f2
partition_point gets the P0202 treatment
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322493 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-15 17:53:34 +00:00
Marshall Clow
de4b2869d7
More constexpr algorithms from P0202. any_of/all_of/none_of.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322492 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-15 17:20:36 +00:00
Marshall Clow
8d0d82585a
First part of P0202: Adding constexpr modifiers to functions in <algorithm> and <utility>. This commit is all the is_XXX algorithms.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322489 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-15 16:16:32 +00:00
Marshall Clow
334063336b
Add the C++17 extensions to std::search. Include the default searcher, but not the Boyer-Moore or Boyer-Moore-Horspool searcher (yet). BUT put the BM and BMH tests in place, marked to XFAIL. The other searchers will follow soon
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322019 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-08 19:18:00 +00:00
Shoaib Meenai
54b78ffabb
[libcxx] Fix intrinsics for MSVC
...
The parameter was previously renamed but MSVC path was not updated.
Patch by Andrey Khalyavin.
Differential Revision: https://reviews.llvm.org/D40774
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@319802 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 17:46:23 +00:00
Alexander Richardson
e208d0895a
Rename identifiers named __output
...
Summary:
In the CHERI clang compiler __output and __input are keywords and therefore
we can't compile libc++ with our compiler.
Reviewers: mclow.lists, EricWF, theraven
Reviewed By: EricWF
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D39537
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@318144 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-14 11:14:25 +00:00
Marshall Clow
c3fa9655a4
Fix PR#35119 : set_union misbehaves with move_iterators. Thanks to Denis Yaroshevskiy for both the bug report and the fix.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@316914 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-30 15:50:00 +00:00
Marshall Clow
1e32db7b33
Revert 313789 because gcc doesn't like it
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@313803 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 19:38:43 +00:00
Marshall Clow
9641305bba
Mark the __eval methods on independent_bits_engine (and __independent_bits_engine) as const, since they make no changes to the object. NFC.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@313789 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 18:32:08 +00:00
Marshall Clow
e2b6832fcd
Fix a bit of UB in __independent_bits_engine. Fixes PR#34663
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@313776 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 17:34:11 +00:00
Marshall Clow
25a78dcd77
Fix PR31166: std::inplace_merge seems to be unstable. Thanks to Jan Wilken Dörrie for the suggested fix.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@311952 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-28 23:16:13 +00:00
Shoaib Meenai
0d6a92ed81
[libc++] Clean up cl warning 4231 disabling
...
Once upon a time, extern templates used to be a Microsoft extension, so
cl would warn about their usage, and libc++ suppressed that warning.
They've long since been standardized, so the warning is defunct. (libc++
also doesn't currently support building with cl anyway.)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@307997 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-14 03:56:54 +00:00
Eric Fiselier
018a3d51a4
[Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows
...
Summary:
This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning.
This patch changes libc++ to use `#pragma push_macro` to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header.
Reviewers: mclow.lists, bcraig, compnerd, EricWF
Reviewed By: EricWF
Subscribers: cfe-commits, krytarowski
Differential Revision: https://reviews.llvm.org/D33080
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@304357 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-31 22:07:49 +00:00
Eric Fiselier
ac633a2a52
Remove uses of _UI because Windows is evil and tchar.h #define's it
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@304348 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-31 21:20:18 +00:00
Marshall Clow
798ecd6c0f
Last commit included some extra constexpr; remove them
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@303862 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 14:20:26 +00:00
Marshall Clow
efae8792d8
Make for_each_n only avaliable on C++17
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@303856 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 13:40:57 +00:00
Marshall Clow
10411c1626
Add non-parallel version of for_each_n (+tests) from the Parallelism TS
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@303833 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 02:29:54 +00:00
Eric Fiselier
ca91fd09f7
Don't interfere with the __builtin_foo namespace under MSVC
...
This patch follows up on feedback received in the review for
D32988. Specifically that libc++ should not mess with the
__builtin namespace, and that libc++ should use __popcnt to implement
__pop_count under MSVC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302731 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-10 21:30:04 +00:00
Eric Fiselier
41af64afad
[libc++] Refactor Windows support headers.
...
Summary:
This patch refactors and tries to remove as much of the Windows support headers as possible. This is needed because they currently introduce super weird include cycles and dependencies between STL and libc headers.
The changes in this patch are:
* remove `support/win32/support.h` completely. The required parts have either been moved into `support/win32/msvc_support.h` (for `MSVC` only helpers not needed by Clang), or directly into their respective `foo.h` headers.
* Combine `locale_win32.h` and `locale_mgmt_win32.h` into a single headers, this header should only be included within `__locale` or `locale` to avoid include cycles.
* Remove the unneeded parts of `limits_win32.h` and re-name it to `limits_msvc_win32.h` since it's only needed by Clang.
I've tested this patch using Clang on Windows, but I suspect it might technically regress our non-existent support for MSVC. Is somebody able to double check?
This refactor is needed to support upcoming fixes to `<locale>` on Windows.
Reviewers: bcraig, rmaprath, compnerd, EricWF
Reviewed By: EricWF
Subscribers: majnemer, cfe-commits
Differential Revision: https://reviews.llvm.org/D32988
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302727 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-10 20:57:45 +00:00
Eric Fiselier
6b17a7ba2c
Cleanup _LIBCPP_HAS_NO_<c++11-feature> in algorithm
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300625 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-18 23:26:47 +00:00
Eric Fiselier
6547dc88b4
Fix C++17 dylib build
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299401 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-03 23:23:44 +00:00
Marshall Clow
03b862f6ea
Remove random_shuffle in C++17. Please use shuffle instead. If you have to, you cant get it back by defining _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE before including any libc++ headers.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298597 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 13:43:37 +00:00
Eric Fiselier
c60e8fcdcd
Replace identifiers called __out because Windows.h #defines it.
...
Windows is greedy and it defines the identifier `__out` as a macro.
This patch renames all conflicting libc++ identifiers in order
to correctly work on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@291345 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-07 11:27:06 +00:00
Eric Fiselier
2c8aa056f4
Fix __wrap_iter in debug mode and apply _NOEXCEPT_DEBUG to it
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290654 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-28 05:35:32 +00:00
Eric Fiselier
0e5ebbc77c
Fix unused parameters and variables
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290459 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-23 23:37:52 +00:00
Aditya Kumar
4299795816
[libcxx] remove unused code
...
The macro _LIBCPP_UNROLL_LOOPS isn't used anywhere
so the code was dead.
Differential Revision: https://reviews.llvm.org/D26991
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@288143 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-29 14:43:42 +00:00
Marshall Clow
db7fa111ab
Fixes for LWG 2598, 2686, 2739, 2742, 2747, and 2759, which were adopted last week in Issaquah
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@286858 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-14 18:22:19 +00:00
Eric Fiselier
917af0a073
Implement C++17 std::sample.
...
This patch implements the std::sample function added to C++17 from LFTS. It
also removes the std::experimental::sample implementation which now forwards
to std::sample.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279948 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-28 22:14:37 +00:00
Aditya Kumar
fdb4f1713e
Remove trailing WS [NFC]
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279731 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-25 11:52:38 +00:00