Marshall Clow
90ba0533cd
Fix PR#202520 - predicate called too many times in list::remove_if. Add tests for list, forward_list, and the std::remove_if algorithm
...
llvm-svn: 214736
2014-08-04 17:32:25 +00:00
David Majnemer
8b51260274
Fix std::make_heap's worst case time complexity
...
std::make_heap is currently implemented by iteratively applying a
siftup-type algorithm. Since sift-up is O(ln n), this gives
std::make_heap a worst case time complexity of O(n ln n).
The C++ standard mandates that std::make_heap make no more than O(3n)
comparisons, this makes our std::make_heap out of spec.
Fix this by introducing an implementation of __sift_down and switch
std::make_heap to create the heap using it.
This gives std::make_heap linear time complexity in the worst case.
This fixes PR20161.
llvm-svn: 213615
2014-07-22 06:07:09 +00:00
Marshall Clow
3484495b3d
Add checking for the complexity guarantees in the standard
...
llvm-svn: 212017
2014-06-30 05:04:20 +00:00
Nico Weber
ded9de5981
fix typo
...
llvm-svn: 209819
2014-05-29 14:58:38 +00:00
Marshall Clow
af236d36fb
Fix bug 19840, where some tests were not testing what we wanted. Thanks to Eric for the bug report
...
llvm-svn: 209520
2014-05-23 15:30:23 +00:00
Marshall Clow
190cc60a2d
Added some tests for equal elements in min_element and max_element. Bug #19547 was invalid, but we weren't testing that case
...
llvm-svn: 207232
2014-04-25 15:50:54 +00:00
Marshall Clow
4ab4534964
More LWG issues. Mark #2182 , #2323 and #2213 as complete. Add a test for #2339 , and mark that as complete. No actual changes to the libc++ code; all of these were already in place.
...
llvm-svn: 202407
2014-02-27 16:13:36 +00:00
Marshall Clow
9d67c6d5fd
Implement LWG2350: min, max, and minmax should be constexpr.
...
llvm-svn: 201697
2014-02-19 16:51:35 +00:00
Howard Hinnant
0f242bea10
Taking another swing at correctly optimizing fill_n.
...
llvm-svn: 187587
2013-08-01 17:29:28 +00:00
Anders Carlsson
8bb1dbbf75
Fix a bug in std::fill_n where memset would end up being called in cases when it shouldn’t.
...
Reviewed by Howard.
llvm-svn: 186875
2013-07-22 21:08:00 +00:00
Howard Hinnant
e0fe3d2e96
War on tabs.
...
llvm-svn: 185865
2013-07-08 21:06:38 +00:00
Marshall Clow
0b0bbd2f22
Implement n3607: 'equal', 'mismatch', and 'is_permutation'
...
llvm-svn: 181548
2013-05-09 21:14:23 +00:00
Howard Hinnant
b13fcad677
Somehow search_n never got tested, so of course it had a bug in it. This fixes http://llvm.org/bugs/show_bug.cgi?id=15667 .
...
llvm-svn: 178764
2013-04-04 15:40:48 +00:00
Marshall Clow
322270842c
Move common header files into a 'support' directory; make 'testit' include -I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files
...
llvm-svn: 171594
2013-01-05 03:21:01 +00:00
Marshall Clow
f8c2b82337
...and then there was one. Only one copy of 'iterators.h' in the test tree for libc++
...
llvm-svn: 171479
2013-01-04 18:24:04 +00:00
Howard Hinnant
54976f2619
Fixed PR10574: http://llvm.org/bugs/show_bug.cgi?id=10574
...
llvm-svn: 137522
2011-08-12 21:56:02 +00:00
Howard Hinnant
412dbebe1b
license change
...
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
7609c9b665
Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
...
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
664ae8118e
Fixing whitespace problems
...
llvm-svn: 111753
2010-08-22 00:08:10 +00:00
Howard Hinnant
4eb27b79c1
US 122, N3106
...
llvm-svn: 111742
2010-08-21 20:10:01 +00:00
Howard Hinnant
f9d540b062
Completed [alg.random.shuffle].
...
llvm-svn: 104708
2010-05-26 17:49:34 +00:00
Howard Hinnant
5b08a8a432
Wiped out some non-ascii characters that snuck into the copyright.
...
llvm-svn: 103516
2010-05-11 21:36:01 +00:00
Howard Hinnant
3e519524c1
libcxx initial import
...
llvm-svn: 103490
2010-05-11 19:42:16 +00:00