3ec1f00b73 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer pointers in custom allocators for vector.  
							
							... 
							
							
							
							llvm-svn: 185093 
							
						 
						
							2013-06-27 19:35:32 +00:00  
				
					
						
							
							
								 
						
							
								866d4efa7f 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer pointers in custom allocators for list.  
							
							... 
							
							
							
							llvm-svn: 184859 
							
						 
						
							2013-06-25 16:08:47 +00:00  
				
					
						
							
							
								 
						
							
								8a27ba8051 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer pointers in custom allocators for forward_list.  
							
							... 
							
							
							
							llvm-svn: 184759 
							
						 
						
							2013-06-24 17:17:28 +00:00  
				
					
						
							
							
								 
						
							
								c3f9c80894 
								
							 
						 
						
							
							
								
								Fix typo in assertion message.  Reported by Shriramana Sharma.  
							
							... 
							
							
							
							llvm-svn: 184691 
							
						 
						
							2013-06-24 06:15:57 +00:00  
				
					
						
							
							
								 
						
							
								14e200d14d 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer pointers in custom allocators for deque.  
							
							... 
							
							
							
							llvm-svn: 184673 
							
						 
						
							2013-06-23 21:17:24 +00:00  
				
					
						
							
							
								 
						
							
								307f814372 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer types in custom allocators.  This is for the unordered containers only.  This work still needs to be done on the sequence containers.  
							
							... 
							
							
							
							llvm-svn: 184635 
							
						 
						
							2013-06-22 15:21:29 +00:00  
				
					
						
							
							
								 
						
							
								07d3eccd26 
								
							 
						 
						
							
							
								
								Implement full support for non-pointer types in custom allocators.  This is for the associative containers only.  This work still needs to be done on the unordered and sequence containers.  Fixes  http://llvm.org/bugs/show_bug.cgi?id=15978  
							
							... 
							
							
							
							llvm-svn: 184358 
							
						 
						
							2013-06-19 21:29:40 +00:00  
				
					
						
							
							
								 
						
							
								30444adc70 
								
							 
						 
						
							
							
								
								Minor bug fix for allowing an extension of const-qualified types in containers.  
							
							... 
							
							
							
							llvm-svn: 183481 
							
						 
						
							2013-06-07 01:56:37 +00:00  
				
					
						
							
							
								 
						
							
								9d3ccc700f 
								
							 
						 
						
							
							
								
								Neglected to remove a debugging comment from last commit.  
							
							... 
							
							
							
							llvm-svn: 182422 
							
						 
						
							2013-05-21 21:19:35 +00:00  
				
					
						
							
							
								 
						
							
								849821cffb 
								
							 
						 
						
							
							
								
								Fix a couple of bugs in linear_congruential_engine::seed.  Regression test added.  
							
							... 
							
							
							
							llvm-svn: 182421 
							
						 
						
							2013-05-21 21:05:12 +00:00  
				
					
						
							
							
								 
						
							
								50544e7e65 
								
							 
						 
						
							
							
								
								Add NetBSD support.  
							
							... 
							
							
							
							llvm-svn: 182162 
							
						 
						
							2013-05-17 21:17:34 +00:00  
				
					
						
							
							
								 
						
							
								9daaf5775c 
								
							 
						 
						
							
							
								
								Glen:  This patch gets the string conversion functions working on Windows.  It also refactors repetitive code in string.cpp do greatly reduce the repetitiveness, increasing maintainability.  
							
							... 
							
							
							
							llvm-svn: 182026 
							
						 
						
							2013-05-16 17:13:40 +00:00  
				
					
						
							
							
								 
						
							
								0125ab809f 
								
							 
						 
						
							
							
								
								Remove cv qualifiers from member pointers in the __member_pointer_traits test.  This was causing a const-qualified bind result to malfunction.  This was a recent regression due to the new use of __member_pointer_traits in restricting the __invokable and __invoke_of tests.  
							
							... 
							
							
							
							llvm-svn: 181935 
							
						 
						
							2013-05-15 21:49:27 +00:00  
				
					
						
							
							
								 
						
							
								f13dbe4799 
								
							 
						 
						
							
							
								
								Fixing the MSan/compiler-rt build  
							
							... 
							
							
							
							Patch by Evgieniy Stepanov, review by İsmail Dönmez.
llvm-svn: 181740 
							
						 
						
							2013-05-13 21:53:44 +00:00  
				
					
						
							
							
								 
						
							
								9449989601 
								
							 
						 
						
							
							
								
								İsmail Dönmez: Enable quick_exit on linux.  
							
							... 
							
							
							
							llvm-svn: 181612 
							
						 
						
							2013-05-10 17:36:59 +00:00  
				
					
						
							
							
								 
						
							
								fce85ba455 
								
							 
						 
						
							
							
								
								Fix incorrect type usage; nice catch by Sebastian  
							
							... 
							
							
							
							llvm-svn: 181569 
							
						 
						
							2013-05-10 00:16:10 +00:00  
				
					
						
							
							
								 
						
							
								0b0bbd2f22 
								
							 
						 
						
							
							
								
								Implement n3607: 'equal', 'mismatch', and 'is_permutation'  
							
							... 
							
							
							
							llvm-svn: 181548 
							
						 
						
							2013-05-09 21:14:23 +00:00  
				
					
						
							
							
								 
						
							
								266abefed0 
								
							 
						 
						
							
							
								
								Put a 1-character unget buffer into cin.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15867  
							
							... 
							
							
							
							llvm-svn: 181470 
							
						 
						
							2013-05-08 21:18:42 +00:00  
				
					
						
							
							
								 
						
							
								866ed94db1 
								
							 
						 
						
							
							
								
								Constrain __invoke functions more accurately.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15861  .  
							
							... 
							
							
							
							llvm-svn: 181377 
							
						 
						
							2013-05-07 23:40:12 +00:00  
				
					
						
							
							
								 
						
							
								81aa5cb804 
								
							 
						 
						
							
							
								
								Introduce _LIBCPP_STD_VER.  This can be set by the client (or the clang driver).  Or it will be defaulted.  The default is 11 if -std= c++11 or eariler, else it will default to the current year modulo the century.  We anticipate it defaulting to 14 for C++14 when the time comes.  For now, post-C++11 libcxx implementations should protect themselves with #if _LIBCPP_STD_VER > 11.  
							
							... 
							
							
							
							llvm-svn: 181347 
							
						 
						
							2013-05-07 20:16:13 +00:00  
				
					
						
							
							
								 
						
							
								eedfabd96e 
								
							 
						 
						
							
							
								
								Expose accidentally removed __compressed_pair constructor taking piecewise_construct_t.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15918  .  
							
							... 
							
							
							
							llvm-svn: 181217 
							
						 
						
							2013-05-06 16:58:36 +00:00  
				
					
						
							
							
								 
						
							
								da9ca0b405 
								
							 
						 
						
							
							
								
								Stephan Tolksdorf: fixes the issue in the <atomic> header and adds corresponding tests. I've used macros to fall back to a user-provided default constructor if _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS (though I suspect that there won't be many users defining that macro).  
							
							... 
							
							
							
							The tests use placement new to check that atomic values get properly zero-initialized. I had to modify the atomic_is_lock_free test, because default initialization of an object of const type 'const A' (aka 'const atomic<int>') requires a user-provided default constructor.
llvm-svn: 180945 
							
						 
						
							2013-05-02 20:18:43 +00:00  
				
					
						
							
							
								 
						
							
								35abaab7d3 
								
							 
						 
						
							
							
								
								This patch introduces an alternative layout for basic_string which when the string is short, the data pointer will be word-aligned.  It can be activated with -D_LIBCPP_ALTERNATE_STRING_LAYOUT.  These two different layouts (the default and _LIBCPP_ALTERNATE_STRING_LAYOUT) are not ABI compatible with each other.  Once one is chosen for a given platform, it is disruptive to change it.  
							
							... 
							
							
							
							llvm-svn: 180811 
							
						 
						
							2013-04-30 21:44:48 +00:00  
				
					
						
							
							
								 
						
							
								21883e9478 
								
							 
						 
						
							
							
								
								Use protected version of the malloc attribute in case source wants to  
							
							... 
							
							
							
							define malloc as macro.
llvm-svn: 180727 
							
						 
						
							2013-04-29 19:52:08 +00:00  
				
					
						
							
							
								 
						
							
								a39fe8c59e 
								
							 
						 
						
							
							
								
								GCC doesn't support __has_attribute.  
							
							... 
							
							
							
							llvm-svn: 180683 
							
						 
						
							2013-04-27 20:51:42 +00:00  
				
					
						
							
							
								 
						
							
								03ec04f9b5 
								
							 
						 
						
							
							
								
								default_delete needs a static_assert against void types.  I had previously thought that sizeof(void) would take care of this.  I was wrong.  
							
							... 
							
							
							
							llvm-svn: 180213 
							
						 
						
							2013-04-24 19:44:26 +00:00  
				
					
						
							
							
								 
						
							
								210051548e 
								
							 
						 
						
							
							
								
								Modest performance improvement for std::string's operator==.  
							
							... 
							
							
							
							llvm-svn: 180072 
							
						 
						
							2013-04-22 23:55:13 +00:00  
				
					
						
							
							
								 
						
							
								20428e94e0 
								
							 
						 
						
							
							
								
								Somehow aligned_union got dropped through the cracks.  This adds it.  Did a drive-by fix of alignment_of while I was in the neighborhood.  
							
							... 
							
							
							
							llvm-svn: 180036 
							
						 
						
							2013-04-22 19:37:49 +00:00  
				
					
						
							
							
								 
						
							
								ab65a6f560 
								
							 
						 
						
							
							
								
								After years of telling people: 'If you ever find any of my code that self-move-assigns, send me a bug report.' Somebody finally took me up on it.  vector::erase(begin(), begin()) does a self-move-assign of every element in the vector, leaving all of those elements in an unspecified state.  I checked the other containers for this same bug and did not find it.  Added test case.  
							
							... 
							
							
							
							llvm-svn: 179760 
							
						 
						
							2013-04-18 15:02:57 +00:00  
				
					
						
							
							
								 
						
							
								c76d2bda6f 
								
							 
						 
						
							
							
								
								addressof misbehaving for type with an implicit conversion operator to char&.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15754  
							
							... 
							
							
							
							llvm-svn: 179608 
							
						 
						
							2013-04-16 17:27:56 +00:00  
				
					
						
							
							
								 
						
							
								e7389a6915 
								
							 
						 
						
							
							
								
								Numeric parsing was getting the wrong answer when faced with very long inputs.  This fixes both  http://llvm.org/bugs/show_bug.cgi?id=15751  and  http://llvm.org/bugs/show_bug.cgi?id=15740  
							
							... 
							
							
							
							llvm-svn: 179556 
							
						 
						
							2013-04-15 20:40:06 +00:00  
				
					
						
							
							
								 
						
							
								f3b02b17af 
								
							 
						 
						
							
							
								
								Accidentally disallowed explicit tuple conversions when all elements of the tuple can be explicitly converted.  
							
							... 
							
							
							
							llvm-svn: 179467 
							
						 
						
							2013-04-14 00:01:13 +00:00  
				
					
						
							
							
								 
						
							
								40487ca25e 
								
							 
						 
						
							
							
								
								Set failbit when strtold sets errno to ERANGE when parsing floating point values.  
							
							... 
							
							
							
							llvm-svn: 179461 
							
						 
						
							2013-04-13 18:19:25 +00:00  
				
					
						
							
							
								 
						
							
								24afdf71c1 
								
							 
						 
						
							
							
								
								Ruben Van Boxem:  Turn islower_l and isupper_l into functions (instead of macros) on Windows only to quell a warning during libc++ building.  
							
							... 
							
							
							
							llvm-svn: 179408 
							
						 
						
							2013-04-12 20:22:57 +00:00  
				
					
						
							
							
								 
						
							
								98381453c0 
								
							 
						 
						
							
							
								
								Change <cwchar> and <cstring> to look out for flags which may or may not be set by the C headers <wchar.h> and <string.h> indicating C support for the C++-altered wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr, strchr, strpbrk, strrchr, memchr, and strstr.  This was already done in <cstring> for other platforms using other flags, so just had to add one more flag to the list there.  
							
							... 
							
							
							
							llvm-svn: 179041 
							
						 
						
							2013-04-08 18:59:28 +00:00  
				
					
						
							
							
								 
						
							
								f750923161 
								
							 
						 
						
							
							
								
								Fix bug in __libcpp_db::__iterator_copy.  Add debug test for swaping lists.  
							
							... 
							
							
							
							llvm-svn: 178892 
							
						 
						
							2013-04-05 17:58:52 +00:00  
				
					
						
							
							
								 
						
							
								b0e4c9d01b 
								
							 
						 
						
							
							
								
								More work on debug mode for list.  
							
							... 
							
							
							
							llvm-svn: 178819 
							
						 
						
							2013-04-05 00:18:49 +00:00  
				
					
						
							
							
								 
						
							
								b13fcad677 
								
							 
						 
						
							
							
								
								Somehow search_n never got tested, so of course it had a bug in it.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15667 .  
							
							... 
							
							
							
							llvm-svn: 178764 
							
						 
						
							2013-04-04 15:40:48 +00:00  
				
					
						
							
							
								 
						
							
								ea48b6dcd0 
								
							 
						 
						
							
							
								
								Fix stupid but harmless type-o.  Fixes  http://llvm.org/bugs/show_bug.cgi?id=15657 .  
							
							... 
							
							
							
							llvm-svn: 178691 
							
						 
						
							2013-04-03 20:29:45 +00:00  
				
					
						
							
							
								 
						
							
								1347d33451 
								
							 
						 
						
							
							
								
								The move / swap members were not correctly taking all of the possible states of the basic_stringbuf into account.  Just rewrote these members.  Test included.  This fixes  http://llvm.org/bugs/show_bug.cgi?id=15659 .  
							
							... 
							
							
							
							llvm-svn: 178690 
							
						 
						
							2013-04-03 20:21:29 +00:00  
				
					
						
							
							
								 
						
							
								459448241a 
								
							 
						 
						
							
							
								
								Reference:  http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130325/077133.html  
							
							... 
							
							
							
							llvm-svn: 178581 
							
						 
						
							2013-04-02 22:14:51 +00:00  
				
					
						
							
							
								 
						
							
								575e4e3650 
								
							 
						 
						
							
							
								
								Richard Smith: It was pointed out to me off-list that libc++'s non-compiler-builtin  
							
							... 
							
							
							
							implementation of std::is_polymorphic does this:
template <class _Tp> struct __is_polymorphic1 : public _Tp {};
... and that g++ rejects this if _Tp has an inaccessible virtual destructor
(because __is_polymorphic1<_Tp> would have a deleted virtual destructor
overriding _Tp's non-deleted destructor). Clang was failing to reject this;
I've fixed that in r178563, but that causes libc++'s corresponding test
case to fail with both clang and gcc when using the fallback
implementation. The fallback code also incorrectly rejects final types.
The attached patch fixes the fallback implementation of is_polymorphic; we
now use dynamic_cast's detection of polymorphic class types rather than
trying to determine if adding a virtual function makes the type larger:
  enable_if<sizeof((_Tp*)dynamic_cast<const volatile
void*>(declval<_Tp*>())) != 0, ...>
Two things of note here:
* the (_Tp*) cast is necessary to work around bugs in Clang and g++ where
we otherwise don't instantiate the dynamic_cast (filed as PR15656)
* the 'const volatile' is here to treat is_polymorphic<cv T> as true for a
polymorphic class type T -- my reading of the standard suggests this is
incorrect, but it matches our builtin __is_polymorphic and gcc
llvm-svn: 178576 
							
						 
						
							2013-04-02 21:25:06 +00:00  
				
					
						
							
							
								 
						
							
								9cb970074f 
								
							 
						 
						
							
							
								
								Bruce Mitchener, Jr.: Port to emscripten.  Fixes  http://llvm.org/bugs/show_bug.cgi?id=15624 .  
							
							... 
							
							
							
							llvm-svn: 178354 
							
						 
						
							2013-03-29 18:27:28 +00:00  
				
					
						
							
							
								 
						
							
								b3adefc34c 
								
							 
						 
						
							
							
								
								Second try at r178075.  The llvm breakage has been fixed by r178240.  
							
							... 
							
							
							
							llvm-svn: 178253 
							
						 
						
							2013-03-28 17:44:32 +00:00  
				
					
						
							
							
								 
						
							
								a4d35ce2bf 
								
							 
						 
						
							
							
								
								Add missing #ifndef _LIBCPP_NO_EXCEPTIONS around throw in include/thread.  
							
							... 
							
							
							
							llvm-svn: 178237 
							
						 
						
							2013-03-28 15:00:04 +00:00  
				
					
						
							
							
								 
						
							
								15eaebea15 
								
							 
						 
						
							
							
								
								Revert r178075, "Tighten up the iterator requirements ...", it breaks LLVM  
							
							... 
							
							
							
							bootstrap with libc++.
llvm-svn: 178116 
							
						 
						
							2013-03-27 04:10:25 +00:00  
				
					
						
							
							
								 
						
							
								5a13d8dcea 
								
							 
						 
						
							
							
								
								Tighten up the iterator requirements for the vector member templates.  This is especially important for the constructors so that is_constructible<vector<T>, I, I> gives the right answer when T can not be constructed from *I.  Test case included for this latter point.  
							
							... 
							
							
							
							llvm-svn: 178075 
							
						 
						
							2013-03-26 21:40:54 +00:00  
				
					
						
							
							
								 
						
							
								cd4a9fd301 
								
							 
						 
						
							
							
								
								Another vector debug mode test, and a static test on Allocator::value_type.  This partially addresses  http://llvm.org/bugs/show_bug.cgi?id=15576 .  
							
							... 
							
							
							
							llvm-svn: 178064 
							
						 
						
							2013-03-26 19:04:56 +00:00  
				
					
						
							
							
								 
						
							
								d9db9f90fb 
								
							 
						 
						
							
							
								
								Need one more swap overload for swapping two lvalue vector<bool>::reference's.  
							
							... 
							
							
							
							llvm-svn: 178016 
							
						 
						
							2013-03-26 13:48:57 +00:00  
				
					
						
							
							
								 
						
							
								ea1bbbd135 
								
							 
						 
						
							
							
								
								Added debug tests for indexing, pop_back and both forms of erase.  Added an improved error message for erasing a single element with end().  
							
							... 
							
							
							
							llvm-svn: 177929 
							
						 
						
							2013-03-25 22:12:26 +00:00