Commit Graph

422 Commits

Author SHA1 Message Date
Howard Hinnant cb16c68042 It appears that the standard accidentally removed the default constructor for error_category. I'm putting it back in. This fixes http://llvm.org/bugs/show_bug.cgi?id=12321.
llvm-svn: 153194
2012-03-21 16:18:57 +00:00
David Chisnall 5f13d66fb4 Make sure [at_]quick_exit is in std::
llvm-svn: 152717
2012-03-14 14:10:37 +00:00
Jeffrey Yasskin 9c95b19f9e Fix moneypunct_byname algorithm to more accurately represent C locales in C++.
llvm-svn: 152501
2012-03-10 18:31:43 +00:00
Howard Hinnant 8d5df9b9d4 Change some smart_ptr == 0 to smart_ptr == nullptr. Fixes http://llvm.org/bugs/show_bug.cgi?id=12185.
llvm-svn: 152240
2012-03-07 20:37:43 +00:00
David Chisnall 04e5ce2bc1 Define _WCHAR_T in solaris/wchar.h. This fixes a bug where Solaris 10 headers
try to define C++ keywords as typedefs (fixed in Solaris 11).

llvm-svn: 151890
2012-03-02 10:56:04 +00:00
David Chisnall 55661e7305 Fix MSVC / Sun #ifdef ordering. Remove another #if-nothing-#endif.
Sorry for the churn.

llvm-svn: 151731
2012-02-29 16:41:21 +00:00
David Chisnall 40d7a8acff Remove a spurious #ifdef / #endif pair with nothing between them.
llvm-svn: 151729
2012-02-29 16:22:33 +00:00
David Chisnall 06af2bbb04 Add support files required for building on Solaris.
llvm-svn: 151721
2012-02-29 13:17:28 +00:00
David Chisnall 14c25b80e9 Solaris port. Currently sees around 200 test failures, mostly related to
Solaris not providing some of the locales that the test suite uses.

Note: This depends on an xlocale (partial) implementation for Solaris and a
couple of fixed standard headers.  These will be committed to a branch later
today.

llvm-svn: 151720
2012-02-29 13:05:08 +00:00
David Chisnall 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
Howard Hinnant 9bb1429f20 Reduce the number of move constructions when constructing a std::function. This fixes http://llvm.org/bugs/show_bug.cgi?id=12105.
llvm-svn: 151652
2012-02-28 19:47:38 +00:00
Howard Hinnant 9ffe10106e vector::emplace_back was mistakenly requiring move assignable. Fixed that and did a little drive-by optimization at the same time. This fixes http://llvm.org/bugs/show_bug.cgi?id=12085.
llvm-svn: 151492
2012-02-26 15:30:12 +00:00
Howard Hinnant 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
Howard Hinnant f2f2d8b98d Modernize conversion to bool to the explicit bool conversion operator (library wide). This fixes http://llvm.org/bugs/show_bug.cgi?id=12058.
llvm-svn: 151088
2012-02-21 21:46:43 +00:00
Howard Hinnant 67f3964766 Modernize relational operators for shared_ptr and unique_ptr. This includes adding support for nullptr, and using less<T*>. Fixes http://llvm.org/bugs/show_bug.cgi?id=12056.
llvm-svn: 151084
2012-02-21 21:02:58 +00:00
Bob Wilson a4fd70ea77 Add missing newlines at EOF.
llvm-svn: 150965
2012-02-20 16:56:13 +00:00
Howard Hinnant 2a9a072485 Give the emulated nullptr_t a default constructor.
llvm-svn: 150893
2012-02-18 22:01:22 +00:00
Howard Hinnant f9c73f6629 Use __is_polymorphic if available. This fixes http://llvm.org/bugs/show_bug.cgi?id=11983 . Patch contributed by Jonathan Sauer.
llvm-svn: 150614
2012-02-15 20:47:11 +00:00
Howard Hinnant fa8df7db88 tuple was accidentally lacking a valid copy assignment operator. It went undetected because I had failed to test assigning from a const lvalue. This fixes http://llvm.org/bugs/show_bug.cgi?id=11921
llvm-svn: 150613
2012-02-15 20:13:52 +00:00
Howard Hinnant 6560953383 Do not parse sign if a sign is not the next legal character when parsing floating point from an input stream. Fixes http://llvm.org/bugs/show_bug.cgi?id=11871
llvm-svn: 150609
2012-02-15 19:19:37 +00:00
Howard Hinnant 2aa9a38b67 Another stab at fixing http://llvm.org/bugs/show_bug.cgi?id=12007. I earlier missed that there are two common_type definitions and corrected only one of them.
llvm-svn: 150599
2012-02-15 18:08:09 +00:00
Howard Hinnant 425e44d192 Remove reference from common_type definition. It looks like a recent clang decltype implementation got fixed/improved and exposed this. Fixes http://llvm.org/bugs/show_bug.cgi?id=12007.
llvm-svn: 150581
2012-02-15 15:08:30 +00:00
Howard Hinnant 9741d6c96e Implement a few optimizations for vector push_back and insert. Fixes r10828365.
llvm-svn: 150542
2012-02-15 00:41:34 +00:00
Howard Hinnant e586ac735d Provide a move(const T&) overload for C++03 mode to enable moving from rvalues. This is to support proxy references. Fixes r10858112.
llvm-svn: 150488
2012-02-14 16:03:09 +00:00
Howard Hinnant 21fa1887e0 Enable full functionality of shared_ptr<const void> by adding allocator<const void>. Credit to John Hurley for discovering this bug.
llvm-svn: 148508
2012-01-19 23:15:22 +00:00
Howard Hinnant c37917f309 Fix http://llvm.org/bugs/show_bug.cgi?id=11752
llvm-svn: 148069
2012-01-12 23:37:51 +00:00
Howard Hinnant a04d2b3330 Fix http://llvm.org/bugs/show_bug.cgi?id=11734
llvm-svn: 147853
2012-01-10 15:15:47 +00:00
Howard Hinnant 8e25104b10 1. Fix make_shared<const T>. 2. Allow allocator<const T> as an extension. 3. Refactor work which fixed unique_ptr<const T[]>. 4. Remove no-longer-needed private declarations from unique_ptr. 5. Add constraints to some shared_ptr and weak_ptr constructors and assignment operators so that is_constructible/is_assignable give the correct answers for shared_ptr and weak_ptr. 6. Make defensive preparations in the shared_ptr free functions for the introduction of shared_ptr<T[]> in the future. 7. As an optimization, add move constructor and move assignment to weak_ptr.
llvm-svn: 147437
2012-01-02 17:56:02 +00:00
Howard Hinnant b34b48196c The exception recovery mechanism for the uninitialized_* algorithms did not work for iterators into discontiguous memory.
llvm-svn: 147343
2011-12-29 17:45:35 +00:00
Howard Hinnant a87b5e3446 Fix http://llvm.org/bugs/show_bug.cgi?id=11616
llvm-svn: 146881
2011-12-19 17:58:44 +00:00
David Chisnall 18e33935f3 Some fixes to <atomic> operations to explicitly use atomic types and operations.
The integral types now work with clang trunk (if you remove the guard), although we're still missing an intrinsic for initialising atomics (needed for C1x too).

Howard: Please review.
llvm-svn: 146865
2011-12-19 11:44:20 +00:00
Howard Hinnant e4097ad7e6 Allow unique_ptr<T const []> to be constructed and assigned from a unique_ptr<T[]>
llvm-svn: 146853
2011-12-18 21:19:44 +00:00
Howard Hinnant d6f44b6601 Allow unique_ptr<T const []> to be constructed with a T* (in addition to a const T*)
llvm-svn: 146736
2011-12-16 15:37:23 +00:00
Howard Hinnant a1a9e77122 As an extension, support incomplete types in the unordered containers to match what we already do in the associative containers.
llvm-svn: 146376
2011-12-12 17:26:24 +00:00
Howard Hinnant 42b8bb5033 Fix http://llvm.org/bugs/show_bug.cgi?id=11461. Credit Alberto Ganesh Barbati.
llvm-svn: 146345
2011-12-11 20:31:33 +00:00
Howard Hinnant 53d2fb0aa2 Installation of CityHash by Craig Silverstein
llvm-svn: 146329
2011-12-10 20:28:56 +00:00
Howard Hinnant f3d14a65ca Starting using murmur2 when combining multiple size_t's into a single hash, and also for basic_string. Also made hash<thread::id> ever so slighly more portable. I had to tweak one test which is questionable (definitely not portable) anyway.
llvm-svn: 145795
2011-12-05 00:08:45 +00:00
Howard Hinnant 9b0cd149aa Version #next on the hash functions for scalars. This builds on Dave's work, extends it to T*, and changes the way double and long double are handled (no longer convert to float on 32 bit). I also picked up a minor bug with uninitialized bits on the upper end of size_t when sizeof(size_t) > sizeof(T), e.g. in hash<float>. Most of the functionality has been put in one place: __scalar_hash in <memory>. Unfortunately I could not reuse __scalar_hash for hash<long double> on x86 because of the padding bits which need to be zeroed. I didn't want to add this zeroing step to the more general __scalar_hash when it isn't needed (in the absence of padding bits). I'm not ignoring the hash<string> issue (possibly changing that to a better hash). I just haven't gotten there yet.
llvm-svn: 145778
2011-12-03 21:11:36 +00:00
Howard Hinnant 7f3884d58a I had picked up the wrong version of DaveZ's hash patches. Corrected here.
llvm-svn: 145728
2011-12-02 23:45:22 +00:00
Howard Hinnant 425d482c21 Fixes to hash for long long, unsigned long long, float, double and long double. Credit Dave Zarzycki
llvm-svn: 145721
2011-12-02 22:52:09 +00:00
Howard Hinnant 132bd622cf Fix http://llvm.org/bugs/show_bug.cgi?id=11459. Patch supplied by Alberto Ganesh Barbati.
llvm-svn: 145703
2011-12-02 20:41:47 +00:00
Howard Hinnant 75689c1018 Fix http://llvm.org/bugs/show_bug.cgi?id=11428. Fix provided by Alberto Ganesh Barbati
llvm-svn: 145698
2011-12-02 19:36:40 +00:00
Howard Hinnant a5bc2f877f Jean-Daniel: __builtin_popcountll support for Windows
llvm-svn: 145684
2011-12-02 17:22:38 +00:00
Howard Hinnant c206366fd7 Quash a whole bunch of warnings
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant c003db1fca Further macro protection by replacing _[A-Z] with _[A-Z]p
llvm-svn: 145410
2011-11-29 18:15:50 +00:00
Howard Hinnant ab4f438239 Add protection from min/max macros
llvm-svn: 145407
2011-11-29 16:45:27 +00:00
Howard Hinnant 1c2c87c502 Remove redundant iterator assignment detected by Marshall Clow
llvm-svn: 145265
2011-11-28 19:49:26 +00:00
David Chisnall 5e8e0448c3 On FreeBSD, define a macro that causes the unimplemented C99 math.h functions to be declared. This prevents <cmath> users from being broken, unless they actually use the C++ wrappers that call the missing functions.
llvm-svn: 144501
2011-11-13 17:15:33 +00:00
Howard Hinnant 05e485879c Fix ratio arithmetic with zero
llvm-svn: 143519
2011-11-01 23:13:37 +00:00
Howard Hinnant 9563a09cee Windows port work by Ruben Van Boxem
llvm-svn: 143105
2011-10-27 16:24:42 +00:00