Howard Hinnant
4cb38a82a2
This commit establishes a new bucket_count policy in the unordered containers: The policy now allows a power-of-2 number of buckets to be requested (and that request honored) by the client. And if the number of buckets is set to a power of 2, then the constraint of the hash to the number of buckets uses & instead of %. If the client does not specify a number of buckets, then the policy remains unchanged: a prime number of buckets is selected. The growth policy is that the number of buckets is roughly doubled when needed. While growing, either the prime, or the power-of-2 strategy will be preserved. There is a small run time cost for putting in this switch. For very cheap hash functions, e.g. identity for int, the cost can be as high as 18%. However with more typical use cases, e.g. strings, the cost is in the noise level. I've measured cases with very cheap hash functions (int) that using a power-of-2 number of buckets can make look up about twice as fast. However I've also noted that a power-of-2 number of buckets is more susceptible to accidental catastrophic collisions. Though I've also noted that accidental catastrophic collisions are also possible when using a prime number of buckets (but seems far less likely). In short, this patch adds an extra tuning knob for those clients trying to get the last bit of performance squeezed out of their hash containers. Casual users of the hash containers will not notice the introduction of this tuning knob. Those clients who swear by power-of-2 hash containers can now opt-in to that strategy. Clients who prefer a prime number of buckets can continue as they have.
...
llvm-svn: 159836
2012-07-06 17:31:14 +00:00
Howard Hinnant
6b45660f14
link to Marshall's notes.
...
llvm-svn: 159791
2012-07-06 00:39:38 +00:00
Nuno Lopes
6317bfb26a
mark operator new(std::nothrow) as noalias (aka __attribute__((malloc))
...
llvm-svn: 159359
2012-06-28 16:47:34 +00:00
Howard Hinnant
f08ebab2ea
Fixed a bug regarding result_of reported by Sven Behne. The fix is C++11 only mainly because result_of is a variadic beast and working with variadics is just such a problem in C++03 mode. This should bring result_of up to full conformance with the C++11 spec.
...
llvm-svn: 159211
2012-06-26 17:37:15 +00:00
Nuno Lopes
d8ed7e5b03
fix help with bash
...
llvm-svn: 159177
2012-06-25 23:51:05 +00:00
Howard Hinnant
c418654096
Revert pair constructors back to using is_convertible instead of is_constructible. This should pull things into alignment with the final draft. Fixes http://llvm.org/bugs/show_bug.cgi?id=13063#add_comment .
...
llvm-svn: 158280
2012-06-09 20:01:23 +00:00
Douglas Gregor
07db340438
Fix warning flags for CMake builds, from Andrew C. Morrow!
...
llvm-svn: 158172
2012-06-07 22:26:00 +00:00
Howard Hinnant
0bc272cf9a
Fix a few testsuite bugs involving trailing null (or lack thereof) in strstream.
...
llvm-svn: 157832
2012-06-01 20:02:59 +00:00
Howard Hinnant
4c0de496a0
Fix dangling else clause. Bug found and fixed by Dimitry Andric.
...
llvm-svn: 157779
2012-05-31 23:12:03 +00:00
Howard Hinnant
78b4015c1c
Fix the new _ALIGNAS_TYPE per instructions supplied by Eli Friedman.
...
llvm-svn: 157765
2012-05-31 20:14:00 +00:00
Howard Hinnant
bf33f5b292
Protect use of alignas against older versions of clang
...
llvm-svn: 157764
2012-05-31 19:31:14 +00:00
Howard Hinnant
8b805c915a
The rules for emplace in map, multimap, unordered_map and unordered_multimap changed a while back and I'm just now updating to these new rules. In a nutshell, you've got to know you're emplacing to a pair and use one of pair's constructors. I made one extension: If you want to emplace the key and default construct the mapped_type, you can just emplace(key), as opposed to emplace(piecewise_construct, forward_as_tuple(key), forward_as_tuple()).
...
llvm-svn: 157503
2012-05-25 22:04:21 +00:00
Howard Hinnant
a960edd203
Fix memory corruption bug found and fixed by Andrew C. Morrow.
...
llvm-svn: 157476
2012-05-25 15:55:46 +00:00
Howard Hinnant
49c3b20737
Add documentation regarding -fno-rtti.
...
llvm-svn: 157157
2012-05-20 13:03:53 +00:00
Howard Hinnant
ed81e910bd
Revert fix to http://llvm.org/bugs/show_bug.cgi?id=12867 for the reason now included in the code comment.
...
llvm-svn: 157128
2012-05-19 20:20:49 +00:00
Douglas Gregor
a336f5e645
Revert my _LIBCPP_INLINE_VISIBILITY changes, r157097 and r157107
...
llvm-svn: 157108
2012-05-19 07:14:17 +00:00
Douglas Gregor
a1b6937dba
valarray resize should not be _LIBCPP_INLINE_VISIBILITY
...
llvm-svn: 157107
2012-05-19 07:01:14 +00:00
Douglas Gregor
8f69b1af3d
Move _LIBCPP_VISIBLE_INLINE from the out-of-line definitions of member
...
functions to the original declarations, so that Clang will actually
see them. Part of <rdar://problem/11489333>.
llvm-svn: 157097
2012-05-19 04:41:25 +00:00
Howard Hinnant
9042d623bf
Protect __shared_weak_count::__get_deleter declaration with _LIBCPP_NO_RTTI. Fixes http://llvm.org/bugs/show_bug.cgi?id=12867
...
llvm-svn: 157049
2012-05-18 13:06:21 +00:00
Howard Hinnant
423a8d7733
Fix several bugs in find/count specialized for bits.
...
llvm-svn: 156546
2012-05-10 14:55:00 +00:00
Howard Hinnant
19d9cbfb39
Add friends __count_bool_true and __count_bool_false to __bit_iterator.
...
llvm-svn: 156543
2012-05-10 14:01:40 +00:00
Howard Hinnant
0ae9efeb1a
SFINAE __bit_iterator such that it will only get instantiated with a container that has the nested type __storage_type. This prevents accidental instantiation such as in http://llvm.org/bugs/show_bug.cgi?id=12755 . This fixes http://llvm.org/bugs/show_bug.cgi?id=12755 .
...
llvm-svn: 156308
2012-05-07 16:50:38 +00:00
Howard Hinnant
df7aad41fd
Constrain __bind functor constructor such that it won't accidentally get used as a copy constructor from a non-const lvalue. Fixes <rdar://problem/11359080>.
...
llvm-svn: 156182
2012-05-04 17:21:02 +00:00
Howard Hinnant
9acfc3af72
Change std::abs from a template function to three overloads for float, double and long double.
...
llvm-svn: 156064
2012-05-03 14:58:34 +00:00
Howard Hinnant
bff1bfc6be
Greatly scale back ambitions of emulating move semantics in C++03 mode. It was causing more problems than it solved. This fixes http://llvm.org/bugs/show_bug.cgi?id=12704 .
...
llvm-svn: 155918
2012-05-01 15:37:54 +00:00
Richard Smith
11ffde3d7e
libc++: only #include <cxxabi.h> if it exists. This allows libc++ to build
...
out of the box on Linux systems. If you're building against libc++abi, you
still need to make sure it can find <cxxabi.h> so it knows not to export
symbols which libc++abi provides.
llvm-svn: 155091
2012-04-19 01:36:12 +00:00
Richard Smith
99f15d6eb7
libc++: Add some missing #includes to atomics tests. libc++ doesn't need these
...
at the moment, but they allow these tests to be used to test clang against
libstdc++. Add myself to the credits file, as suggested by Howard.
llvm-svn: 155085
2012-04-19 00:50:47 +00:00
Howard Hinnant
d01320c200
Apply noexcept and constexpr to <atomic>.
...
llvm-svn: 154526
2012-04-11 20:14:21 +00:00
Richard Smith
766e8ccbfc
Switch libc++ from __atomic_* builtins to __c11_atomic_* builtins.
...
Per discussion with Howard, we are not interested in maintaining
compatibility with older versions of clang.
All tests pass with ToT clang, except for two which assert due to
a pre-existing, unrelated bug.
llvm-svn: 154521
2012-04-11 18:55:46 +00:00
David Chisnall
cd42f9446b
Now that clang supports doing the right thing with regard to atomic
...
initialisation, do the right thing with regard to atomic initialisation.
Note: clang r154507 or later required for <atomic> to work now.
llvm-svn: 154508
2012-04-11 17:26:23 +00:00
David Chisnall
4fa71de024
Fix the remaining atomic tests, all of which were wrong for the case where a
...
compare-and-exchange failed (it should update the expected value to the current
value, and the tests were checking that it didn't...).
Results of the atomics part of the test suite on FreeBSD with clang trunk and
the atomic.c from compiler-rt (currently kludged into the test, not installed
properly):
****************************************************
Results for /root/libc++/test/atomics:
using clang version 3.1 (trunk 153415)
Target: x86_64-unknown-freebsd10.0
Thread model: posix
with -std=c++0x -stdlib=libc++ -pthread /tmp/atomic.o
----------------------------------------------------
sections without tests : 0
sections with failures : 0
sections without failures: 14
+ ----
total number of sections : 14
----------------------------------------------------
number of tests failed : 0
number of tests passed : 52
+ ----
total number of tests : 52
****************************************************
Yay!
llvm-svn: 154095
2012-04-05 13:48:16 +00:00
David Chisnall
ca917f5342
Fix test cases that were trying to make atomic things that are not trivially copyable.
...
Now all of the test cases compile. Some of them even run!
llvm-svn: 154094
2012-04-05 13:23:08 +00:00
David Chisnall
c5d5a98815
Fix use of __atomic_is_lock_free() intrinsic.
...
llvm-svn: 154093
2012-04-05 13:13:24 +00:00
Howard Hinnant
7e5b4c9328
Put std::piecewise_construct_t back into the dylib for ABI stability. When clients are in C++11/constexpr mode this will be safely ignored because piecewise_construct is then declared with internal linkage.
...
llvm-svn: 153981
2012-04-03 23:45:46 +00:00
Howard Hinnant
b2e9f19caf
constexpr support for <utility>. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153968
2012-04-03 21:09:48 +00:00
Howard Hinnant
6e3e78acba
Updated documentation contributed by Christopher Jefferson.
...
llvm-svn: 153955
2012-04-03 15:08:42 +00:00
Howard Hinnant
e386b7b360
Update <random> with constexpr support. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153896
2012-04-02 21:00:45 +00:00
Howard Hinnant
338eb3116c
Update <limits> with constexpr support. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153888
2012-04-02 19:23:15 +00:00
Howard Hinnant
e8df82fa1a
Fix test for default constructor of discrete_distribution. This partially addresses http://llvm.org/bugs/show_bug.cgi?id=12436 .
...
llvm-svn: 153873
2012-04-02 15:00:14 +00:00
Howard Hinnant
788c9979d9
This is an initial commit of constexpr support as proposed by Richard Smith. This by no means completes constexpr support. Indeed, it hardly scratches the surface. All it does is lay the foundation in <__config> and changes those few places in the library that are already using that foundation.
...
llvm-svn: 153856
2012-04-02 00:40:41 +00:00
Howard Hinnant
0527c6207a
I believe tuple is still under development in the standard. Daniel Krugler is/will be making convincing arguments that a modified form of LWG 2051 (currently NAD Future) is easily acheivable and desirable. He has demonstrated that a tuple<T...> where all of the T are implicitly convertible from U... should have a tuple constructor that is also implicit, instead of explicit. This would support the use cases in LWG 2051 while not undermining T... with explicit conversions from U.... This check-in is an experimental implementation of Daniel's work. I believe this work to be mature enough to warrant inclusion into libc++. If anyone sees real-world problems that this check in causes, please let me know and I will revert it, and provide the feedback to the LWG.
...
llvm-svn: 153855
2012-04-01 23:10:42 +00:00
Howard Hinnant
cb16c68042
It appears that the standard accidentally removed the default constructor for error_category. I'm putting it back in. This fixes http://llvm.org/bugs/show_bug.cgi?id=12321 .
...
llvm-svn: 153194
2012-03-21 16:18:57 +00:00
Howard Hinnant
b2f52bb982
Allow libc++ to be built with CMake from within the LLVM tree. The libc++ part is just some renaming as the variable was already in use, conflicting with something else in the LLVM tree. Contributed by Ruben Van Boxem.
...
llvm-svn: 153036
2012-03-19 15:40:23 +00:00
Howard Hinnant
b4c7522790
Alter the terminal streams such that they do not get added to the atexit chain, and thus never get destructed.
...
llvm-svn: 152926
2012-03-16 15:13:51 +00:00
David Chisnall
1e02029f37
Undo some overzealous #ifdefs for LIBCXXRT.
...
llvm-svn: 152718
2012-03-14 14:11:13 +00:00
David Chisnall
5f13d66fb4
Make sure [at_]quick_exit is in std::
...
llvm-svn: 152717
2012-03-14 14:10:37 +00:00
David Chisnall
2f4cb4d79d
Don't refer to a function that doesn't exist in the quick_exit test.
...
llvm-svn: 152716
2012-03-14 14:02:15 +00:00
Jeffrey Yasskin
9c95b19f9e
Fix moneypunct_byname algorithm to more accurately represent C locales in C++.
...
llvm-svn: 152501
2012-03-10 18:31:43 +00:00
Howard Hinnant
8d5df9b9d4
Change some smart_ptr == 0 to smart_ptr == nullptr. Fixes http://llvm.org/bugs/show_bug.cgi?id=12185 .
...
llvm-svn: 152240
2012-03-07 20:37:43 +00:00
David Chisnall
04e5ce2bc1
Define _WCHAR_T in solaris/wchar.h. This fixes a bug where Solaris 10 headers
...
try to define C++ keywords as typedefs (fixed in Solaris 11).
llvm-svn: 151890
2012-03-02 10:56:04 +00:00
David Chisnall
55661e7305
Fix MSVC / Sun #ifdef ordering. Remove another #if-nothing-#endif.
...
Sorry for the churn.
llvm-svn: 151731
2012-02-29 16:41:21 +00:00
David Chisnall
40d7a8acff
Remove a spurious #ifdef / #endif pair with nothing between them.
...
llvm-svn: 151729
2012-02-29 16:22:33 +00:00
Howard Hinnant
9e849ad302
Add a warning to ctype<char>::classic_table() if not implemented.
...
llvm-svn: 151728
2012-02-29 16:08:57 +00:00
Howard Hinnant
27e618efb6
I'm reverting one of the changes made to exception.cpp in r151717. I'm unsure what the change was trying to do, but it didn't do the right thing for __APPLE__. So instead of trying to guess what was intended, I'm just putting it back the way it was.
...
llvm-svn: 151727
2012-02-29 15:37:30 +00:00
David Chisnall
06af2bbb04
Add support files required for building on Solaris.
...
llvm-svn: 151721
2012-02-29 13:17:28 +00:00
David Chisnall
14c25b80e9
Solaris port. Currently sees around 200 test failures, mostly related to
...
Solaris not providing some of the locales that the test suite uses.
Note: This depends on an xlocale (partial) implementation for Solaris and a
couple of fixed standard headers. These will be committed to a branch later
today.
llvm-svn: 151720
2012-02-29 13:05:08 +00:00
David Chisnall
66d4573786
Make the failure reporting in testit a bit more useful.
...
llvm-svn: 151719
2012-02-29 13:00:44 +00:00
David Chisnall
ca78592c16
Don't define __locale_raii if we are not going to be using it.
...
llvm-svn: 151718
2012-02-29 13:00:07 +00:00
David Chisnall
e1da544e0b
Some libcxxrt-compatibility cleanups (avoid defining things twice).
...
llvm-svn: 151717
2012-02-29 12:59:17 +00:00
Howard Hinnant
9bb1429f20
Reduce the number of move constructions when constructing a std::function. This fixes http://llvm.org/bugs/show_bug.cgi?id=12105 .
...
llvm-svn: 151652
2012-02-28 19:47:38 +00:00
Howard Hinnant
9ffe10106e
vector::emplace_back was mistakenly requiring move assignable. Fixed that and did a little drive-by optimization at the same time. This fixes http://llvm.org/bugs/show_bug.cgi?id=12085 .
...
llvm-svn: 151492
2012-02-26 15:30:12 +00:00
Howard Hinnant
26bba442ac
update test for explicit bool operator.
...
llvm-svn: 151461
2012-02-25 21:43:14 +00:00
Howard Hinnant
908d2bebaf
At least temporarily move operator new/delete from the abi back to here. I'm having trouble reexporting it as a weak symbol.
...
llvm-svn: 151459
2012-02-25 21:36:01 +00:00
Howard Hinnant
25326f060d
ReExport some mor symbols from libc++abi.
...
llvm-svn: 151453
2012-02-25 20:25:07 +00:00
Howard Hinnant
167d0fbb8a
Silence some warnings in a test.
...
llvm-svn: 151451
2012-02-25 20:04:11 +00:00
Howard Hinnant
8d01935c09
Hook up to the new clang __is_trivially_constructible and __is_trivially_assignable traits. Fixes r10925427 and http://llvm.org/bugs/show_bug.cgi?id=12038 .
...
llvm-svn: 151406
2012-02-24 23:32:26 +00:00
Dave Zarzycki
d9d5b4492b
Use Xcode relative compilers when possible
...
llvm-svn: 151108
2012-02-22 00:20:30 +00:00
Howard Hinnant
f2f2d8b98d
Modernize conversion to bool to the explicit bool conversion operator (library wide). This fixes http://llvm.org/bugs/show_bug.cgi?id=12058 .
...
llvm-svn: 151088
2012-02-21 21:46:43 +00:00
Howard Hinnant
67f3964766
Modernize relational operators for shared_ptr and unique_ptr. This includes adding support for nullptr, and using less<T*>. Fixes http://llvm.org/bugs/show_bug.cgi?id=12056 .
...
llvm-svn: 151084
2012-02-21 21:02:58 +00:00
Bob Wilson
a4fd70ea77
Add missing newlines at EOF.
...
llvm-svn: 150965
2012-02-20 16:56:13 +00:00
Howard Hinnant
f87873b3b3
Silence -Wmissing-field-initializers a little higher in the source.
...
llvm-svn: 150964
2012-02-20 16:51:43 +00:00
Jeffrey Yasskin
1c075b8934
Add myself to the CREDITS file.
...
llvm-svn: 150935
2012-02-19 18:22:03 +00:00
Howard Hinnant
7c24d8e70b
Initialize all the fields of struct tm before passing it to strftime. One of the uninitialized fields, probably the pointer field tm_zone, was causing a segfault on linux. Patch contributed by Jeffrey Yasskin.
...
llvm-svn: 150929
2012-02-19 14:55:32 +00:00
Howard Hinnant
08487f51b7
Relax pointer output test to accept glibc's output. Patch supplied by Jeffrey Yasskin.
...
llvm-svn: 150927
2012-02-19 14:51:01 +00:00
Howard Hinnant
2a9a072485
Give the emulated nullptr_t a default constructor.
...
llvm-svn: 150893
2012-02-18 22:01:22 +00:00
Howard Hinnant
c7cf23e4bf
Exercise rvalue arguements to make_shared for C++11 mode.
...
llvm-svn: 150887
2012-02-18 20:12:03 +00:00
Howard Hinnant
f95d9f0a3a
Move typeinfos for exceptions in <stdexcept> to the abi
...
llvm-svn: 150835
2012-02-17 19:24:42 +00:00
Howard Hinnant
f9c73f6629
Use __is_polymorphic if available. This fixes http://llvm.org/bugs/show_bug.cgi?id=11983 . Patch contributed by Jonathan Sauer.
...
llvm-svn: 150614
2012-02-15 20:47:11 +00:00
Howard Hinnant
fa8df7db88
tuple was accidentally lacking a valid copy assignment operator. It went undetected because I had failed to test assigning from a const lvalue. This fixes http://llvm.org/bugs/show_bug.cgi?id=11921
...
llvm-svn: 150613
2012-02-15 20:13:52 +00:00
Howard Hinnant
6560953383
Do not parse sign if a sign is not the next legal character when parsing floating point from an input stream. Fixes http://llvm.org/bugs/show_bug.cgi?id=11871
...
llvm-svn: 150609
2012-02-15 19:19:37 +00:00
Howard Hinnant
2aa9a38b67
Another stab at fixing http://llvm.org/bugs/show_bug.cgi?id=12007 . I earlier missed that there are two common_type definitions and corrected only one of them.
...
llvm-svn: 150599
2012-02-15 18:08:09 +00:00
Howard Hinnant
425e44d192
Remove reference from common_type definition. It looks like a recent clang decltype implementation got fixed/improved and exposed this. Fixes http://llvm.org/bugs/show_bug.cgi?id=12007 .
...
llvm-svn: 150581
2012-02-15 15:08:30 +00:00
Howard Hinnant
9741d6c96e
Implement a few optimizations for vector push_back and insert. Fixes r10828365.
...
llvm-svn: 150542
2012-02-15 00:41:34 +00:00
Howard Hinnant
e586ac735d
Provide a move(const T&) overload for C++03 mode to enable moving from rvalues. This is to support proxy references. Fixes r10858112.
...
llvm-svn: 150488
2012-02-14 16:03:09 +00:00
Howard Hinnant
27c8f620ee
Fix up narrowing conversions in switch statement.
...
llvm-svn: 150082
2012-02-08 19:15:06 +00:00
Howard Hinnant
23e4e4587f
Make attributes on definition consistent with those on declaration.
...
llvm-svn: 149701
2012-02-03 18:31:43 +00:00
Howard Hinnant
b8be700974
Added some more symbols to the v2 rexport list.
...
llvm-svn: 149636
2012-02-02 22:01:34 +00:00
Howard Hinnant
2c9c6a579a
Prepare for running on top of new libc++abi.
...
llvm-svn: 149634
2012-02-02 20:48:35 +00:00
Howard Hinnant
be745c8cce
Explicitly convert int to future_errc. Fixes http://llvm.org/bugs/show_bug.cgi?id=11428
...
llvm-svn: 149630
2012-02-02 20:31:36 +00:00
Bob Wilson
1e2ca98cb2
Fix .PHONY target to match new installheaders target.
...
llvm-svn: 148629
2012-01-21 06:16:39 +00:00
Howard Hinnant
21fa1887e0
Enable full functionality of shared_ptr<const void> by adding allocator<const void>. Credit to John Hurley for discovering this bug.
...
llvm-svn: 148508
2012-01-19 23:15:22 +00:00
Howard Hinnant
f53bbd2a1e
Added installheaders target.
...
llvm-svn: 148399
2012-01-18 17:44:31 +00:00
Howard Hinnant
0fd9a6cc37
Remove installhdrs target from Makefile
...
llvm-svn: 148396
2012-01-18 16:07:25 +00:00
Howard Hinnant
f30d9ad6e1
Create target installhdrs as a synonym for do-installhdrs.
...
llvm-svn: 148365
2012-01-18 00:30:57 +00:00
Howard Hinnant
26e8d17f79
Put do-installhdrs target back into Makefile.
...
llvm-svn: 148310
2012-01-17 17:01:18 +00:00
Howard Hinnant
d6c77994b8
Stop installing headers, this is now done by clang
...
llvm-svn: 148309
2012-01-17 16:09:32 +00:00
Howard Hinnant
c37917f309
Fix http://llvm.org/bugs/show_bug.cgi?id=11752
...
llvm-svn: 148069
2012-01-12 23:37:51 +00:00
Howard Hinnant
a04d2b3330
Fix http://llvm.org/bugs/show_bug.cgi?id=11734
...
llvm-svn: 147853
2012-01-10 15:15:47 +00:00
Howard Hinnant
8e25104b10
1. Fix make_shared<const T>. 2. Allow allocator<const T> as an extension. 3. Refactor work which fixed unique_ptr<const T[]>. 4. Remove no-longer-needed private declarations from unique_ptr. 5. Add constraints to some shared_ptr and weak_ptr constructors and assignment operators so that is_constructible/is_assignable give the correct answers for shared_ptr and weak_ptr. 6. Make defensive preparations in the shared_ptr free functions for the introduction of shared_ptr<T[]> in the future. 7. As an optimization, add move constructor and move assignment to weak_ptr.
...
llvm-svn: 147437
2012-01-02 17:56:02 +00:00
NAKAMURA Takumi
e9d3d21988
Happy new year 2012!
...
llvm-svn: 147395
2012-01-01 08:16:56 +00:00
Howard Hinnant
b34b48196c
The exception recovery mechanism for the uninitialized_* algorithms did not work for iterators into discontiguous memory.
...
llvm-svn: 147343
2011-12-29 17:45:35 +00:00
Howard Hinnant
45146a12cf
Fix memory leak in converting weak_ptr to shared_ptr
...
llvm-svn: 147298
2011-12-27 22:20:51 +00:00
Howard Hinnant
a87b5e3446
Fix http://llvm.org/bugs/show_bug.cgi?id=11616
...
llvm-svn: 146881
2011-12-19 17:58:44 +00:00
David Chisnall
18e33935f3
Some fixes to <atomic> operations to explicitly use atomic types and operations.
...
The integral types now work with clang trunk (if you remove the guard), although we're still missing an intrinsic for initialising atomics (needed for C1x too).
Howard: Please review.
llvm-svn: 146865
2011-12-19 11:44:20 +00:00
Howard Hinnant
e4097ad7e6
Allow unique_ptr<T const []> to be constructed and assigned from a unique_ptr<T[]>
...
llvm-svn: 146853
2011-12-18 21:19:44 +00:00
Howard Hinnant
d6f44b6601
Allow unique_ptr<T const []> to be constructed with a T* (in addition to a const T*)
...
llvm-svn: 146736
2011-12-16 15:37:23 +00:00
Howard Hinnant
fac8c8866d
Remove quotes from locale name identifier. Credit Edward Meewis.
...
llvm-svn: 146655
2011-12-15 15:01:38 +00:00
Howard Hinnant
a1a9e77122
As an extension, support incomplete types in the unordered containers to match what we already do in the associative containers.
...
llvm-svn: 146376
2011-12-12 17:26:24 +00:00
Howard Hinnant
42b8bb5033
Fix http://llvm.org/bugs/show_bug.cgi?id=11461 . Credit Alberto Ganesh Barbati.
...
llvm-svn: 146345
2011-12-11 20:31:33 +00:00
Howard Hinnant
53d2fb0aa2
Installation of CityHash by Craig Silverstein
...
llvm-svn: 146329
2011-12-10 20:28:56 +00:00
Howard Hinnant
f3d14a65ca
Starting using murmur2 when combining multiple size_t's into a single hash, and also for basic_string. Also made hash<thread::id> ever so slighly more portable. I had to tweak one test which is questionable (definitely not portable) anyway.
...
llvm-svn: 145795
2011-12-05 00:08:45 +00:00
Howard Hinnant
9b0cd149aa
Version #next on the hash functions for scalars. This builds on Dave's work, extends it to T*, and changes the way double and long double are handled (no longer convert to float on 32 bit). I also picked up a minor bug with uninitialized bits on the upper end of size_t when sizeof(size_t) > sizeof(T), e.g. in hash<float>. Most of the functionality has been put in one place: __scalar_hash in <memory>. Unfortunately I could not reuse __scalar_hash for hash<long double> on x86 because of the padding bits which need to be zeroed. I didn't want to add this zeroing step to the more general __scalar_hash when it isn't needed (in the absence of padding bits). I'm not ignoring the hash<string> issue (possibly changing that to a better hash). I just haven't gotten there yet.
...
llvm-svn: 145778
2011-12-03 21:11:36 +00:00
Howard Hinnant
7f3884d58a
I had picked up the wrong version of DaveZ's hash patches. Corrected here.
...
llvm-svn: 145728
2011-12-02 23:45:22 +00:00
Howard Hinnant
425d482c21
Fixes to hash for long long, unsigned long long, float, double and long double. Credit Dave Zarzycki
...
llvm-svn: 145721
2011-12-02 22:52:09 +00:00
Howard Hinnant
1196716270
unord test fixes by Edward Meewis
...
llvm-svn: 145707
2011-12-02 21:23:14 +00:00
Howard Hinnant
132bd622cf
Fix http://llvm.org/bugs/show_bug.cgi?id=11459 . Patch supplied by Alberto Ganesh Barbati.
...
llvm-svn: 145703
2011-12-02 20:41:47 +00:00
Howard Hinnant
75689c1018
Fix http://llvm.org/bugs/show_bug.cgi?id=11428 . Fix provided by Alberto Ganesh Barbati
...
llvm-svn: 145698
2011-12-02 19:36:40 +00:00
Howard Hinnant
a5bc2f877f
Jean-Daniel: __builtin_popcountll support for Windows
...
llvm-svn: 145684
2011-12-02 17:22:38 +00:00
Howard Hinnant
c206366fd7
Quash a whole bunch of warnings
...
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant
c003db1fca
Further macro protection by replacing _[A-Z] with _[A-Z]p
...
llvm-svn: 145410
2011-11-29 18:15:50 +00:00
Howard Hinnant
ab4f438239
Add protection from min/max macros
...
llvm-svn: 145407
2011-11-29 16:45:27 +00:00
Howard Hinnant
1c2c87c502
Remove redundant iterator assignment detected by Marshall Clow
...
llvm-svn: 145265
2011-11-28 19:49:26 +00:00
Bob Wilson
8a3c663e95
Refactor libcxx makefile. No functional changes intended.
...
Besides cleaning up the repetition in the installhdrs target, the point of this
change is to provide a separate do-installhdrs target that can be used directly
from clang's runtime/libcxx makefile to install a copy of the headers along
with clang. <rdar://problem/10397739>
llvm-svn: 145162
2011-11-27 05:39:58 +00:00
Howard Hinnant
7319160e7c
Clarify building instructions for 10.7
...
llvm-svn: 144910
2011-11-17 17:14:16 +00:00
David Chisnall
5e8e0448c3
On FreeBSD, define a macro that causes the unimplemented C99 math.h functions to be declared. This prevents <cmath> users from being broken, unless they actually use the C++ wrappers that call the missing functions.
...
llvm-svn: 144501
2011-11-13 17:15:33 +00:00
Howard Hinnant
91ed25d186
Remove support folder from Apple install
...
llvm-svn: 143702
2011-11-04 15:59:51 +00:00
Howard Hinnant
05e485879c
Fix ratio arithmetic with zero
...
llvm-svn: 143519
2011-11-01 23:13:37 +00:00
Howard Hinnant
decdcacece
Add include file install path
...
llvm-svn: 143497
2011-11-01 21:06:50 +00:00
Howard Hinnant
9563a09cee
Windows port work by Ruben Van Boxem
...
llvm-svn: 143105
2011-10-27 16:24:42 +00:00
Howard Hinnant
0176bc6cf5
Fixed bug in __independent_bits_engine found by Nick (from stackoverflow)
...
llvm-svn: 143104
2011-10-27 16:12:10 +00:00
Howard Hinnant
e4383379ae
More windows port work by Ruben Van Boxem
...
llvm-svn: 142732
2011-10-22 20:59:45 +00:00
Howard Hinnant
8bece6fe69
Windows port work by Ruben Van Boxem
...
llvm-svn: 142578
2011-10-20 12:49:21 +00:00
Howard Hinnant
a892966218
de-tabbify
...
llvm-svn: 142237
2011-10-17 20:08:59 +00:00
Howard Hinnant
073458b1ab
Windows support by Ruben Van Boxem.
...
llvm-svn: 142235
2011-10-17 20:05:10 +00:00
Howard Hinnant
7ba930bfca
Fix http://llvm.org/bugs/show_bug.cgi?id=11113
...
llvm-svn: 141714
2011-10-11 21:28:38 +00:00
Howard Hinnant
a33d4bc1ff
Starting on musl port by Arvid Picciani
...
llvm-svn: 141672
2011-10-11 16:00:46 +00:00
Howard Hinnant
03a466b3b9
Remove -Wglobal-constructors from flags. This was an accidental addition.
...
llvm-svn: 141551
2011-10-10 17:36:59 +00:00
Howard Hinnant
287e20e824
Update instructions for building on Mac OS 10.6
...
llvm-svn: 141507
2011-10-09 15:25:34 +00:00
Howard Hinnant
1ed7df111b
Fix <rdar://problem/10256836> getline of an empty string mistakenly causes failure
...
llvm-svn: 141506
2011-10-09 15:20:46 +00:00
Howard Hinnant
2a4812fd04
Fix <rdar://problem/10255403> match_results::begin() is off by one
...
llvm-svn: 141494
2011-10-08 14:36:16 +00:00
Howard Hinnant
b5a46edf35
reverting change to compatibility_version
...
llvm-svn: 141445
2011-10-07 23:55:11 +00:00
Howard Hinnant
e5bb431d3f
Change compatibility_version
...
llvm-svn: 141391
2011-10-07 19:52:29 +00:00
Howard Hinnant
7ba069074a
Fix <rdar://problem/10136825>
...
llvm-svn: 141132
2011-10-04 23:11:56 +00:00
Howard Hinnant
1e31e53fe1
Fix <rdar://problem/10226704>
...
llvm-svn: 141054
2011-10-04 01:25:20 +00:00
Howard Hinnant
33a30f4159
Windows porting work by Ruben Van Boxem
...
llvm-svn: 141003
2011-10-03 15:23:59 +00:00
Howard Hinnant
20dde1e8fb
Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem
...
llvm-svn: 140950
2011-10-01 15:34:27 +00:00
Howard Hinnant
2c0a65ee78
Fix <rdar://problem/10217868>.
...
llvm-svn: 140907
2011-10-01 00:26:36 +00:00
Howard Hinnant
4f4d310e3e
Provide link to developer's policy
...
llvm-svn: 140857
2011-09-30 16:58:02 +00:00
Howard Hinnant
8909cdfff9
Windows port work by Ruben Van Boxem
...
llvm-svn: 140805
2011-09-29 20:33:10 +00:00
Howard Hinnant
0c06e58fae
Windows patch work by Ruben Van Boxem
...
llvm-svn: 140781
2011-09-29 13:33:15 +00:00
Howard Hinnant
9978e3709f
Attempted locale refactoring. _LIBCPP_LOCALE__L_EXTENSIONS now should be defined if one has all of the xxx_l() functions. I've defined this for apple, freebsd and win32. _LIBCPP_HAS_DEFAULTRUNELOCALE should be defined if there is a _DefaultRuneLocale. I've defined this for apple and freebsd. The block of code we're trying to migrate away from is now under #ifdef __linux__. I've tested only on OS X. I hope I haven't broken things too badly elsewhere. Please let me know.
...
llvm-svn: 140734
2011-09-28 23:39:33 +00:00
Howard Hinnant
3438889dec
Work on Windows port by Ruben Van Boxem
...
llvm-svn: 140728
2011-09-28 21:39:20 +00:00
Howard Hinnant
0470a63776
Attempt to enable locale simplification. On which platforms can we now #define _LIBCPP_STABLE_APPLE_ABI?
...
llvm-svn: 140724
2011-09-28 21:05:01 +00:00
Howard Hinnant
d7aac28ae9
Ruben's Windows test results.
...
llvm-svn: 140700
2011-09-28 15:44:39 +00:00
Howard Hinnant
920b56ca88
Another installment on debug mode. This addresses list. However this should be considered a temporary state. The API of the debug database and how vector and list use it, is unsatisfactory at the moment. It is both inefficient and overly verbose. I wanted to get this functionality checked in though. In the next day or so I'll refactor what is there in an attempt to streamline things.
...
llvm-svn: 140660
2011-09-27 23:55:03 +00:00
Howard Hinnant
dbe8111948
Work on Windows port by Ruben Van Boxem
...
llvm-svn: 140384
2011-09-23 16:11:27 +00:00
Howard Hinnant
3c78ca07bc
Partial Windows port by Ruben Van Boxem
...
llvm-svn: 140328
2011-09-22 19:10:18 +00:00
Howard Hinnant
cf50df9d94
Fix test bugs found by David Chisnall
...
llvm-svn: 140271
2011-09-21 18:33:46 +00:00
David Chisnall
580eccb05a
Fix locales used in re tests.
...
llvm-svn: 140265
2011-09-21 17:38:03 +00:00
David Chisnall
13bddcf1bc
Remove undefines in cstdio test. Fix these properly rather than bodging the tests.
...
llvm-svn: 140264
2011-09-21 17:37:18 +00:00
David Chisnall
ecccb1f868
More +.UTF-8 fixes.
...
llvm-svn: 140262
2011-09-21 17:35:42 +00:00
Howard Hinnant
b996af1fe7
Fix failure found by David Chisnall
...
llvm-svn: 140255
2011-09-21 16:42:32 +00:00
Howard Hinnant
bae9fc983e
Correct change to exception.cpp from r140245
...
llvm-svn: 140253
2011-09-21 15:12:26 +00:00
David Chisnall
71850c961d
More fixes to the tests. Add UTF-8 encoding to all locales that don't specify one. Undefine some stdio.h macros that break the tests.
...
llvm-svn: 140252
2011-09-21 14:59:10 +00:00
David Chisnall
b25f615c58
Fully-qualify some more locales in the tests...
...
llvm-svn: 140251
2011-09-21 14:48:49 +00:00
David Chisnall
1d9bdaa24d
Don't check STREAMS error numbers on systems that don't implement the obsolete (as described in POSIX2008) XSI STREAMS extension.
...
llvm-svn: 140248
2011-09-21 12:23:11 +00:00
David Chisnall
8b053d5ec1
More locale cleanups. Fully specify locales in iostream tests.
...
llvm-svn: 140247
2011-09-21 12:09:17 +00:00
David Chisnall
89728139cb
Fixes for FreeBSD, including some fairly obvious copy-and-paste errors.
...
libc++ now mostly works on FreeBSD with libcxxrt and this patch applied to the base system:
http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20110920/e666632c/xlocale-0001.obj
Summary of tests on FreeBSD:
****************************************************
Results for /root/libcxx/test:
using FreeBSD clang version 3.0 (trunk 135360) 20110717
Target: x86_64-unknown-freebsd9.0
Thread model: posix
with -std=c++0x -stdlib=libc++ -I/root/libcxx/include -L/root/libcxx/build/lib
----------------------------------------------------
sections without tests : 1
sections with failures : 48
sections without failures: 1015
+ ----
total number of sections : 1064
----------------------------------------------------
number of tests failed : 145
number of tests passed : 4179
+ ----
total number of tests : 4324
****************************************************
(Many due to this clang version not supporting C++ atomics)
More fixes to follow...
llvm-svn: 140245
2011-09-21 08:39:44 +00:00
David Chisnall
e36a15db17
Localisation test fixes to make the tests pass on FreeBSD, which does not provide shortened forms of the various locales (e.g. en_US, rather than en_US.UTF-8 / en_US.ISO{whatever}).
...
Reviewed by Howard Hinnant.
llvm-svn: 140242
2011-09-21 08:19:20 +00:00
Howard Hinnant
c756bb3574
Chris Jefferson noted that vector iterator ownership can be transferred from source to target under move construction and move assignment. This commit makes that happen for debug mode.
...
llvm-svn: 140023
2011-09-19 16:34:29 +00:00
Howard Hinnant
cdcfbf26dc
Removed unneeded boost implementation of is_base_of
...
llvm-svn: 140014
2011-09-19 13:19:31 +00:00
David Chisnall
0a0f599f2c
Enable __locale to work on FreeBSD.
...
llvm-svn: 140005
2011-09-18 19:23:04 +00:00
Howard Hinnant
c36bfc499b
Doug Gregor pointed out some problems with debug mode enabled in one TU and not another. This patch helps detect those situations and offers improved error messages to help get debug mode enabled in more TU's when it is absolutely necessary to do so. Thanks Doug.
...
llvm-svn: 139933
2011-09-16 19:52:23 +00:00
Howard Hinnant
0695db06d7
The vector test suite now passes for no-debug, debug-lite and debug-regular
...
llvm-svn: 139930
2011-09-16 18:41:29 +00:00
Howard Hinnant
cec9af9ead
Create multilevel debug mode
...
llvm-svn: 139913
2011-09-16 17:29:17 +00:00
Howard Hinnant
f554add54e
Initial checkin for debug mode (version 2)
...
llvm-svn: 139711
2011-09-14 18:33:51 +00:00
Howard Hinnant
55f2a50994
Address PR10909: http://llvm.org/bugs/show_bug.cgi?id=10909
...
llvm-svn: 139493
2011-09-12 14:15:45 +00:00
Howard Hinnant
8668139f36
Fix const correctness bug in __move_assign. Found and fixed by Ion Gaztañaga.
...
llvm-svn: 139032
2011-09-02 20:42:31 +00:00
Howard Hinnant
5d7a6f31f7
Up version number by 1. This is a 'minor version' update.
...
llvm-svn: 138978
2011-09-01 23:13:01 +00:00
Howard Hinnant
00d8c245b2
Reimplemented much of <istream> such that single character extractions do not check to see if this is the last character in the stream and thus never set eofbit. This fixes http://llvm.org/bugs/show_bug.cgi?id=10817 . This fix requires a recompiled libc++.dylib to be fully implemented. The recompiled libc++.dylib is ABI compatible with that shipped on Lion.
...
llvm-svn: 138961
2011-09-01 21:02:45 +00:00
Howard Hinnant
b1e3e0e59e
__split_buffer should only require default constructible. Bug found and fixed by Jared Hoberock
...
llvm-svn: 138726
2011-08-28 15:21:29 +00:00
Dave Zarzycki
6137b627ab
Merge the Apple branch into trunk
...
We will eventually rebranch for the next Apple release and when we do, we don't want to drop changes.
llvm-svn: 137940
2011-08-18 15:53:00 +00:00
Howard Hinnant
e41124ade1
Don't move assign string::allocator_type when propagate_on_container_move_assignment is false.
...
llvm-svn: 137862
2011-08-17 20:36:18 +00:00
Howard Hinnant
052fd9349f
Fix needle-in-haystack bug found by Walter Brown
...
llvm-svn: 137617
2011-08-15 17:22:22 +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
eaaf7f26df
Correct misspelling:_LIBCPP_APPLE_STABLE_ABI -> _LIBCPP_STABLE_APPLE_ABI
...
llvm-svn: 136597
2011-07-31 17:16:32 +00:00
Howard Hinnant
2425d53cd8
Change how _LIBCPP_HAS_NO_ADVANCED_SFINAE gets set.
...
llvm-svn: 136596
2011-07-31 17:10:44 +00:00
Howard Hinnant
f622b58c83
Fixed PR10507 ( http://llvm.org/bugs/show_bug.cgi?id=10507 )
...
llvm-svn: 136595
2011-07-31 17:04:30 +00:00
Chandler Carruth
8fd6dc0df3
Revert r136547, r136545, and r136542 by removing slist.
...
This was checked in without review. It is not clear its reasonable to
include with libc++ at all, and needs discussion at a highlevel before
moving forward.
It's also completely lacking tests, and included several bugs in the
implementation.
llvm-svn: 136577
2011-07-30 21:10:18 +00:00
Chandler Carruth
aa41ea2cc1
Revert r136546, which was submitted without review.
...
Original change:
Destruct elements of hash tables when removing individual entries from
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136576
2011-07-30 21:10:16 +00:00
Alexis Hunt
bf78786db0
Add the missing default argument for the allocator and use a cleaner
...
implementation of previous().
llvm-svn: 136547
2011-07-30 00:47:53 +00:00
Alexis Hunt
9663c8cb15
Destruct elements of hash tables when removing individual entries from
...
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136546
2011-07-30 00:18:12 +00:00
Alexis Hunt
241bf43919
Oops. That last commit was from an earlier revision of the file and was
...
more than just a bit broken. This one should compile and run without
infinite loops.
llvm-svn: 136545
2011-07-30 00:06:52 +00:00
Alexis Hunt
1e846797dd
Include an "implementation" if SGI's slist. This was quickly hacked
...
together to get it working with code, and is neither optimal
(erase(Iterator, Iterator) calculates the previous iterator twice,
rather than calculating the previous iterator of the first one, then
advancing it until the second is found) nor complete (splice() was not
implemented). Most of the implementation is borrowed from forward_list
via using-declarations.
llvm-svn: 136542
2011-07-29 23:42:36 +00:00
Alexis Hunt
8324378195
Explicitly invoke the size_type specialization of max and min. This
...
avoids bugs where, when the allocator's size_type was smaller than int,
the multiplication or division would cause integral promotions and, with
two different integer types as arguments, deduction of the template
arguments would fail.
llvm-svn: 136540
2011-07-29 23:31:58 +00:00
Alexis Hunt
8d2ed56644
Add a new hash class in __gnu_ext for the extension containers. There
...
are two motivations for this.
First, this allows users who are specializing __gnu_ext::hash to
continue doing so without changing their code.
Second, SGI specifies hash overloads for char* and const char* that
perform a hash of the string, not of the pointer.
In order to support this, the hashing code for string is factored out.
llvm-svn: 136539
2011-07-29 23:31:56 +00:00
Alexis Hunt
fe473ae277
Add two missing members from the extension hash containers. The first is
...
the type name 'data_type', which is specified by the SGI spec as being
the correct type name for the mapped type. The second is an overload of
insert found in standard containers, taking an iterator as a 'hint'
(which we ignore in the standard containers as well). libstdc++'s
implementation includes these overloads, and they are needed to make
insert_iterator work (which I suspect is the real motivation for
including them in the standard containers).
The motivation for including these overloads of insert and leaving the
mapped_type typedef is to make it easier for clients to migrate to the
standard containers.
llvm-svn: 136538
2011-07-29 23:31:53 +00:00
Howard Hinnant
89bdcd7ef5
Configure to get along with 2.9 clang
...
llvm-svn: 136526
2011-07-29 21:35:53 +00:00
Howard Hinnant
f4a797e3d2
Optimizing valarray::operator=(some-valarray-expression)
...
llvm-svn: 136291
2011-07-27 23:19:59 +00:00
Howard Hinnant
02364191d6
Fix PR10509: http://llvm.org/bugs/show_bug.cgi?id=10509
...
llvm-svn: 136247
2011-07-27 19:25:28 +00:00