598f702b04 
								
							 
						 
						
							
							
								
								Change emplace for vector and deque to create the temporary (when necessary) before any changes to the container are made.  Nikolay Ivchenkov deserves the credit for pushing this problem and the solution for it.  
							
							... 
							
							
							
							llvm-svn: 159918 
							
						 
						
							2012-07-08 23:23:04 +00:00  
				
					
						
							
							
								 
						
							
								c0937e8add 
								
							 
						 
						
							
							
								
								Appy constexpr to <memory>.  Picked up a few missing noexcepts as well.  
							
							... 
							
							
							
							llvm-svn: 159902 
							
						 
						
							2012-07-07 20:56:04 +00:00  
				
					
						
							
							
								 
						
							
								bfa7990b5a 
								
							 
						 
						
							
							
								
								Apply constexpr to the mutex constructor.  As a conforming extension, apply constexpr to the condition_variable constructor.  These are important because it enables the compiler to construct these types at compile time, even though the object will be non-const.  Since they are constructed at compile time, there is no chance of a data race before they are constructed.  
							
							... 
							
							
							
							llvm-svn: 159901 
							
						 
						
							2012-07-07 20:01:52 +00:00  
				
					
						
							
							
								 
						
							
								eeac9fcfb7 
								
							 
						 
						
							
							
								
								Apply constexpr to <bitset>.  
							
							... 
							
							
							
							llvm-svn: 159899 
							
						 
						
							2012-07-07 17:04:52 +00:00  
				
					
						
							
							
								 
						
							
								8a9ee14803 
								
							 
						 
						
							
							
								
								Apply noexcept to tuple.  
							
							... 
							
							
							
							llvm-svn: 159865 
							
						 
						
							2012-07-06 21:53:48 +00:00  
				
					
						
							
							
								 
						
							
								a0f4c45c38 
								
							 
						 
						
							
							
								
								As a conforming extension give tuple a noexcept default constructor conditionalized on its held types.  
							
							... 
							
							
							
							llvm-svn: 159858 
							
						 
						
							2012-07-06 20:50:27 +00:00  
				
					
						
							
							
								 
						
							
								a62ebe043e 
								
							 
						 
						
							
							
								
								Give tuple a constexpr default constructor.  
							
							... 
							
							
							
							llvm-svn: 159857 
							
						 
						
							2012-07-06 20:39:45 +00:00  
				
					
						
							
							
								 
						
							
								9d6d1c6860 
								
							 
						 
						
							
							
								
								Apply noexcept to those functions implemented in <cstdlib> as a conforming extension.  
							
							... 
							
							
							
							llvm-svn: 159850 
							
						 
						
							2012-07-06 19:16:56 +00:00  
				
					
						
							
							
								 
						
							
								9c14b75a37 
								
							 
						 
						
							
							
								
								Apply noexcept to those functions implemented in <cmath> as a conforming extension.  
							
							... 
							
							
							
							llvm-svn: 159849 
							
						 
						
							2012-07-06 19:13:50 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								6317bfb26a 
								
							 
						 
						
							
							
								
								mark operator new(std::nothrow) as noalias (aka __attribute__((malloc))  
							
							... 
							
							
							
							llvm-svn: 159359 
							
						 
						
							2012-06-28 16:47:34 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								4c0de496a0 
								
							 
						 
						
							
							
								
								Fix dangling else clause.  Bug found and fixed by Dimitry Andric.  
							
							... 
							
							
							
							llvm-svn: 157779 
							
						 
						
							2012-05-31 23:12:03 +00:00  
				
					
						
							
							
								 
						
							
								78b4015c1c 
								
							 
						 
						
							
							
								
								Fix the new _ALIGNAS_TYPE per instructions supplied by Eli Friedman.  
							
							... 
							
							
							
							llvm-svn: 157765 
							
						 
						
							2012-05-31 20:14:00 +00:00  
				
					
						
							
							
								 
						
							
								bf33f5b292 
								
							 
						 
						
							
							
								
								Protect use of alignas against older versions of clang  
							
							... 
							
							
							
							llvm-svn: 157764 
							
						 
						
							2012-05-31 19:31:14 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a960edd203 
								
							 
						 
						
							
							
								
								Fix memory corruption bug found and fixed by Andrew C. Morrow.  
							
							... 
							
							
							
							llvm-svn: 157476 
							
						 
						
							2012-05-25 15:55:46 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a336f5e645 
								
							 
						 
						
							
							
								
								Revert my _LIBCPP_INLINE_VISIBILITY changes, r157097 and r157107  
							
							... 
							
							
							
							llvm-svn: 157108 
							
						 
						
							2012-05-19 07:14:17 +00:00  
				
					
						
							
							
								 
						
							
								a1b6937dba 
								
							 
						 
						
							
							
								
								valarray resize should not be _LIBCPP_INLINE_VISIBILITY  
							
							... 
							
							
							
							llvm-svn: 157107 
							
						 
						
							2012-05-19 07:01:14 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								423a8d7733 
								
							 
						 
						
							
							
								
								Fix several bugs in find/count specialized for bits.  
							
							... 
							
							
							
							llvm-svn: 156546 
							
						 
						
							2012-05-10 14:55:00 +00:00  
				
					
						
							
							
								 
						
							
								19d9cbfb39 
								
							 
						 
						
							
							
								
								Add friends __count_bool_true and __count_bool_false to __bit_iterator.  
							
							... 
							
							
							
							llvm-svn: 156543 
							
						 
						
							2012-05-10 14:01:40 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d01320c200 
								
							 
						 
						
							
							
								
								Apply noexcept and constexpr to <atomic>.  
							
							... 
							
							
							
							llvm-svn: 154526 
							
						 
						
							2012-04-11 20:14:21 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c5d5a98815 
								
							 
						 
						
							
							
								
								Fix use of __atomic_is_lock_free() intrinsic.  
							
							... 
							
							
							
							llvm-svn: 154093 
							
						 
						
							2012-04-05 13:13:24 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								b2e9f19caf 
								
							 
						 
						
							
							
								
								constexpr support for <utility>.  Patch contributed by Jonathan Sauer.  
							
							... 
							
							
							
							llvm-svn: 153968 
							
						 
						
							2012-04-03 21:09:48 +00:00  
				
					
						
							
							
								 
						
							
								e386b7b360 
								
							 
						 
						
							
							
								
								Update <random> with constexpr support.  Patch contributed by Jonathan Sauer.  
							
							... 
							
							
							
							llvm-svn: 153896 
							
						 
						
							2012-04-02 21:00:45 +00:00  
				
					
						
							
							
								 
						
							
								338eb3116c 
								
							 
						 
						
							
							
								
								Update <limits> with constexpr support.  Patch contributed by Jonathan Sauer.  
							
							... 
							
							
							
							llvm-svn: 153888 
							
						 
						
							2012-04-02 19:23:15 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								5f13d66fb4 
								
							 
						 
						
							
							
								
								Make sure [at_]quick_exit is in std::  
							
							... 
							
							
							
							llvm-svn: 152717 
							
						 
						
							2012-03-14 14:10:37 +00:00  
				
					
						
							
							
								 
						
							
								9c95b19f9e 
								
							 
						 
						
							
							
								
								Fix moneypunct_byname algorithm to more accurately represent C locales in C++.  
							
							... 
							
							
							
							llvm-svn: 152501 
							
						 
						
							2012-03-10 18:31:43 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								40d7a8acff 
								
							 
						 
						
							
							
								
								Remove a spurious #ifdef / #endif pair with nothing between them.  
							
							... 
							
							
							
							llvm-svn: 151729 
							
						 
						
							2012-02-29 16:22:33 +00:00  
				
					
						
							
							
								 
						
							
								06af2bbb04 
								
							 
						 
						
							
							
								
								Add support files required for building on Solaris.  
							
							... 
							
							
							
							llvm-svn: 151721 
							
						 
						
							2012-02-29 13:17:28 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a4fd70ea77 
								
							 
						 
						
							
							
								
								Add missing newlines at EOF.  
							
							... 
							
							
							
							llvm-svn: 150965 
							
						 
						
							2012-02-20 16:56:13 +00:00  
				
					
						
							
							
								 
						
							
								2a9a072485 
								
							 
						 
						
							
							
								
								Give the emulated nullptr_t a default constructor.  
							
							... 
							
							
							
							llvm-svn: 150893 
							
						 
						
							2012-02-18 22:01:22 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								9741d6c96e 
								
							 
						 
						
							
							
								
								Implement a few optimizations for vector push_back and insert.  Fixes r10828365.  
							
							... 
							
							
							
							llvm-svn: 150542 
							
						 
						
							2012-02-15 00:41:34 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c37917f309 
								
							 
						 
						
							
							
								
								Fix  http://llvm.org/bugs/show_bug.cgi?id=11752  
							
							... 
							
							
							
							llvm-svn: 148069 
							
						 
						
							2012-01-12 23:37:51 +00:00  
				
					
						
							
							
								 
						
							
								a04d2b3330 
								
							 
						 
						
							
							
								
								Fix  http://llvm.org/bugs/show_bug.cgi?id=11734  
							
							... 
							
							
							
							llvm-svn: 147853 
							
						 
						
							2012-01-10 15:15:47 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a87b5e3446 
								
							 
						 
						
							
							
								
								Fix  http://llvm.org/bugs/show_bug.cgi?id=11616  
							
							... 
							
							
							
							llvm-svn: 146881 
							
						 
						
							2011-12-19 17:58:44 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								53d2fb0aa2 
								
							 
						 
						
							
							
								
								Installation of CityHash by Craig Silverstein  
							
							... 
							
							
							
							llvm-svn: 146329 
							
						 
						
							2011-12-10 20:28:56 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a5bc2f877f 
								
							 
						 
						
							
							
								
								Jean-Daniel: __builtin_popcountll support for Windows  
							
							... 
							
							
							
							llvm-svn: 145684 
							
						 
						
							2011-12-02 17:22:38 +00:00  
				
					
						
							
							
								 
						
							
								c206366fd7 
								
							 
						 
						
							
							
								
								Quash a whole bunch of warnings  
							
							... 
							
							
							
							llvm-svn: 145624 
							
						 
						
							2011-12-01 20:21:04 +00:00  
				
					
						
							
							
								 
						
							
								c003db1fca 
								
							 
						 
						
							
							
								
								Further macro protection by replacing _[A-Z] with _[A-Z]p  
							
							... 
							
							
							
							llvm-svn: 145410 
							
						 
						
							2011-11-29 18:15:50 +00:00  
				
					
						
							
							
								 
						
							
								ab4f438239 
								
							 
						 
						
							
							
								
								Add protection from min/max macros  
							
							... 
							
							
							
							llvm-svn: 145407 
							
						 
						
							2011-11-29 16:45:27 +00:00  
				
					
						
							
							
								 
						
							
								1c2c87c502 
								
							 
						 
						
							
							
								
								Remove redundant iterator assignment detected by Marshall Clow  
							
							... 
							
							
							
							llvm-svn: 145265 
							
						 
						
							2011-11-28 19:49:26 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								05e485879c 
								
							 
						 
						
							
							
								
								Fix ratio arithmetic with zero  
							
							... 
							
							
							
							llvm-svn: 143519 
							
						 
						
							2011-11-01 23:13:37 +00:00  
				
					
						
							
							
								 
						
							
								9563a09cee 
								
							 
						 
						
							
							
								
								Windows port work by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 143105 
							
						 
						
							2011-10-27 16:24:42 +00:00  
				
					
						
							
							
								 
						
							
								0176bc6cf5 
								
							 
						 
						
							
							
								
								Fixed bug in __independent_bits_engine found by Nick (from stackoverflow)  
							
							... 
							
							
							
							llvm-svn: 143104 
							
						 
						
							2011-10-27 16:12:10 +00:00  
				
					
						
							
							
								 
						
							
								e4383379ae 
								
							 
						 
						
							
							
								
								More windows port work by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 142732 
							
						 
						
							2011-10-22 20:59:45 +00:00  
				
					
						
							
							
								 
						
							
								8bece6fe69 
								
							 
						 
						
							
							
								
								Windows port work by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 142578 
							
						 
						
							2011-10-20 12:49:21 +00:00  
				
					
						
							
							
								 
						
							
								a892966218 
								
							 
						 
						
							
							
								
								de-tabbify  
							
							... 
							
							
							
							llvm-svn: 142237 
							
						 
						
							2011-10-17 20:08:59 +00:00  
				
					
						
							
							
								 
						
							
								073458b1ab 
								
							 
						 
						
							
							
								
								Windows support by Ruben Van Boxem.  
							
							... 
							
							
							
							llvm-svn: 142235 
							
						 
						
							2011-10-17 20:05:10 +00:00  
				
					
						
							
							
								 
						
							
								7ba930bfca 
								
							 
						 
						
							
							
								
								Fix  http://llvm.org/bugs/show_bug.cgi?id=11113  
							
							... 
							
							
							
							llvm-svn: 141714 
							
						 
						
							2011-10-11 21:28:38 +00:00  
				
					
						
							
							
								 
						
							
								a33d4bc1ff 
								
							 
						 
						
							
							
								
								Starting on musl port by Arvid Picciani  
							
							... 
							
							
							
							llvm-svn: 141672 
							
						 
						
							2011-10-11 16:00:46 +00:00  
				
					
						
							
							
								 
						
							
								1ed7df111b 
								
							 
						 
						
							
							
								
								Fix <rdar://problem/10256836> getline of an empty string mistakenly causes failure  
							
							... 
							
							
							
							llvm-svn: 141506 
							
						 
						
							2011-10-09 15:20:46 +00:00  
				
					
						
							
							
								 
						
							
								2a4812fd04 
								
							 
						 
						
							
							
								
								Fix <rdar://problem/10255403> match_results::begin() is off by one  
							
							... 
							
							
							
							llvm-svn: 141494 
							
						 
						
							2011-10-08 14:36:16 +00:00  
				
					
						
							
							
								 
						
							
								1e31e53fe1 
								
							 
						 
						
							
							
								
								Fix <rdar://problem/10226704>  
							
							... 
							
							
							
							llvm-svn: 141054 
							
						 
						
							2011-10-04 01:25:20 +00:00  
				
					
						
							
							
								 
						
							
								2c0a65ee78 
								
							 
						 
						
							
							
								
								Fix <rdar://problem/10217868>.  
							
							... 
							
							
							
							llvm-svn: 140907 
							
						 
						
							2011-10-01 00:26:36 +00:00  
				
					
						
							
							
								 
						
							
								8909cdfff9 
								
							 
						 
						
							
							
								
								Windows port work by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 140805 
							
						 
						
							2011-09-29 20:33:10 +00:00  
				
					
						
							
							
								 
						
							
								0c06e58fae 
								
							 
						 
						
							
							
								
								Windows patch work by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 140781 
							
						 
						
							2011-09-29 13:33:15 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								3438889dec 
								
							 
						 
						
							
							
								
								Work on Windows port by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 140728 
							
						 
						
							2011-09-28 21:39:20 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								dbe8111948 
								
							 
						 
						
							
							
								
								Work on Windows port by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 140384 
							
						 
						
							2011-09-23 16:11:27 +00:00  
				
					
						
							
							
								 
						
							
								3c78ca07bc 
								
							 
						 
						
							
							
								
								Partial Windows port by Ruben Van Boxem  
							
							... 
							
							
							
							llvm-svn: 140328 
							
						 
						
							2011-09-22 19:10:18 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								cdcfbf26dc 
								
							 
						 
						
							
							
								
								Removed unneeded boost implementation of is_base_of  
							
							... 
							
							
							
							llvm-svn: 140014 
							
						 
						
							2011-09-19 13:19:31 +00:00  
				
					
						
							
							
								 
						
							
								0a0f599f2c 
								
							 
						 
						
							
							
								
								Enable __locale to work on FreeBSD.  
							
							... 
							
							
							
							llvm-svn: 140005 
							
						 
						
							2011-09-18 19:23:04 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								cec9af9ead 
								
							 
						 
						
							
							
								
								Create multilevel debug mode  
							
							... 
							
							
							
							llvm-svn: 139913 
							
						 
						
							2011-09-16 17:29:17 +00:00  
				
					
						
							
							
								 
						
							
								f554add54e 
								
							 
						 
						
							
							
								
								Initial checkin for debug mode (version 2)  
							
							... 
							
							
							
							llvm-svn: 139711 
							
						 
						
							2011-09-14 18:33:51 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								5d7a6f31f7 
								
							 
						 
						
							
							
								
								Up version number by 1.  This is a 'minor version' update.  
							
							... 
							
							
							
							llvm-svn: 138978 
							
						 
						
							2011-09-01 23:13:01 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								052fd9349f 
								
							 
						 
						
							
							
								
								Fix needle-in-haystack bug found by Walter Brown  
							
							... 
							
							
							
							llvm-svn: 137617 
							
						 
						
							2011-08-15 17:22:22 +00:00  
				
					
						
							
							
								 
						
							
								54976f2619 
								
							 
						 
						
							
							
								
								Fixed PR10574:  http://llvm.org/bugs/show_bug.cgi?id=10574  
							
							... 
							
							
							
							llvm-svn: 137522 
							
						 
						
							2011-08-12 21:56:02 +00:00  
				
					
						
							
							
								 
						
							
								2425d53cd8 
								
							 
						 
						
							
							
								
								Change how _LIBCPP_HAS_NO_ADVANCED_SFINAE gets set.  
							
							... 
							
							
							
							llvm-svn: 136596 
							
						 
						
							2011-07-31 17:10:44 +00:00  
				
					
						
							
							
								 
						
							
								f622b58c83 
								
							 
						 
						
							
							
								
								Fixed PR10507 ( http://llvm.org/bugs/show_bug.cgi?id=10507 )  
							
							... 
							
							
							
							llvm-svn: 136595 
							
						 
						
							2011-07-31 17:04:30 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								89bdcd7ef5 
								
							 
						 
						
							
							
								
								Configure to get along with 2.9 clang  
							
							... 
							
							
							
							llvm-svn: 136526 
							
						 
						
							2011-07-29 21:35:53 +00:00  
				
					
						
							
							
								 
						
							
								f4a797e3d2 
								
							 
						 
						
							
							
								
								Optimizing valarray::operator=(some-valarray-expression)  
							
							... 
							
							
							
							llvm-svn: 136291 
							
						 
						
							2011-07-27 23:19:59 +00:00  
				
					
						
							
							
								 
						
							
								02364191d6 
								
							 
						 
						
							
							
								
								Fix PR10509:  http://llvm.org/bugs/show_bug.cgi?id=10509  
							
							... 
							
							
							
							llvm-svn: 136247 
							
						 
						
							2011-07-27 19:25:28 +00:00  
				
					
						
							
							
								 
						
							
								21f78d88e1 
								
							 
						 
						
							
							
								
								Fix PR10510:  http://llvm.org/bugs/show_bug.cgi?id=10510  
							
							... 
							
							
							
							llvm-svn: 136232 
							
						 
						
							2011-07-27 18:34:06 +00:00  
				
					
						
							
							
								 
						
							
								1dba445e43 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10469  
							
							... 
							
							
							
							llvm-svn: 135897 
							
						 
						
							2011-07-24 23:59:50 +00:00  
				
					
						
							
							
								 
						
							
								520a61383c 
								
							 
						 
						
							
							
								
								Optimization of string::operator< by M.E. O'Neill.  Discussion in  http://llvm.org/bugs/show_bug.cgi?id=10461  
							
							... 
							
							
							
							llvm-svn: 135893 
							
						 
						
							2011-07-24 21:45:06 +00:00  
				
					
						
							
							
								 
						
							
								5b0bdc2043 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10461  
							
							... 
							
							
							
							llvm-svn: 135873 
							
						 
						
							2011-07-24 15:07:21 +00:00  
				
					
						
							
							
								 
						
							
								7e6ca972c9 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10455  
							
							... 
							
							
							
							llvm-svn: 135854 
							
						 
						
							2011-07-23 16:14:35 +00:00  
				
					
						
							
							
								 
						
							
								397d787642 
								
							 
						 
						
							
							
								
								Given that __underlying_type is now available in clang, implement  
							
							... 
							
							
							
							std::underlying_type.
llvm-svn: 135410 
							
						 
						
							2011-07-18 18:37:21 +00:00  
				
					
						
							
							
								 
						
							
								e3163f5ae3 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10390  
							
							... 
							
							
							
							llvm-svn: 135393 
							
						 
						
							2011-07-18 15:51:59 +00:00  
				
					
						
							
							
								 
						
							
								8ebf07a3de 
								
							 
						 
						
							
							
								
								Revert locale for apple back to original design, getting rid of now useless helper *_l functions  
							
							... 
							
							
							
							llvm-svn: 135272 
							
						 
						
							2011-07-15 14:46:11 +00:00  
				
					
						
							
							
								 
						
							
								3b13c94a14 
								
							 
						 
						
							
							
								
								_LIBCXX_STABLE_APPLE_ABI -> _LIBCPP_STABLE_APPLE_ABI  
							
							... 
							
							
							
							llvm-svn: 135271 
							
						 
						
							2011-07-15 14:25:40 +00:00  
				
					
						
							
							
								 
						
							
								4084c9ebe5 
								
							 
						 
						
							
							
								
								Reapply 135035 with proper conditional inclusion, hopefully solving  
							
							... 
							
							
							
							issues with it.
llvm-svn: 135246 
							
						 
						
							2011-07-15 05:40:33 +00:00  
				
					
						
							
							
								 
						
							
								88410049fa 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10346  
							
							... 
							
							
							
							llvm-svn: 135045 
							
						 
						
							2011-07-13 16:00:50 +00:00  
				
					
						
							
							
								 
						
							
								f6b7e20bc8 
								
							 
						 
						
							
							
								
								Reverted to 134947.  Once I got into it, I discovered there were too many problems to fix in 135035.  
							
							... 
							
							
							
							llvm-svn: 135044 
							
						 
						
							2011-07-13 15:48:16 +00:00  
				
					
						
							
							
								 
						
							
								8a02a632be 
								
							 
						 
						
							
							
								
								Implement the __nolocale functions properly so that they will work on  
							
							... 
							
							
							
							all platforms. Unfortunately a lot of this remains conditionally
compiled so as not to break Apple's ABI.
The new _LIBCPP_LOCALE__L_EXTENSIONS macro can be defined on other
platforms that support _l suffixes for all functions in order to use
them.
llvm-svn: 135035 
							
						 
						
							2011-07-13 06:40:50 +00:00  
				
					
						
							
							
								 
						
							
								8dfec1ac7d 
								
							 
						 
						
							
							
								
								Make sure that __time_put constructors properly on non-Apple platforms.  
							
							... 
							
							
							
							llvm-svn: 134947 
							
						 
						
							2011-07-12 00:55:04 +00:00  
				
					
						
							
							
								 
						
							
								7ae42ef0bf 
								
							 
						 
						
							
							
								
								Make vector<bool>::reference and const_reference public  
							
							... 
							
							
							
							llvm-svn: 134815 
							
						 
						
							2011-07-09 15:50:42 +00:00  
				
					
						
							
							
								 
						
							
								0081892d33 
								
							 
						 
						
							
							
								
								Don't assume that wctype produces a nice mask on all platforms. On  
							
							... 
							
							
							
							glibc, for instance, it's a const char *.
llvm-svn: 134787 
							
						 
						
							2011-07-09 03:40:04 +00:00  
				
					
						
							
							
								 
						
							
								f023519770 
								
							 
						 
						
							
							
								
								Conditionally wrap the changes from r134781.  
							
							... 
							
							
							
							llvm-svn: 134783 
							
						 
						
							2011-07-09 01:09:31 +00:00  
				
					
						
							
							
								 
						
							
								3f60bca9e9 
								
							 
						 
						
							
							
								
								Implement generalized table lookups for upper, lower, and character  
							
							... 
							
							
							
							traits.
To the best of my knowledge, this will not break the ABI for Apple.
However, it does introduce three publicly visible (although with
reserved name) functions that will fail to link against the just-shipped
Apple version of libc++. Since they are not used in any inline
functions, no actual breakage should occur.
If Howard doesn't want to put undefined functions (even internal ones)
into a header, they could be surrounded by additional conditional
compilation.
llvm-svn: 134781 
							
						 
						
							2011-07-09 00:56:23 +00:00  
				
					
						
							
							
								 
						
							
								11af28bdbd 
								
							 
						 
						
							
							
								
								Fixing up some ABI issues  
							
							... 
							
							
							
							llvm-svn: 134639 
							
						 
						
							2011-07-07 21:03:52 +00:00  
				
					
						
							
							
								 
						
							
								1f8da84b76 
								
							 
						 
						
							
							
								
								Fix uninitialized loop counter.  http://llvm.org/bugs/show_bug.cgi?id=10278  
							
							... 
							
							
							
							llvm-svn: 134405 
							
						 
						
							2011-07-05 14:14:17 +00:00  
				
					
						
							
							
								 
						
							
								a77445621b 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10248  
							
							... 
							
							
							
							llvm-svn: 134327 
							
						 
						
							2011-07-02 20:33:23 +00:00  
				
					
						
							
							
								 
						
							
								086d0de171 
								
							 
						 
						
							
							
								
								http://llvm.org/bugs/show_bug.cgi?id=10250  
							
							... 
							
							
							
							llvm-svn: 134325 
							
						 
						
							2011-07-02 18:22:36 +00:00  
				
					
						
							
							
								 
						
							
								b929de3c3d 
								
							 
						 
						
							
							
								
								Changed constraints on pair and tuple constructors from is_convertible to is_constructible.  
							
							... 
							
							
							
							llvm-svn: 134252 
							
						 
						
							2011-07-01 20:12:51 +00:00  
				
					
						
							
							
								 
						
							
								5a33687da0 
								
							 
						 
						
							
							
								
								Correct for new rules regarding implicitly deleted special members.  http://llvm.org/bugs/show_bug.cgi?id=10191  
							
							... 
							
							
							
							llvm-svn: 134248 
							
						 
						
							2011-07-01 19:24:36 +00:00  
				
					
						
							
							
								 
						
							
								ce48a1137d 
								
							 
						 
						
							
							
								
								_STD -> _VSTD to avoid macro clash on windows  
							
							... 
							
							
							
							llvm-svn: 134190 
							
						 
						
							2011-06-30 21:18:19 +00:00  
				
					
						
							
							
								 
						
							
								64ec101eb6 
								
							 
						 
						
							
							
								
								Teach libc++ about the addressof() overloads it needs to work with  
							
							... 
							
							
							
							Objective-C Automatic Reference Counting, where Objective-C object
pointers can have several different qualifiers (__strong, __weak,
__autoreleasing, __unsafe_unretained). These addressof() overloads are
only provided in ARC mode, and the __weak variant is conditionalized
on having weak-reference support in the ARC runtime.
For historical reasons, Clang provides these definitions itself, and
defines the macro _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF to note when
it as done so. The code belongs here, and this redundancy will be
eliminated in the future.
Addresses <rdar://problem/9658274>.
llvm-svn: 133656 
							
						 
						
							2011-06-22 22:17:44 +00:00  
				
					
						
							
							
								 
						
							
								a945a32981 
								
							 
						 
						
							
							
								
								More fixes:  One of my fixes to type_traits earlier today was incorrect, so that is reverted.  Recently clang appears to have tightened up its definition of is_convertible and that has caused some failures in [unordered_][multi]map.  I've switched to using is_constructible to restablish the desired functionality in [unordered_][multi]map.  Specifically, inserting rvalues of move-only types for the keys.  
							
							... 
							
							
							
							llvm-svn: 133402 
							
						 
						
							2011-06-19 21:45:00 +00:00  
				
					
						
							
							
								 
						
							
								2d62821f98 
								
							 
						 
						
							
							
								
								Miscellaneous minor fixes in <type_traits>  
							
							... 
							
							
							
							llvm-svn: 133401 
							
						 
						
							2011-06-19 19:12:59 +00:00  
				
					
						
							
							
								 
						
							
								ce53420e37 
								
							 
						 
						
							
							
								
								Provide names for template and function parameters in forward declarations.  The purpose is to aid automated documentation tools.  
							
							... 
							
							
							
							llvm-svn: 133008 
							
						 
						
							2011-06-14 19:58:17 +00:00  
				
					
						
							
							
								 
						
							
								32208bde75 
								
							 
						 
						
							
							
								
								Move nullptr_t to unversioned namespace:  Sean Hunt  
							
							... 
							
							
							
							llvm-svn: 132665 
							
						 
						
							2011-06-05 13:00:46 +00:00  
				
					
						
							
							
								 
						
							
								bd0c160078 
								
							 
						 
						
							
							
								
								noexcept for <stack>.  This completes noexcept for Chapter 23 [containers].  
							
							... 
							
							
							
							llvm-svn: 132652 
							
						 
						
							2011-06-04 22:09:19 +00:00  
				
					
						
							
							
								 
						
							
								6971d82668 
								
							 
						 
						
							
							
								
								noexcept for <queue>.  
							
							... 
							
							
							
							llvm-svn: 132650 
							
						 
						
							2011-06-04 21:32:33 +00:00  
				
					
						
							
							
								 
						
							
								557da866a3 
								
							 
						 
						
							
							
								
								noexcept for <unordered_set>.  
							
							... 
							
							
							
							llvm-svn: 132647 
							
						 
						
							2011-06-04 20:18:37 +00:00  
				
					
						
							
							
								 
						
							
								3714107ed6 
								
							 
						 
						
							
							
								
								noexcept for <unordered_map>.  
							
							... 
							
							
							
							llvm-svn: 132646 
							
						 
						
							2011-06-04 18:54:24 +00:00  
				
					
						
							
							
								 
						
							
								e691351098 
								
							 
						 
						
							
							
								
								Made more implementation  details of [multi]map/set noexcept.  
							
							... 
							
							
							
							llvm-svn: 132642 
							
						 
						
							2011-06-04 17:10:24 +00:00  
				
					
						
							
							
								 
						
							
								0e9f71c13f 
								
							 
						 
						
							
							
								
								noexcept for <set>.  Plus a few fixes to noexcept for <map>.  
							
							... 
							
							
							
							llvm-svn: 132640 
							
						 
						
							2011-06-04 15:22:34 +00:00  
				
					
						
							
							
								 
						
							
								1052ee39cb 
								
							 
						 
						
							
							
								
								noexcept for <map>.  
							
							... 
							
							
							
							llvm-svn: 132639 
							
						 
						
							2011-06-04 14:31:57 +00:00  
				
					
						
							
							
								 
						
							
								3297ed7065 
								
							 
						 
						
							
							
								
								noexcept for <vector>.  This also includes installing move_if_noexcept() into vector.  
							
							... 
							
							
							
							llvm-svn: 132577 
							
						 
						
							2011-06-03 19:40:40 +00:00  
				
					
						
							
							
								 
						
							
								2d45a18c24 
								
							 
						 
						
							
							
								
								Bring noexcept for <string> inline with other containers.  
							
							... 
							
							
							
							llvm-svn: 132573 
							
						 
						
							2011-06-03 18:40:47 +00:00  
				
					
						
							
							
								 
						
							
								4590010473 
								
							 
						 
						
							
							
								
								noexcept for <list>.  
							
							... 
							
							
							
							llvm-svn: 132562 
							
						 
						
							2011-06-03 17:30:28 +00:00  
				
					
						
							
							
								 
						
							
								91a4750733 
								
							 
						 
						
							
							
								
								noexcept for <forward_list>.  
							
							... 
							
							
							
							llvm-svn: 132553 
							
						 
						
							2011-06-03 16:20:53 +00:00  
				
					
						
							
							
								 
						
							
								801291139c 
								
							 
						 
						
							
							
								
								After sleeping on it I've decided that all special members that can be noexcept, should be declared so.  The client has the traits to detect and branch on this information, and it is often an important optimization.  Give deque() a noexcept.  Add test for deque default constructor and deque destructor.  
							
							... 
							
							
							
							llvm-svn: 132549 
							
						 
						
							2011-06-03 15:16:49 +00:00  
				
					
						
							
							
								 
						
							
								b58f59cdb3 
								
							 
						 
						
							
							
								
								Second try at getting noexcept on move and swap for deque.  I changed std::alloctor to propagate_on_container_move_assignment so as to make deque<T> move assignment noexcept.  What we really need is a compile-time switch that says an allocator always compares equal.  
							
							... 
							
							
							
							llvm-svn: 132490 
							
						 
						
							2011-06-02 21:38:57 +00:00  
				
					
						
							
							
								 
						
							
								9eebe11dd5 
								
							 
						 
						
							
							
								
								I've become quite disatsified with the lack of noexcept specifications on container move construction, move assignment operator and swap.  Without proper decoration on at least move construction, vectors of containers will have unacceptable performance.  Here's the fix for deque.  
							
							... 
							
							
							
							llvm-svn: 132480 
							
						 
						
							2011-06-02 20:00:14 +00:00  
				
					
						
							
							
								 
						
							
								f9dc28313f 
								
							 
						 
						
							
							
								
								noexcept for forward_list.  
							
							... 
							
							
							
							llvm-svn: 132461 
							
						 
						
							2011-06-02 16:44:28 +00:00  
				
					
						
							
							
								 
						
							
								a87e836083 
								
							 
						 
						
							
							
								
								noexcept for deque.  
							
							... 
							
							
							
							llvm-svn: 132459 
							
						 
						
							2011-06-02 16:10:22 +00:00  
				
					
						
							
							
								 
						
							
								bc95cf0d5f 
								
							 
						 
						
							
							
								
								Experimental support for a meaningful __is_swappable<T>::value.  This does not appear to be strictly needed for correct functioning of the library.  If it causes any problems, I'd rather pull it sooner rather than later.  
							
							... 
							
							
							
							llvm-svn: 132421 
							
						 
						
							2011-06-01 19:59:32 +00:00  
				
					
						
							
							
								 
						
							
								e88f577da1 
								
							 
						 
						
							
							
								
								Turning on cxx_nullptr exposed a latent bug in is_function, causing nullptr to wrongly classify as a function.  Fixed.  
							
							... 
							
							
							
							llvm-svn: 132406 
							
						 
						
							2011-06-01 17:25:11 +00:00  
				
					
						
							
							
								 
						
							
								542b2507de 
								
							 
						 
						
							
							
								
								I've seen this question enough times to know that it should be fixed:  http://stackoverflow.com/questions/6193734/implicit-conversions-with-stdfunction  
							
							... 
							
							
							
							llvm-svn: 132363 
							
						 
						
							2011-05-31 21:45:26 +00:00  
				
					
						
							
							
								 
						
							
								8f0cd597f1 
								
							 
						 
						
							
							
								
								noexcept for <array>.  
							
							... 
							
							
							
							llvm-svn: 132359 
							
						 
						
							2011-05-31 21:06:33 +00:00  
				
					
						
							
							
								 
						
							
								e3c6708439 
								
							 
						 
						
							
							
								
								Upgrade <ratio> to use template aliases when available.  
							
							... 
							
							
							
							llvm-svn: 132342 
							
						 
						
							2011-05-31 16:55:36 +00:00  
				
					
						
							
							
								 
						
							
								b5d866d4a3 
								
							 
						 
						
							
							
								
								noexcept for Chapter 22 [localization].  
							
							... 
							
							
							
							llvm-svn: 132337 
							
						 
						
							2011-05-31 15:34:58 +00:00  
				
					
						
							
							
								 
						
							
								f5c91471a4 
								
							 
						 
						
							
							
								
								Add _ATTRIBUTE macro for gcc: Justin Hibbits  
							
							... 
							
							
							
							llvm-svn: 132334 
							
						 
						
							2011-05-31 13:13:49 +00:00  
				
					
						
							
							
								 
						
							
								76c7cd0e15 
								
							 
						 
						
							
							
								
								noexcept for Chapter 21 [strings].  
							
							... 
							
							
							
							llvm-svn: 132296 
							
						 
						
							2011-05-29 19:57:12 +00:00  
				
					
						
							
							
								 
						
							
								af152c8431 
								
							 
						 
						
							
							
								
								minor documentation update  
							
							... 
							
							
							
							llvm-svn: 132286 
							
						 
						
							2011-05-29 13:53:56 +00:00  
				
					
						
							
							
								 
						
							
								9e5c99f61f 
								
							 
						 
						
							
							
								
								noexcept for <typeindex>.  This completes Chapter 20 [utilities].  
							
							... 
							
							
							
							llvm-svn: 132267 
							
						 
						
							2011-05-28 18:57:24 +00:00  
				
					
						
							
							
								 
						
							
								cfd52789dc 
								
							 
						 
						
							
							
								
								noexcept for <scoped_allocator>.  
							
							... 
							
							
							
							llvm-svn: 132266 
							
						 
						
							2011-05-28 18:51:12 +00:00  
				
					
						
							
							
								 
						
							
								d53d81522d 
								
							 
						 
						
							
							
								
								noexcept for <chrono>.  
							
							... 
							
							
							
							llvm-svn: 132265 
							
						 
						
							2011-05-28 18:34:36 +00:00  
				
					
						
							
							
								 
						
							
								6a07d6f06d 
								
							 
						 
						
							
							
								
								noexcept for <functional>.  
							
							... 
							
							
							
							llvm-svn: 132264 
							
						 
						
							2011-05-28 17:59:48 +00:00  
				
					
						
							
							
								 
						
							
								3739fe79e5 
								
							 
						 
						
							
							
								
								noexcept for <memory>.  I've added a few extension noexcept to:  allocator_traits<A>::deallocate, allocaate<T>::deallocate, return_temporary_buffer, and default_delete<T>::operator()(T*) const.  My rationale was:  If a std-dicated noexcept function needs to call another std-defined function, that called function must be noexcept.  We're all a little new to noexcept, so things like this are to be expected.  Also included fix for broken __is_swappable trait pointed out by Marc Glisse, thanks Marc|.  And fixed a test case for is_nothrow_destructible.  Destructors are now noexcept by default|  
							
							... 
							
							
							
							llvm-svn: 132261 
							
						 
						
							2011-05-28 14:41:13 +00:00  
				
					
						
							
							
								 
						
							
								d368a84c91 
								
							 
						 
						
							
							
								
								noexcept for <bitset>.  
							
							... 
							
							
							
							llvm-svn: 132216 
							
						 
						
							2011-05-27 20:52:28 +00:00  
				
					
						
							
							
								 
						
							
								27d0a2a75d 
								
							 
						 
						
							
							
								
								noexcept for <tuple>.  And in the process learned that I had done it wrong for pair's swap.  I needed to create an __is_nothrow_swappable<T>::value trait that was smart enought to answer false when __is_swappable<T>::value is false.  Otherwise one gets compile-time errors when using pair or tuple of non-swappable types, even if you never try to swap the pair or tuple.  
							
							... 
							
							
							
							llvm-svn: 132204 
							
						 
						
							2011-05-27 19:08:18 +00:00  
				
					
						
							
							
								 
						
							
								a676f7d36a 
								
							 
						 
						
							
							
								
								noexcept for <utility>.  This included a little repair on pair, and some noexcept workarounds.  
							
							... 
							
							
							
							llvm-svn: 132186 
							
						 
						
							2011-05-27 15:04:19 +00:00