Commit Graph

396 Commits

Author SHA1 Message Date
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
Howard Hinnant 0176bc6cf5 Fixed bug in __independent_bits_engine found by Nick (from stackoverflow)
llvm-svn: 143104
2011-10-27 16:12:10 +00:00
Howard Hinnant e4383379ae More windows port work by Ruben Van Boxem
llvm-svn: 142732
2011-10-22 20:59:45 +00:00
Howard Hinnant 8bece6fe69 Windows port work by Ruben Van Boxem
llvm-svn: 142578
2011-10-20 12:49:21 +00:00
Howard Hinnant a892966218 de-tabbify
llvm-svn: 142237
2011-10-17 20:08:59 +00:00
Howard Hinnant 073458b1ab Windows support by Ruben Van Boxem.
llvm-svn: 142235
2011-10-17 20:05:10 +00:00
Howard Hinnant 7ba930bfca Fix http://llvm.org/bugs/show_bug.cgi?id=11113
llvm-svn: 141714
2011-10-11 21:28:38 +00:00
Howard Hinnant a33d4bc1ff Starting on musl port by Arvid Picciani
llvm-svn: 141672
2011-10-11 16:00:46 +00:00
Howard Hinnant 1ed7df111b Fix <rdar://problem/10256836> getline of an empty string mistakenly causes failure
llvm-svn: 141506
2011-10-09 15:20:46 +00:00
Howard Hinnant 2a4812fd04 Fix <rdar://problem/10255403> match_results::begin() is off by one
llvm-svn: 141494
2011-10-08 14:36:16 +00:00
Howard Hinnant 1e31e53fe1 Fix <rdar://problem/10226704>
llvm-svn: 141054
2011-10-04 01:25:20 +00:00
Howard Hinnant 2c0a65ee78 Fix <rdar://problem/10217868>.
llvm-svn: 140907
2011-10-01 00:26:36 +00:00
Howard Hinnant 8909cdfff9 Windows port work by Ruben Van Boxem
llvm-svn: 140805
2011-09-29 20:33:10 +00:00
Howard Hinnant 0c06e58fae Windows patch work by Ruben Van Boxem
llvm-svn: 140781
2011-09-29 13:33:15 +00:00
Howard Hinnant 9978e3709f Attempted locale refactoring. _LIBCPP_LOCALE__L_EXTENSIONS now should be defined if one has all of the xxx_l() functions. I've defined this for apple, freebsd and win32. _LIBCPP_HAS_DEFAULTRUNELOCALE should be defined if there is a _DefaultRuneLocale. I've defined this for apple and freebsd. The block of code we're trying to migrate away from is now under #ifdef __linux__. I've tested only on OS X. I hope I haven't broken things too badly elsewhere. Please let me know.
llvm-svn: 140734
2011-09-28 23:39:33 +00:00
Howard Hinnant 3438889dec Work on Windows port by Ruben Van Boxem
llvm-svn: 140728
2011-09-28 21:39:20 +00:00
Howard Hinnant 0470a63776 Attempt to enable locale simplification. On which platforms can we now #define _LIBCPP_STABLE_APPLE_ABI?
llvm-svn: 140724
2011-09-28 21:05:01 +00:00
Howard Hinnant 920b56ca88 Another installment on debug mode. This addresses list. However this should be considered a temporary state. The API of the debug database and how vector and list use it, is unsatisfactory at the moment. It is both inefficient and overly verbose. I wanted to get this functionality checked in though. In the next day or so I'll refactor what is there in an attempt to streamline things.
llvm-svn: 140660
2011-09-27 23:55:03 +00:00
Howard Hinnant dbe8111948 Work on Windows port by Ruben Van Boxem
llvm-svn: 140384
2011-09-23 16:11:27 +00:00
Howard Hinnant 3c78ca07bc Partial Windows port by Ruben Van Boxem
llvm-svn: 140328
2011-09-22 19:10:18 +00:00
David Chisnall 89728139cb Fixes for FreeBSD, including some fairly obvious copy-and-paste errors.
libc++ now mostly works on FreeBSD with libcxxrt and this patch applied to the base system:

http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20110920/e666632c/xlocale-0001.obj

Summary of tests on FreeBSD:


****************************************************
Results for /root/libcxx/test:
using FreeBSD clang version 3.0 (trunk 135360) 20110717
Target: x86_64-unknown-freebsd9.0
Thread model: posix
with -std=c++0x -stdlib=libc++ -I/root/libcxx/include -L/root/libcxx/build/lib
----------------------------------------------------
sections without tests   : 1
sections with failures   : 48
sections without failures: 1015
                       +   ----
total number of sections : 1064
----------------------------------------------------
number of tests failed   : 145
number of tests passed   : 4179
                       +   ----
total number of tests    : 4324
****************************************************

(Many due to this clang version not supporting C++ atomics)

More fixes to follow...

llvm-svn: 140245
2011-09-21 08:39:44 +00:00
Howard Hinnant c756bb3574 Chris Jefferson noted that vector iterator ownership can be transferred from source to target under move construction and move assignment. This commit makes that happen for debug mode.
llvm-svn: 140023
2011-09-19 16:34:29 +00:00
Howard Hinnant cdcfbf26dc Removed unneeded boost implementation of is_base_of
llvm-svn: 140014
2011-09-19 13:19:31 +00:00
David Chisnall 0a0f599f2c Enable __locale to work on FreeBSD.
llvm-svn: 140005
2011-09-18 19:23:04 +00:00
Howard Hinnant c36bfc499b Doug Gregor pointed out some problems with debug mode enabled in one TU and not another. This patch helps detect those situations and offers improved error messages to help get debug mode enabled in more TU's when it is absolutely necessary to do so. Thanks Doug.
llvm-svn: 139933
2011-09-16 19:52:23 +00:00
Howard Hinnant 0695db06d7 The vector test suite now passes for no-debug, debug-lite and debug-regular
llvm-svn: 139930
2011-09-16 18:41:29 +00:00
Howard Hinnant cec9af9ead Create multilevel debug mode
llvm-svn: 139913
2011-09-16 17:29:17 +00:00