Marshall Clow
a429ba738c
Back out the <type_traits> changes from r198431; they were breaking when building with glibc. Need to find a better solution for PR18218.
...
llvm-svn: 198623
2014-01-06 18:12:50 +00:00
Marshall Clow
a889636aa0
Removed extra trailing underscore in #ifdef (__GNUC___ --> __GNUC__ )
...
llvm-svn: 198618
2014-01-06 15:23:02 +00:00
Marshall Clow
a3e6e2b286
Rename several internal templates to get rid of ___ (triple underscores) or worse, four. No functionality change.
...
llvm-svn: 198608
2014-01-06 14:00:09 +00:00
Yaron Keren
acb42aefd7
80 cols fixes.
...
llvm-svn: 198482
2014-01-04 09:27:39 +00:00
Yaron Keren
f8f56755e0
Implement the functions: clz, clzl, clzll, ctz, ctzl, and ctzll
...
for libcxx when compiled with Visual C++ on Win32 and Win64.
clang and gcc (MinGW) compilers provide these implementations themselves.
llvm-svn: 198481
2014-01-04 08:56:00 +00:00
Marshall Clow
0724bf6767
Rename ___make_pair_return to __make_pair_return_impl; ___make_tuple_return to __make_tuple_return_impl; and ____iterator_traits to __iterator_traits_impl. Part of a campaign to remove > 2 underscores from libc++. No functionality change.
...
llvm-svn: 198457
2014-01-03 22:55:49 +00:00
Marshall Clow
d41295da72
Patch by Howard. First part of fix for PR18218; add type traits needed to do the right thing. Fix the problems in PR18218 for isnan and pow - they also need to be applied to the other functions in <cmath>. Also, a drive-by fix for the test - now actually calls test_abs()
...
llvm-svn: 198431
2014-01-03 18:21:14 +00:00
Marshall Clow
ce81aed463
Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch.
...
llvm-svn: 197921
2013-12-23 22:14:27 +00:00
Yaron Keren
21a697b8b1
Empty line between two unrelated #ifdefs.
...
llvm-svn: 197810
2013-12-20 13:19:45 +00:00
Logan Chien
ca83921ddc
GCC does not support strong enum in pre-C++0x mode.
...
GCC does not support strong enum if -std=c++0x is not used.
Without the strong enum, we will see following error:
In file included from libcxx/include/ostream:131:0,
from libcxx/include/sstream:174,
from libcxx/include/complex:247,
from cpp03-headers.cpp:11:
libcxx/include/ios:419:68: error: 'io_errc' is not a class or namespace
libcxx/include/ios:420:66: error: 'io_errc' is not a class or namespace
To workaround this issue, this commit will define
_LIBCPP_HAS_NO_STRONG_ENUMS when we are compiling with
g++ without c++0x.
llvm-svn: 197313
2013-12-14 06:44:09 +00:00
Marshall Clow
c66a611b27
Move std::begin(array) and std::end(array) out from under an #ifdef that was preventing people from building libc++ using gcc. This corrects a mistake that I introduced in r196058
...
llvm-svn: 197061
2013-12-11 19:32:32 +00:00
Marshall Clow
6bc32ebf35
Refactored a bunch of duplicated code in <ostream>. Made a new routine called __put_character_sequence, and made nine places call it.
...
llvm-svn: 196951
2013-12-10 19:25:49 +00:00
Marshall Clow
8283ba3704
Refactor some of the operations in <string> so that they can be reused; no functionality change
...
llvm-svn: 196788
2013-12-09 16:00:28 +00:00
Howard Hinnant
395485efc0
Give all members of exception types default visibility. Lack of this is causing some illegal code relocations rare and hard to reproduce cases.
...
llvm-svn: 196411
2013-12-04 21:03:23 +00:00
Marshall Clow
3772a46ab4
Fix for PRPR17934; based on a fix suggested by Peter Sommerlad
...
llvm-svn: 196058
2013-12-02 03:24:33 +00:00
Howard Hinnant
6ef2bb02f5
Remove _LIBCPP_TRIVIAL_PAIR_COPY_CTOR=0 for __APPLE__, no longer needed.
...
llvm-svn: 195796
2013-11-27 00:53:02 +00:00
Joerg Sonnenberger
c55d97b1f9
Don't use T as template argument, it is part of the application
...
namespace.
llvm-svn: 195693
2013-11-25 22:44:20 +00:00
Yaron Keren
e050d66e12
Compiling libcxx with gcc 4.6.4 (MingW) produces these errors:
...
type_traits:3280:31: error: expected primary-expression before 'decltype'
type_traits:3280:29: error: expected ';' at end of member declaration
memory:2415:49: error: function 'std::__1::default_delete<_Tp>::default_delete()'
defaulted on its first declaration must not have an exception-specification
memory:2435:49: error: function 'std::__1::default_delete<_Tp []>::default_delete()'
defaulted on its first declaration must not have an exception-specification
The attached patch defines _LIBCPP_HAS_NO_ADVANCED_SFINAE and
_LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS for gcc version < 4.7, making
the library compile with gcc 4.6.4.
llvm-svn: 195431
2013-11-22 09:22:12 +00:00
Marshall Clow
028875aa7c
Patch by Xing Xue to improve libc++ support for AIX
...
llvm-svn: 195144
2013-11-19 19:16:03 +00:00
Marshall Clow
7e1ea8d288
Patch by Bruce Mitchener. Change all references to EMSCRIPTEN to __EMSCRIPTEN__. If you're not using the PP symbol EMSCRIPTEN, then you should see no functionality change.
...
llvm-svn: 195136
2013-11-19 18:05:03 +00:00
Yaron Keren
fbeb63c0d1
This patch implements snprintf_l function in a way similar to the other
...
functions in src/support/win32/locale_win32.cpp and locale_win32.h,
calling upon vsnprintf for which there is a MingW correct alternative.
Note! __USE_MINGW_ANSI_STDIO is not modified in this patch. In order to
use the __mingw version it must be defined before including the MingW
headers.
llvm-svn: 195044
2013-11-18 21:12:14 +00:00
Yaron Keren
c0299d7f53
Fix-it suggestion for fixing min or max defines on Windows.
...
llvm-svn: 194891
2013-11-15 23:41:01 +00:00
Yaron Keren
6e72b8ba8c
Windows.h is not required.
...
llvm-svn: 194870
2013-11-15 22:54:15 +00:00
Marshall Clow
dfdac03c8f
Move <optional> into include/experimental, and into the std::experimental namespace, since it's not part of C++14, but of an upcoming TS
...
llvm-svn: 194867
2013-11-15 22:42:10 +00:00
Justin Bogner
fd6cfe92d3
Add the CMakeLists.txt that was missed in r194825
...
llvm-svn: 194838
2013-11-15 18:34:43 +00:00
Howard Hinnant
f9fd0d6d11
This is a followup to r194536, which changed the pair copy constructor to be
...
trivial in C++03, thus making it trivial in both C++03 and C++11.
This patch allows one to opt-in/out of this decision with a macro. You can
choose to have the pair copy constructor always be trivial, or always be
non-trivial. The flag controlling this is now _LIBCPP_TRIVIAL_PAIR_COPY_CTOR.
The client can define this flag to 1, and the pair copy constructor will be
trivial (when possible of course), or to 0, and the pair copy constructor will
be nontrivial.
Default settings for this flag are set in <__config> (as usual). With this
commit the default is _LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1 for all platforms
except __APPLE__, which defaults to _LIBCPP_TRIVIAL_PAIR_COPY_CTOR=0.
llvm-svn: 194742
2013-11-14 22:52:25 +00:00
Marshall Clow
513ecaba91
Fixed bug in quoted strings implementation. Added test to be sure. Thanks to Peter Sommerlad for the report (and suggested fix)
...
llvm-svn: 194725
2013-11-14 20:01:38 +00:00
Marshall Clow
21fee96f69
Move <dynarray> into include/experimental, and into the std::experimental namespace, since it's not part of C++14, but of an upcoming TS
...
llvm-svn: 194614
2013-11-13 22:44:48 +00:00
Howard Hinnant
ccad8c32e0
This fixes a very subtle ABI problem concerning the copy constructor of
...
pair, and a couple of pair-like implementation detail types. The
C++98/03 and 11 standards all specify that the copy constructor of
pair<int, int> is trivial. However as libc++ tracked the draft C++11
standard over the years, this copy constructor became non-trivial, and
then just recently was corrected back to trivial for C++11.
Unfortunately (for libc++1) the Itanium ABI specifies different calling
conventions for trivial and non-trivial copy constructors. Therefore
currently the C++03 libc++ copy constructor for pair<int, int> is ABI
incompatible with the C++11 libc++ copy constructor for pair<int, int>.
This is Bad(tm). This patch corrects the situation by making this copy
constructor trivial in C++03 mode as well.
Just in case it is needed for an incomplete C++11 compiler, libc++
retains the ability to support pair with rvalue references, but without
defaulted special members. However the pair needs non-trivial special
members to implement this special case, (as it did when clang was in
this place a couple of years ago).
During this work a bug was also found and fixed in
is_trivially_constructible.
And there is a minor drive-by fix in <__config> regarding
__type_visibility__.
A test is updated to ensure that the copy constructor of pair<int, int>
is trivial in both C++03 and C++11. This test will necessarily fail for
a compiler that implements rvalue references but not defaulted special
members.
llvm-svn: 194536
2013-11-13 00:39:22 +00:00
Howard Hinnant
88960d151e
Tell libc++abi whether or not libc++ has declared bad_array_length.
...
llvm-svn: 194207
2013-11-07 17:15:51 +00:00
Marshall Clow
57b8f44c87
More duplicate code removal in <locale>. Hoist common parsing code into two templates: num_get::__do_get_signed and num_get::__do_get_unsigned, and make the do_get routines call them. No functionality change.
...
llvm-svn: 194185
2013-11-07 01:00:50 +00:00
Howard Hinnant
4478b25ade
Fix several tuple bugs that were exposed by clang's implementation of CWG 1402. This fixes http://llvm.org/bugs/show_bug.cgi?id=17798 .
...
llvm-svn: 194154
2013-11-06 17:45:43 +00:00
Marshall Clow
e427322327
Fix an off-by-one error in basic_string::__grow_by, where it would incorrectly throw length_error (instead of bad_alloc) when attempting to resize the string to 'max_size()'. Add tests for resizing to max_size +/-1
...
llvm-svn: 194151
2013-11-06 14:24:38 +00:00
Marshall Clow
9d66b72aa9
Refactor floating point code for num_get::do_get into a template. No functionality change
...
llvm-svn: 194080
2013-11-05 14:28:52 +00:00
Marshall Clow
99c096472d
Better inline marking for __does_policy_contain. Thanks to Chongyu Zhu for the catch
...
llvm-svn: 193963
2013-11-03 22:06:53 +00:00
Marshall Clow
222d1c7f13
Mark __does_policy_contain as 'inline'. Thanks to Chongyu Zhu for the catch
...
llvm-svn: 193962
2013-11-03 20:07:47 +00:00
Marshall Clow
b1915875d0
Fix LWG Issue 2078. Make std::async(policy,...) try multiple policies until one succeeds.
...
llvm-svn: 193960
2013-11-03 15:43:35 +00:00
Marshall Clow
e1bedf4e93
LWG issue 2341; Make the two variants of basic_ostream::seekp and basic_istream::seekg behave consistently; update tests to make sure
...
llvm-svn: 193814
2013-10-31 22:20:45 +00:00
Marshall Clow
f5fa53882f
Fixes PR17148
...
llvm-svn: 193772
2013-10-31 17:23:08 +00:00
Marshall Clow
07c28fe026
Mark seed_seq default constructor and size() as noexcept. This is implied, but not required by LWG issue 2180
...
llvm-svn: 193227
2013-10-23 05:56:47 +00:00
Marshall Clow
e604469e5c
Patch by GM: apparently '__value' (two underscores) is a special name in Visual Studio, so rename the private method in <regex> with that name. GM's patch used '___value' (three underscores), but I changed that to '__regex_traits_value' because I've been burned in the past by identifiers that appear identical but are not.
...
llvm-svn: 193087
2013-10-21 15:43:25 +00:00
Marshall Clow
5b40666c6c
Patch by GM: Making implicit conversion to bool explicit in <ios> and <__locale>
...
llvm-svn: 193085
2013-10-21 14:41:05 +00:00
Marshall Clow
d8cfc7dce9
Patch by GM: Adding MSVC support to __bit_reference
...
llvm-svn: 193084
2013-10-21 14:29:37 +00:00
Marshall Clow
9f21325ac7
Patch from GM to make more implicit bools explicit since we can't stop MSVC warning about this in headers and to warn is the MSVC default. No functionality change.
...
llvm-svn: 192548
2013-10-13 01:02:45 +00:00
Marshall Clow
c3776b1ce0
LWG Issue 2087: iostream_category() and noexcept
...
llvm-svn: 192545
2013-10-12 22:49:56 +00:00
Marshall Clow
d58daf9433
LWG Issue 2097: packaged_task constructors should be constrained
...
llvm-svn: 192544
2013-10-12 22:49:17 +00:00
Marshall Clow
f28fd284f8
LWG issue 2143: ios_base::xalloc should be thread-safe
...
llvm-svn: 192539
2013-10-12 19:13:52 +00:00
Marshall Clow
8de32cb3dc
Implement national body comment GB9: remove std::gets
...
llvm-svn: 192538
2013-10-12 19:09:47 +00:00
Marshall Clow
0354b92992
patch by Yaron: Uses rand_s() from stdlib.h (when building for Windows)
...
llvm-svn: 192325
2013-10-09 21:49:03 +00:00
Marshall Clow
db78c7049e
Fix LWG Issue 2141: common_type trait produces reference types
...
llvm-svn: 192142
2013-10-07 23:43:33 +00:00
Howard Hinnant
04c63bdb36
G M: Rename local variable from __except to avoid MSVC keyword clash.
...
llvm-svn: 192072
2013-10-06 21:00:29 +00:00
Howard Hinnant
32f9a776fb
Use _LIBCPP_NEW_DELETE_VIS instead of LIBCPP_FUNC_VIS in src/new.cpp.
...
llvm-svn: 192071
2013-10-06 20:53:24 +00:00
Howard Hinnant
f66a81ad56
Yaron Keren: Add missing comment.
...
llvm-svn: 192068
2013-10-06 19:48:40 +00:00
Marshall Clow
dbd2ebb07e
LWG Issue 2247: Implement type trait 'is_null_pointer'
...
llvm-svn: 192049
2013-10-05 21:21:17 +00:00
Marshall Clow
ea7c7cc521
Implement literal suffixes for compled
...
llvm-svn: 192048
2013-10-05 21:19:49 +00:00
Marshall Clow
3ceafc7f01
Mark namespaces for user defined literals as 'inline'
...
llvm-svn: 192047
2013-10-05 21:18:32 +00:00
Marshall Clow
de9320aa2b
Implement LWG issue 2275 'forward_as_tuple should be constexpr'
...
llvm-svn: 192038
2013-10-05 18:46:37 +00:00
Howard Hinnant
a942f2ffd7
G M: The attached patch is for libcxx's new.cpp and __config files. The patch's intent is to make new.cpp compile using MS's cl.exe compiler without changing the meaning of anything for any other compiler.
...
The issue this patch seeks to address is that MS's compiler (cl.exe) doesn't support the __attribute__((__weak__)) or __atribute__((__visibility__("default")) syntax; so a solution must be found where cl.exe doesn't see this syntax.
This patch seeks to solve this problem by changing code patterned like this:
__attribute__((__weak__, __visibility__("default")))
void* operator new(size_t size, const std::nothrow_t&) _NOEXCEPT { /*snip*/; return p; }
to code like this:
_LIBCPP_WEAK
void* operator new(size_t size, const std::nothrow_t&) _NOEXCEPT { return p; }
Howard: Thanks for all the comments regarding the default visibility
tag on the definition. I agree it isn't needed, and that there are lots
of other places where it is missing. That being said, I'm not wanting
to rock the boat on that issue right now. So I've added it back to the
definition via _LIBCPP_FUNC_VIS. A later pass dedicated just to this
issue can bring things in to a consistent state one way or the other.
Note that we do not want to have the exact same attributes on the
declaration and defintion in this case. The declaration should not be
marked weak, whereas the definition should (which is what G M's patch
did). I've fully tested on OS X to ensure that the resultant attribute
syntax actually works.
llvm-svn: 192007
2013-10-04 23:56:37 +00:00
Howard Hinnant
3af48ef76e
G M: Changes all references to "x inline" to "inline x" where x = _libcpp_always_inline or _libcpp_inline_visibility macros.
...
The patch touches these files:
locale
array
deque
new
string
utility
vector
__bit_reference
__split_buffer
locale_win32.h
There is no intended functionality change and it is expected that reversing the position of the inline keyword with regard to the other keywords does not change the meaning of anything, least not for apple/Linux etc.
It is intended to make libcxx more consistent with itself and to prevent the 1000 or so
"inline.cpp(3) : warning C4141: 'inline' : used more than once" warnings that MS's cl.exe compiler emits without this patch, i.e. if inline is not the first keyword before a function name etc.
Prefer "inline [other inline related keyword]" over "[other related keyword] inline".
After this patch, libcxx should be consistent to this pattern.
llvm-svn: 191987
2013-10-04 22:09:00 +00:00
Howard Hinnant
f7a8c4f347
G M: Fix libcxx's detection of rtti disablement for g++.exe and cl.exe. When RTTI is NOT enabled, _LIBCPP_NO_RTTI is defined.
...
llvm-svn: 191981
2013-10-04 21:24:21 +00:00
Howard Hinnant
80b84d4c26
G M: Provides the _LIBCPP_WARNING macro, to be used for MSVC only, since that compiler doesn't support #warning.
...
llvm-svn: 191980
2013-10-04 21:14:44 +00:00
Marshall Clow
ad864049d6
Remove non-printable chars that snuck in back in July; thanks to Yaron Keren for the catch
...
llvm-svn: 191756
2013-10-01 13:28:20 +00:00
Marshall Clow
45b983c4d0
Part 8 of LWG Issue 2210' unordered_set and unordered multiset; this got missed when I went on vacation
...
llvm-svn: 191705
2013-09-30 21:33:51 +00:00
Howard Hinnant
9fd9f84f48
SCARY/N2913 iterator support between the multi and non-multi versions of the associative and unordered containers. I beleive lack of support for this was accidentally recently introduced (by me) and this is fixing a regression. This time tests are put in to prevent such a regression in the future.
...
llvm-svn: 191692
2013-09-30 19:08:22 +00:00
Marshall Clow
3d5134dd52
Implement n3789; constexpr support in named function objects
...
llvm-svn: 191626
2013-09-28 19:06:12 +00:00
Marshall Clow
8392ab209e
Add a set of macros for using the new '[[[deprecated]]' attribute. No code changes (yet)
...
llvm-svn: 191625
2013-09-28 18:35:31 +00:00
Howard Hinnant
7a828034c6
Peter Collingbourne: If a pointer is passed as the third argument of the (iterator,
...
iterator, allocator) constructor with the intention of it being
implicitly converted to the allocator type, it is possible for overload
resolution to favour the (iterator, iterator, enable_if) constructor.
Eliminate this possibility by moving the enable_if to one of the
existing arguments and removing the third argument.
llvm-svn: 191145
2013-09-21 21:13:54 +00:00
Howard Hinnant
ff29d538ea
Apply LWG 2048. It is amazing to me that this actually works, but the existing tests confirm that it does. c++1y status page now showing libc++ is complete for c++1y modulo dynarray issues.
...
llvm-svn: 191142
2013-09-21 19:25:37 +00:00
Howard Hinnant
f13cf89df2
Apply LWG 2021. This is only a documentation change. Also bringing c++1y status page up to date.
...
llvm-svn: 191141
2013-09-21 18:17:23 +00:00
Howard Hinnant
b76e6a95a9
Apply LWG 2017. This is a only a documentation change.
...
llvm-svn: 191140
2013-09-21 17:58:58 +00:00
Howard Hinnant
ead6f1699d
N3659: Shared locking in C++ Revision 2, c++1y only
...
llvm-svn: 191127
2013-09-21 01:49:28 +00:00
Howard Hinnant
b1c82cd090
David Chisnall: macro protect 'test' in __has_pointer_type_imp.
...
llvm-svn: 191126
2013-09-21 01:45:05 +00:00
Howard Hinnant
5f878d4bd2
G M: Restore the ability for libcxx to compile again on mingw 64.
...
llvm-svn: 190837
2013-09-17 01:34:47 +00:00
Howard Hinnant
3b2d7ee18c
Marshall Clow: LWG Issue 2056: future_errc enums start with value 0 (invalid value for broken_promise).
...
llvm-svn: 190756
2013-09-14 18:20:10 +00:00
Marshall Clow
a369cb6280
LWG Issue 2210 (Part #7 ): vector and vector<bool>
...
llvm-svn: 190736
2013-09-14 00:47:59 +00:00
Howard Hinnant
84f996fb2e
G M: Make shared_ptr a little more gentle for some compilers. No impact on clang.
...
llvm-svn: 190732
2013-09-13 23:56:00 +00:00
Howard Hinnant
f35fc7ad74
G M: Make valarray a little more forgiving to compilers not quite so gifted. This has no impact on clang.
...
llvm-svn: 190731
2013-09-13 23:27:42 +00:00
Marshall Clow
ef6f1151b0
Initial implementation of <dynarray>. No allocator support pending resolution of LWG #2235 ; no stack allocation pending compiler support
...
llvm-svn: 190697
2013-09-13 15:22:55 +00:00
Marshall Clow
3cd37e6456
LWG Issue 2210 (Part #6 ): unordered_map and unordered_multimap
...
llvm-svn: 190576
2013-09-12 03:00:31 +00:00
Marshall Clow
50c003b577
Implement uses-allocator construction
...
llvm-svn: 190571
2013-09-12 02:11:16 +00:00
Howard Hinnant
872ac4b5f0
A collection of minor type-o fixes. The first two aren't testable, but all tests pass with them. I stumbled across them while experimenting with a std::move that checks its argument for non-const. The third corrects a test that is currently failing.
...
llvm-svn: 190563
2013-09-12 00:10:44 +00:00
Marshall Clow
6e8ebb2ce9
Adding bad_array_length to libc++
...
llvm-svn: 190478
2013-09-11 01:38:42 +00:00
Marshall Clow
fbc317d480
LWG Issue #2210 Part 5 - map/multimap; no, really - the last one was set/multiset. THIS is map/multimap
...
llvm-svn: 190474
2013-09-11 01:15:47 +00:00
Marshall Clow
0a55d17bcd
LWG Issue #2210 Part 4 - map/multimap
...
llvm-svn: 190454
2013-09-11 00:06:45 +00:00
Marshall Clow
f1b6d1b538
Update synopsis for list/forward_list/deque to match the allocator style of existing comment. No code change
...
llvm-svn: 190320
2013-09-09 18:19:45 +00:00
Marshall Clow
fb8297668f
LWG Issue 2210 (Part #2 & #3 ): list and forward_list
...
llvm-svn: 190279
2013-09-08 19:11:51 +00:00
Marshall Clow
630c5e535c
LWG Issue 2210 (Part #1 ): deque
...
llvm-svn: 190251
2013-09-07 16:16:19 +00:00
Marshall Clow
ef44edfde4
N3545: Quoted strings
...
llvm-svn: 190032
2013-09-05 04:48:45 +00:00
Marshall Clow
5155a569d1
LWG Issue 2148: Hashing Enums
...
llvm-svn: 189831
2013-09-03 17:55:32 +00:00
Marshall Clow
710a902cac
Updated the synopsis for weak_ptr<T>::owner_before to match the code. No code changes.
...
llvm-svn: 189812
2013-09-03 14:37:50 +00:00
Howard Hinnant
e7d746d8b9
Implement N3672, optional<T>.
...
llvm-svn: 189772
2013-09-02 20:30:37 +00:00
Howard Hinnant
69bc206547
SFINAE out duration converting constructor if the constructor would otherwise cause a ratio compile-time overflow. This fixes LWG 2094.
...
llvm-svn: 189722
2013-08-31 16:51:56 +00:00
Howard Hinnant
525dc284b4
is_destructible for function types was mistakenly returning true instead of false. This is true in both C++11 and C++1y, but has been clarified by the post C++11 LWG issue 2049.
...
llvm-svn: 189687
2013-08-30 19:12:42 +00:00
Howard Hinnant
d0a4d73623
Xing Xue: Fix type-o. Thanks to C. Bergström for spotting it.
...
llvm-svn: 189674
2013-08-30 14:42:39 +00:00
Marshall Clow
1e548c72e7
LWG Issue 2128: Implement global cbegin/rbegin/cend/rbegin
...
llvm-svn: 189634
2013-08-30 01:17:07 +00:00
Howard Hinnant
b81766ca23
Glen: Remove unneeded _LIBCPP_ALWAYS_INLINE.
...
llvm-svn: 189626
2013-08-29 23:50:48 +00:00
Howard Hinnant
9762413621
Xing Xue: Some minor changes for IBM XLC++/AIX.
...
llvm-svn: 189623
2013-08-29 23:37:50 +00:00
Howard Hinnant
393068bb04
Turn off extern templates for most uses. It is causing more problems than it is worth. The extern templates will still be built into the dylib, mainly for ABI stability purposes. And the client can still turn these back on with a #define if desire. This fixes http://llvm.org/bugs/show_bug.cgi?id=17027 . However there's no associated test for the test suite because http://llvm.org/bugs/show_bug.cgi?id=17027 needs mismatched dylib and headers to fire.
...
llvm-svn: 189610
2013-08-29 20:56:53 +00:00
Marshall Clow
06fbed03fc
LWG Issue 2162: mark allocator_traits::maxsize as noexcept
...
llvm-svn: 189399
2013-08-27 20:22:15 +00:00
Marshall Clow
7988106b21
LWG issues 2174/5/6 - mark wstring_convert::converted as noexcept, and make (some of) the constructors for wstring_convert and wbuffer_convert as explicit. Add configuration macro _LIBCPP_EXPLICIT_AFTER_CXX11
...
llvm-svn: 189398
2013-08-27 20:18:59 +00:00
Marshall Clow
5320c2b563
Update synopsis in <locale> to match LWG Issue 2229. No code change
...
llvm-svn: 189352
2013-08-27 14:22:13 +00:00
Marshall Clow
54c83368a5
Implement LWG issue 2061
...
llvm-svn: 189345
2013-08-27 13:03:03 +00:00
Howard Hinnant
93288117a5
Apply constexpr to initializer_list for c++1y.
...
llvm-svn: 189271
2013-08-26 20:11:32 +00:00
Howard Hinnant
c9d3ae43d2
G M: Improve support for compilers not supporting defaulted functions.
...
llvm-svn: 189184
2013-08-24 21:31:37 +00:00
Howard Hinnant
145afa17ca
Rename _LIBCPP_DEBUG2 to _LIBCPP_DEBUG.
...
llvm-svn: 189140
2013-08-23 20:10:18 +00:00
Howard Hinnant
2f57df2aa9
Remove _LIBCPP_DEBUG. This was my first attempt at debug mode for libc++, and is now obsoleted by _LIBCPP_DEBUG2 (which isn't finished).
...
llvm-svn: 189135
2013-08-23 19:03:36 +00:00
Howard Hinnant
fc88dbd298
Debug mode for string. This commit also marks the first time libc++ debug-mode has found a bug (found one in regex). Had to play with extern templates a bit to get this to work since string is heavily used within libc++.dylib.
...
llvm-svn: 189114
2013-08-23 17:37:05 +00:00
Howard Hinnant
104024cb59
Glen: replace obsolete _LIBCPP_CANTTHROW with _NOEXCEPT.
...
llvm-svn: 189046
2013-08-22 19:39:03 +00:00
Howard Hinnant
179b1f8cf2
Zhihao Yuan noted that there were a few unneeded statements. Eliminated the unnecessary ones, and commented the ones that are there for non-obvious reasons such as to help things limp along in C++03 language mode.
...
llvm-svn: 189039
2013-08-22 18:29:50 +00:00
Howard Hinnant
9ff3203fcc
Zhihao Yuan noted that a move assignment operation was missing from std::adjacent_difference. Fixed.
...
llvm-svn: 189036
2013-08-22 18:02:34 +00:00
Howard Hinnant
d8bf850359
David Blaikie suggested this test for detecting constexpr on the error_category default constructor. Additionally I decided to make this constructor trivial as well, as I could not come up with a rationale for not doing so. Fully tested with both current Apple clang and tip-of-trunk clang.
...
llvm-svn: 189034
2013-08-22 17:41:48 +00:00
Marshall Clow
a86d516213
LWG 2145 - mark constructor for std::error_category as inline and constexpr. Leave the (existing, out-of-line, non-constexpr) in the dylib for compatibility with existing programs)
...
llvm-svn: 188858
2013-08-21 02:57:19 +00:00
Howard Hinnant
113f13d2a5
Relax complete-type check for functions and function pointers to allow void return type. This bug was exposed by Eli Friedman's commit to clang r188324. Anywhere this version of clang ships, this libc++ fix must follow. However this fix is compatible with previous clangs, and so this libc++ doesn't need to wait for this clang.
...
llvm-svn: 188413
2013-08-14 21:28:31 +00:00
Howard Hinnant
5d1a701d6d
Xing Xue: port to IBM XLC++/AIX.
...
llvm-svn: 188396
2013-08-14 18:00:20 +00:00
Marshall Clow
ede1aa2d31
Add a deleted assignment operator for basic_ostream; LWG Issue #2067
...
llvm-svn: 188375
2013-08-14 15:15:28 +00:00
Marshall Clow
2d6e2834a8
Implement LWG Issue #2187 (emplace_back and emplace for vector<bool>)
...
llvm-svn: 188333
2013-08-13 23:54:12 +00:00
Marshall Clow
2585835c3b
Second half (map/multimap) of N3657
...
llvm-svn: 188320
2013-08-13 22:18:47 +00:00
Marshall Clow
25d3402c6a
First half of support for N3657; heterogenous lookups for set/multiset
...
llvm-svn: 188241
2013-08-13 01:11:06 +00:00
Howard Hinnant
f0544c2086
Nico Rieck: this patch series fixes visibility issues on Windows as explained in < http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html >.
...
llvm-svn: 188192
2013-08-12 18:38:34 +00:00
Howard Hinnant
6afbc442d6
Add a check for arrays of unknown bounds to is_destructible. This fixes http://llvm.org/bugs/show_bug.cgi?id=16839
...
llvm-svn: 188080
2013-08-09 16:53:45 +00:00
Howard Hinnant
d7cda0680a
Partial implementation of N3665. This paper was not voted into the C++1y draft. However I was looking at it and with some experimentation realized that I could partially implement it, and at the same time offer a performance optimization to cout. I simply added an xsputn override to the cout filebuf. The override does nothing special at all if there is a non-trivial codecvt installed. However if the codecvt returns true for always_noconv(), then this function can dump an entire string to fwrite, instead of doing it a character at a time under overflow(). This just makes sense. I stopped short of a full implementation of N3665 because in order to do so, xsputn would have to allocate a buffer when always_noconv() returned false, and I don't want to go to that expense.
...
llvm-svn: 188077
2013-08-09 16:25:43 +00:00
Marshall Clow
2472b928d2
N3644 tests for map/multimap/set/multiset. Drive-by NOEXCEPT for __tree_const_iterator constructor. Fix comment typos in other tests
...
llvm-svn: 188019
2013-08-08 21:52:50 +00:00
Howard Hinnant
8c9742051d
My previous reorganization of addressof broke -std=c++03. Thanks much to Arnold Schwaighofer for catching this. This patch also catches a few more missing addressof in <future>, thanks go to Zhihao Yuan for catching these.
...
llvm-svn: 187997
2013-08-08 18:38:55 +00:00
Arnold Schwaighofer
5331e3a481
Revert r187927.
...
Zhihao Yuan: Replace operator& with addressof in reference_wrapper constructor.
It breaks a clang bootstrap.
llvm-svn: 187959
2013-08-08 03:06:24 +00:00
Howard Hinnant
9027f5e3de
Zhihao Yuan: Replace operator& with addressof in reference_wrapper constructor.
...
llvm-svn: 187927
2013-08-07 23:02:42 +00:00
Marshall Clow
2c1a894061
N3644 support for <unordered_set> and <unordered_map>
...
llvm-svn: 187915
2013-08-07 21:30:44 +00:00
Marshall Clow
36b2a3b0e5
N3644 support for vector<bool>
...
llvm-svn: 187911
2013-08-07 20:53:44 +00:00
Marshall Clow
07186a7d2d
N3644 support for <string> and <vector>
...
llvm-svn: 187909
2013-08-07 20:48:48 +00:00
Howard Hinnant
303e27d8ce
Correct logic bug in find optimization for vector<bool>. This fixes http://llvm.org/bugs/show_bug.cgi?id=16816
...
llvm-svn: 187908
2013-08-07 20:42:16 +00:00
Howard Hinnant
d098713aaf
War on tabs
...
llvm-svn: 187906
2013-08-07 19:39:48 +00:00
Marshall Clow
8fe0a3722c
Implement NULL iterators for <forward_list> and <deque> re: N3644
...
llvm-svn: 187805
2013-08-06 16:14:36 +00:00
Marshall Clow
0c37cfd8b8
Implement NULL iterators for <list> re: N3644
...
llvm-svn: 187740
2013-08-05 21:23:28 +00:00
Howard Hinnant
2f51de568f
debug mode for unordered_map. Also picked up a missing check and test in unordered_multimap. This wraps up debug mode for the unordered containers.
...
llvm-svn: 187659
2013-08-02 17:50:49 +00:00
Howard Hinnant
42a3046eef
Ok, 3 major changes for debug mode in one commit:
...
1. I had been detecting and trapping iterator == and \!= among iterators
in different containers as an error. But the trapping itself is actually
an error.
Consider:
#include <iostream>
#include <vector>
#include <algorithm>
template <class C>
void
display(const C& c)
{
std::cout << "{";
bool first = true;
for (const auto& x : c)
{
if (\!first)
std::cout << ", ";
first = false;
std::cout << x;
}
std::cout << "}\n";
}
int
main()
{
typedef std::vector<int> V;
V v1 = {1, 3, 5};
V v2 = {2, 4, 6};
display(v1);
display(v2);
V::iterator i = std::find(v1.begin(), v1.end(), 1);
V::iterator j = std::find(v2.begin(), v2.end(), 2);
if (*i == *j)
i = j; // perfectly legal
// ...
if (i \!= j) // the only way to check
v2.push_back(*i);
display(v1);
display(v2);
}
It is legal to assign an iterator from one container to another of the
same type. This is required to work. One might want to test whether or
not such an assignment had been made. The way one performs such a check
is using the iterator's ==, \!= operator. This is a logical and necessary
function and does not constitute an error.
2. I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
This caused a problem in several of the libc++ tests.
Fixed.
3. There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
std::basic_string is inoperable. std::basic_string uses __wrap_iterator
to implement its iterators. __wrap_iterator has been rigged up in debug
mode to support vector. But string hasn't been rigged up yet. This means
that one gets false positives when using std::string in debug mode. I've
upped std::string's priority in www/debug_mode.html.
llvm-svn: 187636
2013-08-02 00:26:35 +00:00
Howard Hinnant
0be8f64c44
Nico Rieck: Currently _MSC_VER and _WIN32 are used to guard code which is
...
MSVC-specific, MSVCRT-specific, or Windows-specific. Because Clang can
also define _MSC_VER, and MSVCRT is not necessarily the only C runtime,
these macros should not be used interchangeably.
This patch divides all Windows-related bits into the aforementioned
categories. Two new macros are introduced:
- _LIBCPP_MSVC: Defined when compiling with MSVC. Detected using
_MSC_VER, excluding Clang.
- _LIBCPP_MSVCRT: Defined when using the Microsoft CRT. This is the default
when _WIN32 is defined.
This leaves _WIN32 for code using the Windows API.
This also corrects the spelling of _LIBCP_HAS_IS_BASE_OF to _LIBCPP_HAS_IS_BASE_OF.
Nico, please prepare a patch for CREDITS.TXT, thanks.
llvm-svn: 187593
2013-08-01 18:17:34 +00:00
Howard Hinnant
0f242bea10
Taking another swing at correctly optimizing fill_n.
...
llvm-svn: 187587
2013-08-01 17:29:28 +00:00
Howard Hinnant
ce075cf1aa
Constrain fill_n -> memset operations to include implicit convertibility to unsigned char. This fixes http://llvm.org/bugs/show_bug.cgi?id=16764 . Also a drive-by fix on a chrono test suite bug.
...
llvm-svn: 187552
2013-08-01 00:41:55 +00:00
Marshall Clow
a1cd191624
Implement constexpr (n3302) and fix operator *= and /=
...
llvm-svn: 187529
2013-07-31 21:02:34 +00:00
Marshall Clow
df67172d59
Backwards!
...
llvm-svn: 187518
2013-07-31 19:39:37 +00:00
Marshall Clow
a1d0d376c8
Implement n3469 - constexpr for chrono
...
llvm-svn: 187517
2013-07-31 19:32:19 +00:00
Howard Hinnant
4c80bfbd53
Debug mode for unordered_multimap. Some mods were done for unordered_map as well to keep all the tests passing. However unordered_map is at the very least still missing tests, if not functionality (if it isn't tested, it probably isn't working).
...
llvm-svn: 187446
2013-07-30 21:04:42 +00:00
Howard Hinnant
e5c13decbe
Debug mode for unordered_multiset. The exercise spotted a few places I had missed on unordered_set, so I picked those up as well.
...
There are actually two debug modes:
1. -D_LIBCPP_DEBUG2 or -D_LIBCPP_DEBUG2=1
This is a relatively expensive debug mode, but very thorough. This is normally what you want to debug with, but may turn O(1) operations into O(N) operations.
2. -D_LIBCPP_DEBUG2=0
This is "debug lite." Only preconditions that can be checked with O(1) expense are checked. For example range checking on an indexing operation. But not iterator validity.
llvm-svn: 187369
2013-07-29 19:05:47 +00:00
Marshall Clow
83c08b4497
Implement N3421; comparison predicates<void>
...
llvm-svn: 187357
2013-07-29 14:21:53 +00:00
Marshall Clow
7aa54577d1
literal suffixes for std::chrono
...
llvm-svn: 187078
2013-07-24 21:18:14 +00:00
Howard Hinnant
b24c802489
Debug mode for unordered_set. I believe this to be fairly complete for
...
unordered_set, however it is not complete yet for unordered_multiset,
unordered_map or unordered_multimap. There has been a lot of work done
for these other three containers, however that work was done just to
keep all of the tests passing.
You can try this out with -D_LIBCPP_DEBUG2. You will have to link to a
libc++.dylib that has been compiled with src/debug.cpp. So far, vector
(but not vector<bool>), list, and unordered_set are treated. I hope to
get the other three unordered containers up fairly quickly now that
unordered_set is done.
The flag _LIBCPP_DEBUG2 will eventually be changed to _LIBCPP_DEBUG, but
not today. This is my second effort at getting debug mode going for
libc++, and I'm not quite yet ready to throw all of the work under the
first attempt away.
The basic design is that all of the debug information is kept in a
central database, instead of in the containers. This has been done as
an attempt to have debug mode and non-debug mode be ABI compatible with
each other. There are some circumstances where if you construct a
container in an environment without debug mode and pass it into debug
mode, the checking will get confused and let you know with a readable
error message. Passing containers the other way: from debug mode out to
a non-debugging mode container should be 100% safe (at least that is the
goal).
llvm-svn: 186991
2013-07-23 22:01:58 +00:00
Marshall Clow
ca0be23b39
Implement string suffixes from N3642
...
llvm-svn: 186956
2013-07-23 17:05:24 +00:00
Howard Hinnant
7491a16031
Bill Fisher: This patch fixes a bug where std::regex in ECMAScript mode was ignoring capture groups inside lookahead assertions.
...
For example, matching /(?=(a))(a)/ to "a" should yield two captures: \1 = "a", \2 = "a"
llvm-svn: 186954
2013-07-23 16:18:04 +00:00
Richard Smith
79c06417d1
Add some missing cv-qualifiers.
...
llvm-svn: 186909
2013-07-23 01:24:30 +00:00
Anders Carlsson
8bb1dbbf75
Fix a bug in std::fill_n where memset would end up being called in cases when it shouldn’t.
...
Reviewed by Howard.
llvm-svn: 186875
2013-07-22 21:08:00 +00:00
Marshall Clow
75eff74803
Make tuple's constructor and std::get<>(tuple) constexpr. Final stage of fixing bug #16599 . Thanks to Howard for the review and updates.
...
llvm-svn: 186834
2013-07-22 16:02:19 +00:00
Marshall Clow
8bf1f08a2c
Make std::get constexpr
...
llvm-svn: 186525
2013-07-17 18:25:36 +00:00
Marshall Clow
18191ceb54
Bug 16599 part 2: Make std::pair's constructors and comparison operators (and make_pair) constexpr.
...
llvm-svn: 186430
2013-07-16 17:45:44 +00:00
Marshall Clow
1c682f0f0c
Make std::forward and std::move (and std::move_if_noexcept) constexpr in C++14
...
llvm-svn: 186344
2013-07-15 20:46:11 +00:00
Howard Hinnant
22161401df
Bill Fisher: This patch fixes an ill-formed comparison when parsing control escapes, e.g. "\cA\ca". The code will now throw an error_escape exception for invalid control sequences like "\c:" or "\c".
...
I've added the test cases to bad_escape.pass.cpp.
llvm-svn: 186335
2013-07-15 18:21:11 +00:00
Marshall Clow
f20d2672e2
Add macro _LIBCPP_CONSTEXPR_AFTER_CXX11 for functions that have been marked constexpr post C++11
...
llvm-svn: 186323
2013-07-15 14:57:19 +00:00
Marshall Clow
e99520c72e
Implement n3584 - Addressing Tuples by Type
...
llvm-svn: 186237
2013-07-13 02:54:05 +00:00
Howard Hinnant
c815a4e297
Bill Fisher: This patch fixes a less likely case where '\b' can back up into invalid memory, when driven by a regex_iterator (for case 1, see r185273 or http://llvm.org/bugs/show_bug.cgi?id=16240 )
...
The attached test program also supplies a test for the case 1 fix in r185273.
llvm-svn: 186089
2013-07-11 15:32:55 +00:00
Marshall Clow
8e1cb5adb3
move __save_flags from <random> to <ios> in preparation for reuse; no functionality change
...
llvm-svn: 185968
2013-07-09 20:34:14 +00:00
Howard Hinnant
dbdeb153d8
Bill Fisher: This patch fixes a bug where regex_iterator doesn't indicate when it's restarting in the middle of a string. This bug causes /^a/ to match in the middle of the string "aaaaaaa", during iteration.
...
My patch uses to communicate when is false.
llvm-svn: 185950
2013-07-09 17:29:09 +00:00
Howard Hinnant
e0fe3d2e96
War on tabs.
...
llvm-svn: 185865
2013-07-08 21:06:38 +00:00
Marshall Clow
a7b0e5ddf8
Implement n3668 - std::exchange
...
llvm-svn: 185863
2013-07-08 20:54:40 +00:00
Marshall Clow
f331327c6a
Implement n3545 for c++14
...
llvm-svn: 185856
2013-07-08 20:05:31 +00:00
Howard Hinnant
abb160e689
Remove implicit conversion from __value_type to value_type in [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16549
...
llvm-svn: 185711
2013-07-05 18:06:00 +00:00
Howard Hinnant
4a95f9eb7e
Removed extension in [unordered_][multi]map which allowed one to emplace using just an argument for the key, as opposed to using piecewise_construct. However a bug report exposed that this created an unfortunate ambiguity. People who are currently using the extension will be notified the next time they compile, and will have to change to using piecewise_construct. There are no ABI issues with the removal of this extension. This fixes http://llvm.org/bugs/show_bug.cgi?id=16542
...
llvm-svn: 185666
2013-07-04 20:59:16 +00:00
Howard Hinnant
bbdf669bde
Simplify comparators of [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16538
...
llvm-svn: 185665
2013-07-04 19:46:35 +00:00
Marshall Clow
5b2ef2b1a6
Patch for N3655 (Transformation type traits) with Howard's additions
...
llvm-svn: 185597
2013-07-04 00:10:01 +00:00
Marshall Clow
60df5996a4
Commit patch for integer sequences. Suggested by Richard, reworked by Howard, and annotated by me
...
llvm-svn: 185569
2013-07-03 19:20:30 +00:00
Howard Hinnant
84b569d5cf
Matthew Dempsky: Attached patch replaces the type punning with memcpy(), which on
...
x86/x86-64 clang optimizes to direct word accesses anyway. This fixes an unaligned word access in murmurhash/cityhash.
llvm-svn: 185558
2013-07-03 17:39:28 +00:00
Marshall Clow
95ddb53049
Adorn make_unique with visibility and inline attributes
...
llvm-svn: 185468
2013-07-02 20:06:09 +00:00
Howard Hinnant
9cfcdcb9e2
Matthew Dempsky: In libc++'s <locale>, there's already dependence on an snprintf_l
...
implementation and all of the char buffers readily have their
allocated size available, so we can easily use snprintf_l instead of
sprintf_l.
This avoids OpenBSD's linker warnings against using sprintf and
vsprintf.
Howard: Please consider a patch for CREDITS.TXT
llvm-svn: 185457
2013-07-02 18:42:28 +00:00
Howard Hinnant
3fc9ef22b3
Constrain launch ~ operator to defined bits.
...
llvm-svn: 185452
2013-07-02 18:01:41 +00:00
Howard Hinnant
43bbdd29de
Bill Fisher: This patch fixes a bug where the regex parser doesn't advance the pointer after reading the third character of an octal escape (in awk mode).
...
That is, regex{"\141", awk} results in the regular expression /a1/ instead of just /a/.
llvm-svn: 185449
2013-07-02 17:43:31 +00:00
Marshall Clow
28d8ba5f79
Implement n3656 - make_unique. Thanks to Howard for the review and suggestions.
...
llvm-svn: 185352
2013-07-01 18:16:03 +00:00
Marshall Clow
d51891063f
Implement n3658 - Compile-time integer sequences
...
llvm-svn: 185343
2013-07-01 16:26:55 +00:00
Howard Hinnant
eecacc0fad
In istream::ignore, check the delimeter as an int_type, not as a char_type, so as to correctly handle EOF. This fixes http://llvm.org/bugs/show_bug.cgi?id=16427
...
llvm-svn: 185298
2013-07-01 00:37:50 +00:00
Howard Hinnant
9dbbf8dece
The bind and function functor constructors and assignment operators were overly general and getting confused with the copy constructor and copy assignment operators. Constrained them. This fixes http://llvm.org/bugs/show_bug.cgi?id=16385
...
llvm-svn: 185297
2013-07-01 00:01:51 +00:00
Howard Hinnant
9bf42533b7
Fix bind by making _is_valid_bind_return more robust. It should return false instead of give a compile time error, always. The problem was down in ____mu_return, the version that handles nested bind objects. This fixes http://llvm.org/bugs/show_bug.cgi?id=16343
...
llvm-svn: 185289
2013-06-30 19:48:15 +00:00
Howard Hinnant
660f2ae422
Prevent '\b' from backing up into invalid memory. Fixes http://llvm.org/bugs/show_bug.cgi?id=16240 . Sorry, I can not think of a good test case for this one, except by running valgrind as reported in the bug.
...
llvm-svn: 185273
2013-06-29 23:45:43 +00:00
Howard Hinnant
1836462545
Add operators to make launch a bitmask type. Searched all of the standard, and libc++ to see if this error occurred elsewhere and didn't see any other place. This fixes http://llvm.org/bugs/show_bug.cgi?id=16207
...
llvm-svn: 185265
2013-06-29 18:38:17 +00:00
Howard Hinnant
e9672d0448
Make cout a little more thread-safe. This fixes http://llvm.org/bugs/show_bug.cgi?id=12158
...
llvm-svn: 185222
2013-06-28 21:40:28 +00:00
Howard Hinnant
3f75953d82
Provide missing '{' in parsing extended quoted characters. This fixes http://llvm.org/bugs/show_bug.cgi?id=16135
...
llvm-svn: 185211
2013-06-28 20:31:05 +00:00
Howard Hinnant
8d1e822432
William Fisher: A bug in __lookahead::exec causes /(?=^)b/ to match ab. When makes a recursive call to , it passes true for the value of . This causes a beginning-of-line anchor (^) inside a lookahead assertion to match anywhere in the text. This fixes http://llvm.org/bugs/show_bug.cgi?id=11118
...
llvm-svn: 185196
2013-06-28 19:11:23 +00:00
Howard Hinnant
21246e3314
Bill Fisher: Fix for failing to throw an exception in regex when parsing an invalid escape sequence. This fixes http://llvm.org/bugs/show_bug.cgi?id=16023
...
llvm-svn: 185192
2013-06-28 18:57:30 +00:00
Howard Hinnant
afe8b967cc
Dimitry Andric: Add const to constexpr member functions in order to cope with new C++1y language rules. This silences -Wconstexpr-not-const warnings.
...
llvm-svn: 185181
2013-06-28 18:09:35 +00:00
Howard Hinnant
eec721826c
Implement full support for non-pointer pointers in custom allocators for string. This completes the custom pointer support for the entire library.
...
llvm-svn: 185167
2013-06-28 16:59:19 +00:00
Howard Hinnant
3ec1f00b73
Implement full support for non-pointer pointers in custom allocators for vector.
...
llvm-svn: 185093
2013-06-27 19:35:32 +00:00
Howard Hinnant
866d4efa7f
Implement full support for non-pointer pointers in custom allocators for list.
...
llvm-svn: 184859
2013-06-25 16:08:47 +00:00
Howard Hinnant
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
Dmitri Gribenko
c3f9c80894
Fix typo in assertion message. Reported by Shriramana Sharma.
...
llvm-svn: 184691
2013-06-24 06:15:57 +00:00
Howard Hinnant
14e200d14d
Implement full support for non-pointer pointers in custom allocators for deque.
...
llvm-svn: 184673
2013-06-23 21:17:24 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
9d3ccc700f
Neglected to remove a debugging comment from last commit.
...
llvm-svn: 182422
2013-05-21 21:19:35 +00:00
Howard Hinnant
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
Joerg Sonnenberger
50544e7e65
Add NetBSD support.
...
llvm-svn: 182162
2013-05-17 21:17:34 +00:00
Howard Hinnant
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
Howard Hinnant
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
David Blaikie
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
Howard Hinnant
9449989601
İsmail Dönmez: Enable quick_exit on linux.
...
llvm-svn: 181612
2013-05-10 17:36:59 +00:00
Marshall Clow
fce85ba455
Fix incorrect type usage; nice catch by Sebastian
...
llvm-svn: 181569
2013-05-10 00:16:10 +00:00
Marshall Clow
0b0bbd2f22
Implement n3607: 'equal', 'mismatch', and 'is_permutation'
...
llvm-svn: 181548
2013-05-09 21:14:23 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Joerg Sonnenberger
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
Joerg Sonnenberger
a39fe8c59e
GCC doesn't support __has_attribute.
...
llvm-svn: 180683
2013-04-27 20:51:42 +00:00
Howard Hinnant
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
Howard Hinnant
210051548e
Modest performance improvement for std::string's operator==.
...
llvm-svn: 180072
2013-04-22 23:55:13 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
b0e4c9d01b
More work on debug mode for list.
...
llvm-svn: 178819
2013-04-05 00:18:49 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
b3adefc34c
Second try at r178075. The llvm breakage has been fixed by r178240.
...
llvm-svn: 178253
2013-03-28 17:44:32 +00:00
Howard Hinnant
a4d35ce2bf
Add missing #ifndef _LIBCPP_NO_EXCEPTIONS around throw in include/thread.
...
llvm-svn: 178237
2013-03-28 15:00:04 +00:00
Daniel Dunbar
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
92bd7c0337
Debug mode: learning to crawl. I need to set up some tests that actually test that the debug mode is working, but that won't cause problems when debug mode isn't on. This is my first prototype of such a test. It should call std::terminate() because it's comparing iterators from different containers. And std::terminate() is rigged up to exit normally. If debug mode fails, and doesn't call terminate, then the program asserts. The test is a no-op if _LIBCPP_DEBUG2 is not defined or is defined to be 0.
...
llvm-svn: 177892
2013-03-25 19:29:35 +00:00
Marshall Clow
c962cdf8a5
Fix buffer read overflow in money_get::do_get(). Found by UBSan
...
llvm-svn: 177694
2013-03-22 02:14:40 +00:00
Marshall Clow
1c2c986796
Fix undefined behavior in syntax_option_type::operator~ and match_flag_type::operator./a.out Found by UBSan
...
llvm-svn: 177693
2013-03-22 02:13:55 +00:00
Howard Hinnant
591ebe3cbb
This is an optimization which produces improved launching time. There should be no functionality change. Clients should see no ABI differences.
...
llvm-svn: 177443
2013-03-19 21:34:48 +00:00
Marshall Clow
69e76f80e2
Removed raw references to __sun__, __FreeBSD__, __GLIBC__ and __linux__; now just check to see if they are defined.
...
llvm-svn: 177310
2013-03-18 19:34:07 +00:00
Marshall Clow
7415c8b171
Removed raw references to _MSC_VER; now just check to see if it is defined.
...
llvm-svn: 177304
2013-03-18 18:20:48 +00:00
Marshall Clow
b56e8587af
Removed raw references to __APPLE__; now just check to see if it is defined.
...
llvm-svn: 177297
2013-03-18 17:45:34 +00:00
Marshall Clow
91907cbe82
Removed raw references to _WIN32; now just check to see if it is defined.
...
llvm-svn: 177291
2013-03-18 17:04:29 +00:00
Howard Hinnant
41801f14ed
This SO question: http://stackoverflow.com/questions/15344402/how-can-i-read-a-0xff-in-a-file-with-libc-istream-iterator/15347225#15347225 highlighted the lack of a cast in the implementation of std::cin. Added. I unfortunately don't have a test case to add to the suite since this bug only shows itself when using std::cin. The current testsuite setup does not have a way a good way to test std::cin.
...
llvm-svn: 176822
2013-03-11 19:53:48 +00:00
Howard Hinnant
7e4844b353
Parsing floating point numbers with very long precision was broken, and this patch fixes it. This fixes http://llvm.org/bugs/show_bug.cgi?id=15445 .
...
llvm-svn: 176711
2013-03-08 19:06:24 +00:00
Howard Hinnant
c60bf548c5
Albert Wong: definition for regex_traits<_CharT>::__regex_word.
...
llvm-svn: 176640
2013-03-07 19:38:08 +00:00
Howard Hinnant
ead480d30a
Change _LIBCPP_TYPE_VIS to use __type_visibility__(default) instead of __visibility__(default) when available. This change makes just the type_info visible so that types like vectors and strings can be used as exception objects across dylib boundaries even when hidden visibility is specified globally (at the command line), and yet this allows clients to hide the member functions of things like vector and string (with global visibility commands).
...
llvm-svn: 176639
2013-03-07 19:25:03 +00:00
Howard Hinnant
6e41256f68
No functionality change at this time. I've split _LIBCPP_VISIBLE up into two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute.
...
llvm-svn: 176593
2013-03-06 23:30:19 +00:00
Howard Hinnant
65f58f3fe8
Have basic_istream::read call sgetn intead of sbumpc individual characters. This addresses http://llvm.org/bugs/show_bug.cgi?id=15427 .
...
llvm-svn: 176573
2013-03-06 19:27:56 +00:00
Howard Hinnant
3fb6c6e50d
Correct silly type-o. Thanks Richard.
...
llvm-svn: 176568
2013-03-06 18:16:12 +00:00
Howard Hinnant
53b9ee061f
The bitset(unsigned long long) constructor was broken by the constexpr additions only on 32 bit platforms. Fixed. This addresses http://llvm.org/bugs/show_bug.cgi?id=15444 .
...
llvm-svn: 176559
2013-03-06 17:30:26 +00:00
Howard Hinnant
a9f698009f
Alexey Samsonov: #ifdefs out undefined function in static build of libc++ w/o RTTI.
...
llvm-svn: 176026
2013-02-25 15:50:36 +00:00
Howard Hinnant
c0c9748c11
Constrain bind operator()() to not exist if the call is not valid. Fixes http://llvm.org/bugs/show_bug.cgi?id=15295 .
...
llvm-svn: 175774
2013-02-21 18:16:55 +00:00
Marshall Clow
b6e5f854f5
Change the 'result_type' from unsigned to 'uint_fast32_t'. This eliminates truncation warnings on Linux
...
llvm-svn: 174669
2013-02-07 22:12:02 +00:00
Howard Hinnant
aba500d633
Revert accidental check-in. These changes are probably good, but premature at this point.
...
llvm-svn: 174625
2013-02-07 15:31:44 +00:00
Howard Hinnant
804f9116e5
Michael van der Westhuizen: The attached patch add support for building against libc++abi and libcxxrt to CMake builds of libc++.
...
Usage (with the appropriate CC and CXX environment variables) is:
$ cmake -DLIBCXX_CXX_ABI=libcxxabi '-DLIBCXX_LIBCXXABI_INCLUDE_PATHS=/home/michael/libcxxabi/include' ../libcxx
and:
$ cmake -DLIBCXX_CXX_ABI=libcxxrt '-DLIBCXX_LIBCXXRT_INCLUDE_PATHS=/home/michael/libcxxrt/src' ../libcxx
llvm-svn: 174623
2013-02-07 15:27:39 +00:00
Howard Hinnant
d3d4356f6e
Marcin Zalewski: Change the name of a template parameter in __copy_backward from _InputIterator to _BidirectionalIterator to better document the intent of the algorithm.
...
llvm-svn: 174544
2013-02-06 21:03:39 +00:00
Howard Hinnant
2446649c1e
Saleem Abdulrasool: If errno is defined as volatile int, the qualifier differences can cause
...
template typename deductions on swap<> (used in string.cpp). Use
decltype(errno) to replicate the type and qualifier information for holding the
errno value. Because errno is expected to be assignable, there is no need to
use typename std::remove_const<decltype(errno)>::type to hold the value.
llvm-svn: 173172
2013-01-22 17:26:08 +00:00
Howard Hinnant
ead15d1f95
Implement the ATOMIC_*_LOCK_FREE macros.
...
llvm-svn: 173084
2013-01-21 20:39:41 +00:00
Howard Hinnant
8d3e797444
Donated anonymously: This enables GCC 4.8.0 to build libc++.
...
llvm-svn: 173060
2013-01-21 17:26:55 +00:00
Howard Hinnant
3d7eb2f806
Optimize basic_ostream::write by having it call sputn instead of sputc.
...
llvm-svn: 172542
2013-01-15 17:22:03 +00:00
Howard Hinnant
980e7e7402
Make <cmath> classification macros work with integral types.
...
llvm-svn: 172461
2013-01-14 20:56:22 +00:00
Howard Hinnant
2153d69672
Fix a race in the construction of future. This fixes http://llvm.org/bugs/show_bug.cgi?id=14934 .
...
llvm-svn: 172456
2013-01-14 20:01:24 +00:00
Howard Hinnant
f1e633c154
Michael van der Westhuizen: Patches for Linux. Fixes http://llvm.org/bugs/show_bug.cgi?id=14648 .
...
llvm-svn: 172435
2013-01-14 17:07:27 +00:00
Howard Hinnant
8d9aec8802
Fix exception safety bug in vector::push_back
...
llvm-svn: 172250
2013-01-11 20:36:59 +00:00
Howard Hinnant
114676622f
atomic_bool was missing (just a typedef to atomic<bool>).
...
llvm-svn: 171498
2013-01-04 18:58:50 +00:00
Howard Hinnant
861f006d3f
Klaas de Vries: Fix bug in libc++'s std::string::find_first_not_of.
...
llvm-svn: 171321
2012-12-31 20:09:48 +00:00
Chandler Carruth
e70a813b59
Don't mark variadic functions as always inline -- they cannot in fact be
...
inlined.
Patch by Saleem Abdulrasool, reviewed by Michael Spencer and Richard Smith.
llvm-svn: 171276
2012-12-31 06:09:54 +00:00
Howard Hinnant
a96d74585f
Remove test for eof from istreambuf_iterator constructors. It is no longer necessary and potentially violates the constructor's noexcept spec.
...
llvm-svn: 171232
2012-12-29 17:45:42 +00:00
Howard Hinnant
3b42bdd58a
Hyeon-Bin Jeong: readsome() need to reset gcount to zero. This fixes http://llvm.org/bugs/show_bug.cgi?id=14670 .
...
llvm-svn: 170703
2012-12-20 15:40:28 +00:00
Richard Smith
e3fbbccc0f
Implement std::is_base_of for the case where we don't have a compiler
...
intrinsic. This relies upon the fact that overload resolution does not check
access and ambiguity for a derived-to-base conversion. This passes all
is_base_of tests in the test suite.
llvm-svn: 170662
2012-12-20 04:20:28 +00:00
Marshall Clow
36a60721ce
Added static_assert to std::get<N>(std::array) calls to catch "out of bounds" calls
...
llvm-svn: 170435
2012-12-18 16:46:30 +00:00
Howard Hinnant
16694b5df5
Zhang Xiongpang: Add definitions for const data members. Fixes http://llvm.org/bugs/show_bug.cgi?id=14585 .
...
llvm-svn: 170026
2012-12-12 21:14:28 +00:00
Richard Smith
e1f363c724
Remove 'noreturn' attribute from friend declaration. This attribute will be
...
inherited from the previous out-of-class declaration, and attributes on friend
function declarations are ill-formed in C++11.
llvm-svn: 168853
2012-11-29 04:30:50 +00:00
Howard Hinnant
f8b24cf5f7
Dimitry Andric: When using libc++ headers on FreeBSD, in combination with -std=c++98,
...
-ansi or -std=c++03, the long long type is not supported. So in this
case, several functions and types, like lldiv_t, strtoll(), are not
declared.
llvm-svn: 168610
2012-11-26 21:18:17 +00:00
Howard Hinnant
dfdf5085df
istreambuf_iterator increment should call sbumpc instead of snextc. Patch
...
by Kimball Thurston. This fixes http://llvm.org/bugs/show_bug.cgi?id=14358 .
llvm-svn: 168209
2012-11-16 22:17:23 +00:00
Howard Hinnant
b5c63a2e07
Restrict optimized __pad_and_output implementation detail to desired releases.
...
llvm-svn: 167980
2012-11-14 21:17:15 +00:00
Howard Hinnant
119703f984
Dimitry Andric: Silence some miscellaneous warnings.
...
llvm-svn: 167493
2012-11-06 21:55:44 +00:00
Howard Hinnant
3e2740a36c
Dimitry Andric: Silence some warnings in <locale>.
...
llvm-svn: 167492
2012-11-06 21:48:33 +00:00
Howard Hinnant
a01739a03a
Enable the tuple interface of pair in C++03 mode.
...
llvm-svn: 167491
2012-11-06 21:42:45 +00:00
Howard Hinnant
cd47cbc7a4
Provide a way to disable use of extern templates in libc++. This is intended for the clients of libc++, not the libc++ build. The dylib should always contain the extern templates. To disable the client needs to put -D'_LIBCPP_EXTERN_TEMPLATE(...)=' on the command line.
...
llvm-svn: 167486
2012-11-06 21:08:48 +00:00
Howard Hinnant
66e7ed959f
peek should set eofbit if sgetc() returns eof.
...
llvm-svn: 167238
2012-11-01 17:32:07 +00:00
Howard Hinnant
b304811686
Richard Smith: This fixes a problem in std::is_constructible for incomplete types, and those types with a user-defined operator,().
...
llvm-svn: 167233
2012-11-01 16:32:14 +00:00
Howard Hinnant
54d333a601
Rename uses of _ and __ because these are getting stepped on by macros from other system code.
...
llvm-svn: 167038
2012-10-30 19:06:59 +00:00
Howard Hinnant
6758190507
Use traits_type::to_int_type in basic_streambuf<_CharT, _Traits>::xsputn when calling overflow to correctly handle negative signed character types. This fixes http://llvm.org/bugs/show_bug.cgi?id=14074 .
...
llvm-svn: 165884
2012-10-13 19:31:51 +00:00
Howard Hinnant
7ba8160360
Dimitry Andric: FreeBSD only: Add the C11 aligned_alloc to <cstdlib> and adjust the inclusion of quick_exit.
...
llvm-svn: 165882
2012-10-13 18:03:53 +00:00
Argyrios Kyrtzidis
88db3171dd
Don't neglect to "return *this".
...
llvm-svn: 165860
2012-10-13 02:03:45 +00:00
Howard Hinnant
f543a75be1
Holger Arnold: Correct the use and testing of __GNUC__ and __GNUC_MINOR__ in <__config>.
...
llvm-svn: 165151
2012-10-03 20:48:05 +00:00
Howard Hinnant
6e551ae1a3
Make vector::iterator and string::iterator more resilient against overly generic relational operators.
...
llvm-svn: 165033
2012-10-02 19:45:42 +00:00
Howard Hinnant
59fb5c6559
Due to a mistake on my own part, I need to burn some version numbers. This does not impact any of the implementation of libc++, and does not impact the ABI in any way.
...
llvm-svn: 164832
2012-09-28 17:42:25 +00:00
Howard Hinnant
324c084654
Bump _LIBCPP_VERSION to 1002
...
llvm-svn: 164700
2012-09-26 15:38:09 +00:00
Howard Hinnant
8e747d3671
Apply the emulated nullptr_t with constexpr. This is an unusual configuration that would take advantage of this. But it has popped up in the wild and does no harm to support it.
...
llvm-svn: 164575
2012-09-24 23:36:40 +00:00
Howard Hinnant
c43826f003
Add overflow check to tanh(complex) and reduce to finite answer. Fixes http://llvm.org/bugs/show_bug.cgi?id=13874
...
llvm-svn: 164266
2012-09-19 23:51:47 +00:00
Howard Hinnant
92b5940fbb
Overloaded __pad_and_output on ostreambuf_iterator and in this overload call sputn instead of dereferencing the iterator which calls sputc. This is intended to be purely a performance optimization, especially for clients who may have overloaded the virtual function xsputn.
...
llvm-svn: 164241
2012-09-19 19:14:15 +00:00
Howard Hinnant
a0bc10dca6
Align <atomic> with clang r163964 which disallows const _Atomic types.
...
llvm-svn: 164004
2012-09-16 20:33:09 +00:00
Howard Hinnant
aeb85680fb
Dimitry Andric: many visibility fixes. Howard: Much appreciated. Can you send me a patch to CREDITS.TXT?
...
llvm-svn: 163862
2012-09-14 00:39:16 +00:00
Howard Hinnant
ab303f7e47
Dimitry Andric: FreeBSD porting tweaks for PTHREAD_MUTEX_INITIALIZER and PTHREAD_COND_INITIALIZER
...
llvm-svn: 163626
2012-09-11 16:10:20 +00:00
Howard Hinnant
49713b442c
Some minor mingw64 porting tweaks from Glen.
...
llvm-svn: 163120
2012-09-03 18:13:11 +00:00
Howard Hinnant
aad745a024
Change sleep_for, sleep_until, and the condition_variable timed wait
...
functions to protect against duration and time_point overflow. Since
we're about to wait anyway, we can afford to spend a few more cycles on
this checking. I purposefully did not treat the timed try_locks with
overflow checking. This fixes
http://llvm.org/bugs/show_bug.cgi?id=13721 . I'm unsure if the standard
needs clarification in this area, or if this is simply QOI. The
<chrono> facilities were never intended to overflow check, but just to
not overflow if durations stayed within +/- 292 years.
llvm-svn: 162925
2012-08-30 19:14:33 +00:00
Howard Hinnant
3320c058bf
Hyeon-bin Jeong: libc++ fails to create any classes inherit from basic_ios if they
...
provided char type other than char or wchar_t. It throw exception during
construction, so there is no chance to imbue own ctype.
This fixes http://llvm.org/bugs/show_bug.cgi?id=13698
llvm-svn: 162648
2012-08-26 18:05:35 +00:00
Howard Hinnant
e890ab2377
Michel Morin: My previous fix for C++03 was incomplete.
...
It does not consider user-defined conversions that convert an rvalue
into an lvalue and works incorrectly for types with such a conversion
operator.
For example,
struct foo
{
operator int&();
};
returns false_type.
Attached a patch that fixes this problem.
http://llvm.org/bugs/show_bug.cgi?id=13601
llvm-svn: 162644
2012-08-25 15:06:50 +00:00
Howard Hinnant
dbbdd0c1f0
Have basic_istream seekg, putback and unget first clear eofbit. Fixes http://llvm.org/bugs/show_bug.cgi?id=13089 .
...
llvm-svn: 162608
2012-08-24 22:03:03 +00:00
Howard Hinnant
bfd96e11ed
Hyeon-Bin Jeong: 1. sync() should reset it’s external buffer pointers.
...
Remaining characters should be discarded once sync() called. If don’t, garbage
characters can be inserted to the front of external buffer in underflow().
Because underflow() copies remaining characters in external buffer to it’s
front. This results wrong characters insertion when seekpos() or seekoff() is
called.
this line should be inserted in sync() just before return:
__extbufnext_ = __extbufend_ = __extbuf_;
2. sync() should use length() rather than out() to calculate offset.
Reversing iterators and calling out() to calculate offset from behind is
working fine in stateless character encoding. However, in stateful encoding,
escape sequences could differ in length. As a result, out() could return wrong
length.
For example, if we have internal buffer converted from this external sequence:
(capital letters mean escape sequence)
… a a a a B b b b b
out() produces this sequence.
b b b b A a a a a
Because out() inserts escape sequence A rather than B, result sequence doesn't
match to external sequence. A and B could have different lengths, result offset
could be wrong value too.
length() method in codecvt is right for calculating offset, but it counts
offset from the beginning of buffer. So it requires another state member
variable to hold state before conversion.
Fixes http://llvm.org/bugs/show_bug.cgi?id=13667
llvm-svn: 162601
2012-08-24 21:20:56 +00:00
Howard Hinnant
49a37bbb9f
Fix basic_filebuf's internal buffer is shrinking when using with some codecvt. http://llvm.org/bugs/show_bug.cgi?id=13602
...
llvm-svn: 162585
2012-08-24 20:37:00 +00:00
Howard Hinnant
45c03a8f8d
Fixed order of calling use_facet vs setbuf in basic_filebuf default constructor.
...
llvm-svn: 162571
2012-08-24 18:06:47 +00:00
Howard Hinnant
cc27317a62
basic_filebuf needs to delay obtaining a codecvt facet from the global locale to give the client a chance to imbue the proper locale. Fixes http://llvm.org/bugs/show_bug.cgi?id=13663 .
...
llvm-svn: 162567
2012-08-24 16:52:47 +00:00
Howard Hinnant
a3b7a802cc
In C++03 mode add an explicit conversion from int to the emulated class enum. Fixes a problem reported by C. Bergström.
...
llvm-svn: 162189
2012-08-19 17:14:47 +00:00
Howard Hinnant
e4b2a743b8
Patch contributed by Dev Dude for mingw64 port.
...
llvm-svn: 162188
2012-08-19 15:13:16 +00:00
Howard Hinnant
a0b42cacbf
Apply patches supplied by Michel Morin in http://llvm.org/bugs/show_bug.cgi?id=13601 to correct bugs in is_convertible for the case that the intrinsic __is_convertible_to is not available.
...
llvm-svn: 162111
2012-08-17 17:54:11 +00:00
Howard Hinnant
7ee271360d
Consistently label __bit_array as a struct, not a class.
...
llvm-svn: 162108
2012-08-17 17:10:18 +00:00
Howard Hinnant
4179da6a6a
Patch constributed by Michel Moren in http://llvm.org/bugs/show_bug.cgi?id=13592 . Fixes is_convertible<From, To> when To is an abstract type.
...
llvm-svn: 161755
2012-08-13 12:29:17 +00:00
Howard Hinnant
1237dccaea
std::equal operating on non-const __bit_iterators was not working. This fixes it.
...
llvm-svn: 161309
2012-08-05 21:43:11 +00:00
Howard Hinnant
aca09de378
Performance tweaking rotate.
...
rotate is a critical algorithm because it is often used by other algorithms,
both std and non-std. The main thrust of this optimization is a specialized
algorithm when the 'distance' to be shifted is 1 (either left or right). To my
surprise, this 'optimization' was not effective for types like std::string.
std::string favors rotate algorithms which only use swap. But for types like
scalars, and especially when the sequence is random access, these new
specializations are a big win. If it is a vector<size_t> for example, the
rotate is done via a memmove and can be several times faster than the gcd
algorithm.
I'm using is_trivially_move_assignable to distinguish between types like int and
types like string. This is obviously an ad-hoc approximation, but I haven't
found a case where it doesn't give good results.
I've used a 'static if' (with is_trivially_move_assignable) in three places.
Testing with both -Os and -O3 showed that clang eliminated all code not be
executed by the 'static if' (including the 'static if' itself).
llvm-svn: 161247
2012-08-03 18:01:20 +00:00
Howard Hinnant
d77851e837
Implement [util.smartptr.shared.atomic]. This is the last unimplemented
...
section in libc++. This requires a recompiled dylib. Failure to rebuild
the dylib will result in a link-time error if and only if the functions from
[util.smartptr.shared.atomic] are used.
The implementation is not lock free. After considerable thought, I know of no
way to make the implementation lock free. Ideas welcome along that front. But
changing the ABI of shared_ptr is not on the table at this point.
The mutex used to lock these function is encapsulated by std::__sp_mut. The
only thing the client knows about std::__sp_mut is that it has a void* data
member, can't be constructed, and has lock and unlock members. Within the
binary __sp_mut is currently implemented as a pointer to a std::mutex. That can
change in the future without disturbing the ABI (as long as sizeof(__sp_mut)
remains constant.
I specifically did not make __sp_mut a spin lock as I have a pathological
distrust of spin locks. Testing on OS X reveals that the use of std::mutex in
this role is not a large performance penalty as long as the contention for the
mutex is low (more likely to get the lock than to have to wait). In the future
we can still make __sp_mut a spin lock if that is what is desired (without ABI
damage).
The dylib contains 16 __sp_mut's to be chosen based on the hash of the address
of the shared_ptr. The constant 16 is a ball-park reasonable space/time
tradeoff.
std::hash<T*> was changed to call __murmur2_or_cityhash, instead of the identity
function. I had thought we had already done this, but I was mistaken.
All of this is under #if __has_feature(cxx_atomic) even though the
implementation is not lock free, because the signatures require access to
std::memory_order, which is currently available only under
__has_feature(cxx_atomic).
llvm-svn: 160940
2012-07-30 01:40:57 +00:00
Howard Hinnant
c904ad4518
Patch by Andrew C. Morrow: shims to work around macroized getc and putc on linux. On my eglibc 2.13 based Debian system 'getc' is a macro defined in
...
/usr/include/stdio.h. This decision to make it a macro doesn't seem to
be guarded by any feature test macro as far as I can see.
llvm-svn: 160799
2012-07-26 20:01:13 +00:00
Howard Hinnant
a1d07d57a7
<algorithm> no longer needs to include <cstdlib>, but can get away with just <cstddef>. This was brought to my attention by Salvatore Benedetto in his port to a bare-metal coretex-m3. This exposed two test bugs where an explicit #include <cstdlib> was needed.
...
llvm-svn: 160786
2012-07-26 17:09:09 +00:00
Howard Hinnant
6a03f169db
locale::id really needs to be constructed at compile time.
...
llvm-svn: 160785
2012-07-26 16:14:37 +00:00
Richard Smith
535a86c3f8
libc++: switch from using _ATTRIBUTE(noreturn) (which conflicts with a
...
platform-provided macro on some systems) to _LIBCPP_NORETURN.
llvm-svn: 160773
2012-07-26 02:04:22 +00:00
Howard Hinnant
9d772d17b3
Apple LWG 2067: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3318.html#2067 . This is the only actionable change that has been made to the C++ draft since C++11. In general it has not been decided exactly how libc++ will track changes made to C++11. New features and design changes will probably be #ifdef'd, especially if they are not backwards compatible. Defects and 'dumb mistakes' are more likely to just be put in. Decisions on telling one from the other will be made on a case by case basis.
...
llvm-svn: 160608
2012-07-21 19:34:12 +00:00
Howard Hinnant
a4820bc4d5
noexcept applied to <future>.
...
llvm-svn: 160607
2012-07-21 17:46:55 +00:00
Howard Hinnant
36101a5b0a
noexcept applied to <thread>.
...
llvm-svn: 160606
2012-07-21 16:50:47 +00:00
Howard Hinnant
45c663db4e
noexcept applied to <condition_variable>.
...
llvm-svn: 160605
2012-07-21 16:32:53 +00:00
Howard Hinnant
02e610ef34
noexcept and constexpr applied to <mutex>.
...
llvm-svn: 160604
2012-07-21 16:13:09 +00:00
Howard Hinnant
42be98ab54
noexcept and constexpr applied to <regex>.
...
llvm-svn: 160594
2012-07-21 01:31:58 +00:00
Howard Hinnant
5d926bf1b8
noexcept and constexpr applied to <ios>.
...
llvm-svn: 160593
2012-07-21 01:03:40 +00:00
Howard Hinnant
bf882037be
noexcept applied to <valarray>.
...
llvm-svn: 160592
2012-07-21 00:51:28 +00:00
Howard Hinnant
f4e11de8e8
constexpr applied to <complex>.
...
llvm-svn: 160585
2012-07-20 22:18:27 +00:00
Howard Hinnant
00586de436
noexcept applied to <random>.
...
llvm-svn: 160579
2012-07-20 21:44:27 +00:00
Howard Hinnant
8e882dcb2e
noexcept applied to <iterator>.
...
llvm-svn: 160565
2012-07-20 19:36:34 +00:00
Howard Hinnant
397717b7c8
constexpr applied to <array>.
...
llvm-svn: 160564
2012-07-20 19:20:49 +00:00
Howard Hinnant
931644bfec
constexpr applied to <string>.
...
llvm-svn: 160563
2012-07-20 19:09:12 +00:00
Howard Hinnant
14c56f6c4a
Further tweaks on relaxing complete type checking for function.
...
llvm-svn: 160562
2012-07-20 18:56:07 +00:00
Howard Hinnant
403845ba75
Relax the complete-type checks that are happening under __invokable<Fp, Args...> to only check Fp, and not Args... . This should be sufficient to give the desired high quality diagnostics under both bind and function. And this allows a test reported by Rich E on cfe-dev to pass. Tracked by <rdar://problem/11880602>.
...
llvm-svn: 160285
2012-07-16 16:17:34 +00:00
Howard Hinnant
c033115394
Applied constexpr to <chrono>.
...
llvm-svn: 160184
2012-07-13 19:17:27 +00:00
Howard Hinnant
9146984e73
Fixed a bug in wstring_convert concerning zero-length inputs. Thanks to Jonathan Coxhead for reporting this bug.
...
llvm-svn: 160136
2012-07-12 18:07:41 +00:00
Howard Hinnant
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
Howard Hinnant
c0937e8add
Appy constexpr to <memory>. Picked up a few missing noexcepts as well.
...
llvm-svn: 159902
2012-07-07 20:56:04 +00:00
Howard Hinnant
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
Howard Hinnant
eeac9fcfb7
Apply constexpr to <bitset>.
...
llvm-svn: 159899
2012-07-07 17:04:52 +00:00
Howard Hinnant
8a9ee14803
Apply noexcept to tuple.
...
llvm-svn: 159865
2012-07-06 21:53:48 +00:00
Howard Hinnant
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
Howard Hinnant
a62ebe043e
Give tuple a constexpr default constructor.
...
llvm-svn: 159857
2012-07-06 20:39:45 +00:00
Howard Hinnant
9d6d1c6860
Apply noexcept to those functions implemented in <cstdlib> as a conforming extension.
...
llvm-svn: 159850
2012-07-06 19:16:56 +00:00
Howard Hinnant
9c14b75a37
Apply noexcept to those functions implemented in <cmath> as a conforming extension.
...
llvm-svn: 159849
2012-07-06 19:13:50 +00:00
Howard Hinnant
4cb38a82a2
This commit establishes a new bucket_count policy in the unordered containers: The policy now allows a power-of-2 number of buckets to be requested (and that request honored) by the client. And if the number of buckets is set to a power of 2, then the constraint of the hash to the number of buckets uses & instead of %. If the client does not specify a number of buckets, then the policy remains unchanged: a prime number of buckets is selected. The growth policy is that the number of buckets is roughly doubled when needed. While growing, either the prime, or the power-of-2 strategy will be preserved. There is a small run time cost for putting in this switch. For very cheap hash functions, e.g. identity for int, the cost can be as high as 18%. However with more typical use cases, e.g. strings, the cost is in the noise level. I've measured cases with very cheap hash functions (int) that using a power-of-2 number of buckets can make look up about twice as fast. However I've also noted that a power-of-2 number of buckets is more susceptible to accidental catastrophic collisions. Though I've also noted that accidental catastrophic collisions are also possible when using a prime number of buckets (but seems far less likely). In short, this patch adds an extra tuning knob for those clients trying to get the last bit of performance squeezed out of their hash containers. Casual users of the hash containers will not notice the introduction of this tuning knob. Those clients who swear by power-of-2 hash containers can now opt-in to that strategy. Clients who prefer a prime number of buckets can continue as they have.
...
llvm-svn: 159836
2012-07-06 17:31:14 +00:00
Nuno Lopes
6317bfb26a
mark operator new(std::nothrow) as noalias (aka __attribute__((malloc))
...
llvm-svn: 159359
2012-06-28 16:47:34 +00:00
Howard Hinnant
f08ebab2ea
Fixed a bug regarding result_of reported by Sven Behne. The fix is C++11 only mainly because result_of is a variadic beast and working with variadics is just such a problem in C++03 mode. This should bring result_of up to full conformance with the C++11 spec.
...
llvm-svn: 159211
2012-06-26 17:37:15 +00:00
Howard Hinnant
c418654096
Revert pair constructors back to using is_convertible instead of is_constructible. This should pull things into alignment with the final draft. Fixes http://llvm.org/bugs/show_bug.cgi?id=13063#add_comment .
...
llvm-svn: 158280
2012-06-09 20:01:23 +00:00
Howard Hinnant
4c0de496a0
Fix dangling else clause. Bug found and fixed by Dimitry Andric.
...
llvm-svn: 157779
2012-05-31 23:12:03 +00:00
Howard Hinnant
78b4015c1c
Fix the new _ALIGNAS_TYPE per instructions supplied by Eli Friedman.
...
llvm-svn: 157765
2012-05-31 20:14:00 +00:00
Howard Hinnant
bf33f5b292
Protect use of alignas against older versions of clang
...
llvm-svn: 157764
2012-05-31 19:31:14 +00:00
Howard Hinnant
8b805c915a
The rules for emplace in map, multimap, unordered_map and unordered_multimap changed a while back and I'm just now updating to these new rules. In a nutshell, you've got to know you're emplacing to a pair and use one of pair's constructors. I made one extension: If you want to emplace the key and default construct the mapped_type, you can just emplace(key), as opposed to emplace(piecewise_construct, forward_as_tuple(key), forward_as_tuple()).
...
llvm-svn: 157503
2012-05-25 22:04:21 +00:00
Howard Hinnant
a960edd203
Fix memory corruption bug found and fixed by Andrew C. Morrow.
...
llvm-svn: 157476
2012-05-25 15:55:46 +00:00
Howard Hinnant
ed81e910bd
Revert fix to http://llvm.org/bugs/show_bug.cgi?id=12867 for the reason now included in the code comment.
...
llvm-svn: 157128
2012-05-19 20:20:49 +00:00
Douglas Gregor
a336f5e645
Revert my _LIBCPP_INLINE_VISIBILITY changes, r157097 and r157107
...
llvm-svn: 157108
2012-05-19 07:14:17 +00:00
Douglas Gregor
a1b6937dba
valarray resize should not be _LIBCPP_INLINE_VISIBILITY
...
llvm-svn: 157107
2012-05-19 07:01:14 +00:00
Douglas Gregor
8f69b1af3d
Move _LIBCPP_VISIBLE_INLINE from the out-of-line definitions of member
...
functions to the original declarations, so that Clang will actually
see them. Part of <rdar://problem/11489333>.
llvm-svn: 157097
2012-05-19 04:41:25 +00:00
Howard Hinnant
9042d623bf
Protect __shared_weak_count::__get_deleter declaration with _LIBCPP_NO_RTTI. Fixes http://llvm.org/bugs/show_bug.cgi?id=12867
...
llvm-svn: 157049
2012-05-18 13:06:21 +00:00
Howard Hinnant
423a8d7733
Fix several bugs in find/count specialized for bits.
...
llvm-svn: 156546
2012-05-10 14:55:00 +00:00
Howard Hinnant
19d9cbfb39
Add friends __count_bool_true and __count_bool_false to __bit_iterator.
...
llvm-svn: 156543
2012-05-10 14:01:40 +00:00
Howard Hinnant
0ae9efeb1a
SFINAE __bit_iterator such that it will only get instantiated with a container that has the nested type __storage_type. This prevents accidental instantiation such as in http://llvm.org/bugs/show_bug.cgi?id=12755 . This fixes http://llvm.org/bugs/show_bug.cgi?id=12755 .
...
llvm-svn: 156308
2012-05-07 16:50:38 +00:00
Howard Hinnant
df7aad41fd
Constrain __bind functor constructor such that it won't accidentally get used as a copy constructor from a non-const lvalue. Fixes <rdar://problem/11359080>.
...
llvm-svn: 156182
2012-05-04 17:21:02 +00:00
Howard Hinnant
9acfc3af72
Change std::abs from a template function to three overloads for float, double and long double.
...
llvm-svn: 156064
2012-05-03 14:58:34 +00:00
Howard Hinnant
bff1bfc6be
Greatly scale back ambitions of emulating move semantics in C++03 mode. It was causing more problems than it solved. This fixes http://llvm.org/bugs/show_bug.cgi?id=12704 .
...
llvm-svn: 155918
2012-05-01 15:37:54 +00:00
Howard Hinnant
d01320c200
Apply noexcept and constexpr to <atomic>.
...
llvm-svn: 154526
2012-04-11 20:14:21 +00:00
Richard Smith
766e8ccbfc
Switch libc++ from __atomic_* builtins to __c11_atomic_* builtins.
...
Per discussion with Howard, we are not interested in maintaining
compatibility with older versions of clang.
All tests pass with ToT clang, except for two which assert due to
a pre-existing, unrelated bug.
llvm-svn: 154521
2012-04-11 18:55:46 +00:00
David Chisnall
cd42f9446b
Now that clang supports doing the right thing with regard to atomic
...
initialisation, do the right thing with regard to atomic initialisation.
Note: clang r154507 or later required for <atomic> to work now.
llvm-svn: 154508
2012-04-11 17:26:23 +00:00
David Chisnall
c5d5a98815
Fix use of __atomic_is_lock_free() intrinsic.
...
llvm-svn: 154093
2012-04-05 13:13:24 +00:00
Howard Hinnant
7e5b4c9328
Put std::piecewise_construct_t back into the dylib for ABI stability. When clients are in C++11/constexpr mode this will be safely ignored because piecewise_construct is then declared with internal linkage.
...
llvm-svn: 153981
2012-04-03 23:45:46 +00:00
Howard Hinnant
b2e9f19caf
constexpr support for <utility>. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153968
2012-04-03 21:09:48 +00:00
Howard Hinnant
e386b7b360
Update <random> with constexpr support. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153896
2012-04-02 21:00:45 +00:00
Howard Hinnant
338eb3116c
Update <limits> with constexpr support. Patch contributed by Jonathan Sauer.
...
llvm-svn: 153888
2012-04-02 19:23:15 +00:00
Howard Hinnant
788c9979d9
This is an initial commit of constexpr support as proposed by Richard Smith. This by no means completes constexpr support. Indeed, it hardly scratches the surface. All it does is lay the foundation in <__config> and changes those few places in the library that are already using that foundation.
...
llvm-svn: 153856
2012-04-02 00:40:41 +00:00
Howard Hinnant
0527c6207a
I believe tuple is still under development in the standard. Daniel Krugler is/will be making convincing arguments that a modified form of LWG 2051 (currently NAD Future) is easily acheivable and desirable. He has demonstrated that a tuple<T...> where all of the T are implicitly convertible from U... should have a tuple constructor that is also implicit, instead of explicit. This would support the use cases in LWG 2051 while not undermining T... with explicit conversions from U.... This check-in is an experimental implementation of Daniel's work. I believe this work to be mature enough to warrant inclusion into libc++. If anyone sees real-world problems that this check in causes, please let me know and I will revert it, and provide the feedback to the LWG.
...
llvm-svn: 153855
2012-04-01 23:10:42 +00:00
Howard Hinnant
cb16c68042
It appears that the standard accidentally removed the default constructor for error_category. I'm putting it back in. This fixes http://llvm.org/bugs/show_bug.cgi?id=12321 .
...
llvm-svn: 153194
2012-03-21 16:18:57 +00:00
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
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
Howard Hinnant
f554add54e
Initial checkin for debug mode (version 2)
...
llvm-svn: 139711
2011-09-14 18:33:51 +00:00
Howard Hinnant
8668139f36
Fix const correctness bug in __move_assign. Found and fixed by Ion Gaztañaga.
...
llvm-svn: 139032
2011-09-02 20:42:31 +00:00
Howard Hinnant
5d7a6f31f7
Up version number by 1. This is a 'minor version' update.
...
llvm-svn: 138978
2011-09-01 23:13:01 +00:00
Howard Hinnant
00d8c245b2
Reimplemented much of <istream> such that single character extractions do not check to see if this is the last character in the stream and thus never set eofbit. This fixes http://llvm.org/bugs/show_bug.cgi?id=10817 . This fix requires a recompiled libc++.dylib to be fully implemented. The recompiled libc++.dylib is ABI compatible with that shipped on Lion.
...
llvm-svn: 138961
2011-09-01 21:02:45 +00:00
Howard Hinnant
b1e3e0e59e
__split_buffer should only require default constructible. Bug found and fixed by Jared Hoberock
...
llvm-svn: 138726
2011-08-28 15:21:29 +00:00
Howard Hinnant
e41124ade1
Don't move assign string::allocator_type when propagate_on_container_move_assignment is false.
...
llvm-svn: 137862
2011-08-17 20:36:18 +00:00
Howard Hinnant
052fd9349f
Fix needle-in-haystack bug found by Walter Brown
...
llvm-svn: 137617
2011-08-15 17:22:22 +00:00
Howard Hinnant
54976f2619
Fixed PR10574: http://llvm.org/bugs/show_bug.cgi?id=10574
...
llvm-svn: 137522
2011-08-12 21:56:02 +00:00
Howard Hinnant
2425d53cd8
Change how _LIBCPP_HAS_NO_ADVANCED_SFINAE gets set.
...
llvm-svn: 136596
2011-07-31 17:10:44 +00:00
Howard Hinnant
f622b58c83
Fixed PR10507 ( http://llvm.org/bugs/show_bug.cgi?id=10507 )
...
llvm-svn: 136595
2011-07-31 17:04:30 +00:00
Chandler Carruth
8fd6dc0df3
Revert r136547, r136545, and r136542 by removing slist.
...
This was checked in without review. It is not clear its reasonable to
include with libc++ at all, and needs discussion at a highlevel before
moving forward.
It's also completely lacking tests, and included several bugs in the
implementation.
llvm-svn: 136577
2011-07-30 21:10:18 +00:00
Chandler Carruth
aa41ea2cc1
Revert r136546, which was submitted without review.
...
Original change:
Destruct elements of hash tables when removing individual entries from
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136576
2011-07-30 21:10:16 +00:00
Alexis Hunt
bf78786db0
Add the missing default argument for the allocator and use a cleaner
...
implementation of previous().
llvm-svn: 136547
2011-07-30 00:47:53 +00:00
Alexis Hunt
9663c8cb15
Destruct elements of hash tables when removing individual entries from
...
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136546
2011-07-30 00:18:12 +00:00
Alexis Hunt
241bf43919
Oops. That last commit was from an earlier revision of the file and was
...
more than just a bit broken. This one should compile and run without
infinite loops.
llvm-svn: 136545
2011-07-30 00:06:52 +00:00
Alexis Hunt
1e846797dd
Include an "implementation" if SGI's slist. This was quickly hacked
...
together to get it working with code, and is neither optimal
(erase(Iterator, Iterator) calculates the previous iterator twice,
rather than calculating the previous iterator of the first one, then
advancing it until the second is found) nor complete (splice() was not
implemented). Most of the implementation is borrowed from forward_list
via using-declarations.
llvm-svn: 136542
2011-07-29 23:42:36 +00:00
Alexis Hunt
8324378195
Explicitly invoke the size_type specialization of max and min. This
...
avoids bugs where, when the allocator's size_type was smaller than int,
the multiplication or division would cause integral promotions and, with
two different integer types as arguments, deduction of the template
arguments would fail.
llvm-svn: 136540
2011-07-29 23:31:58 +00:00
Alexis Hunt
8d2ed56644
Add a new hash class in __gnu_ext for the extension containers. There
...
are two motivations for this.
First, this allows users who are specializing __gnu_ext::hash to
continue doing so without changing their code.
Second, SGI specifies hash overloads for char* and const char* that
perform a hash of the string, not of the pointer.
In order to support this, the hashing code for string is factored out.
llvm-svn: 136539
2011-07-29 23:31:56 +00:00
Alexis Hunt
fe473ae277
Add two missing members from the extension hash containers. The first is
...
the type name 'data_type', which is specified by the SGI spec as being
the correct type name for the mapped type. The second is an overload of
insert found in standard containers, taking an iterator as a 'hint'
(which we ignore in the standard containers as well). libstdc++'s
implementation includes these overloads, and they are needed to make
insert_iterator work (which I suspect is the real motivation for
including them in the standard containers).
The motivation for including these overloads of insert and leaving the
mapped_type typedef is to make it easier for clients to migrate to the
standard containers.
llvm-svn: 136538
2011-07-29 23:31:53 +00:00
Howard Hinnant
89bdcd7ef5
Configure to get along with 2.9 clang
...
llvm-svn: 136526
2011-07-29 21:35:53 +00:00
Howard Hinnant
f4a797e3d2
Optimizing valarray::operator=(some-valarray-expression)
...
llvm-svn: 136291
2011-07-27 23:19:59 +00:00
Howard Hinnant
02364191d6
Fix PR10509: http://llvm.org/bugs/show_bug.cgi?id=10509
...
llvm-svn: 136247
2011-07-27 19:25:28 +00:00
Howard Hinnant
21f78d88e1
Fix PR10510: http://llvm.org/bugs/show_bug.cgi?id=10510
...
llvm-svn: 136232
2011-07-27 18:34:06 +00:00
Howard Hinnant
1dba445e43
http://llvm.org/bugs/show_bug.cgi?id=10469
...
llvm-svn: 135897
2011-07-24 23:59:50 +00:00
Howard Hinnant
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
Howard Hinnant
5b0bdc2043
http://llvm.org/bugs/show_bug.cgi?id=10461
...
llvm-svn: 135873
2011-07-24 15:07:21 +00:00
Howard Hinnant
7e6ca972c9
http://llvm.org/bugs/show_bug.cgi?id=10455
...
llvm-svn: 135854
2011-07-23 16:14:35 +00:00
Alexis Hunt
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
Howard Hinnant
e3163f5ae3
http://llvm.org/bugs/show_bug.cgi?id=10390
...
llvm-svn: 135393
2011-07-18 15:51:59 +00:00
Howard Hinnant
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
Howard Hinnant
3b13c94a14
_LIBCXX_STABLE_APPLE_ABI -> _LIBCPP_STABLE_APPLE_ABI
...
llvm-svn: 135271
2011-07-15 14:25:40 +00:00
Alexis Hunt
4084c9ebe5
Reapply 135035 with proper conditional inclusion, hopefully solving
...
issues with it.
llvm-svn: 135246
2011-07-15 05:40:33 +00:00
Howard Hinnant
88410049fa
http://llvm.org/bugs/show_bug.cgi?id=10346
...
llvm-svn: 135045
2011-07-13 16:00:50 +00:00
Howard Hinnant
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
Alexis Hunt
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
Alexis Hunt
8dfec1ac7d
Make sure that __time_put constructors properly on non-Apple platforms.
...
llvm-svn: 134947
2011-07-12 00:55:04 +00:00
Howard Hinnant
7ae42ef0bf
Make vector<bool>::reference and const_reference public
...
llvm-svn: 134815
2011-07-09 15:50:42 +00:00
Alexis Hunt
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
Alexis Hunt
f023519770
Conditionally wrap the changes from r134781.
...
llvm-svn: 134783
2011-07-09 01:09:31 +00:00
Alexis Hunt
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
Howard Hinnant
11af28bdbd
Fixing up some ABI issues
...
llvm-svn: 134639
2011-07-07 21:03:52 +00:00
Howard Hinnant
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
Howard Hinnant
a77445621b
http://llvm.org/bugs/show_bug.cgi?id=10248
...
llvm-svn: 134327
2011-07-02 20:33:23 +00:00
Howard Hinnant
086d0de171
http://llvm.org/bugs/show_bug.cgi?id=10250
...
llvm-svn: 134325
2011-07-02 18:22:36 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
ce48a1137d
_STD -> _VSTD to avoid macro clash on windows
...
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Douglas Gregor
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
Howard Hinnant
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
Howard Hinnant
2d62821f98
Miscellaneous minor fixes in <type_traits>
...
llvm-svn: 133401
2011-06-19 19:12:59 +00:00
Howard Hinnant
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
Howard Hinnant
32208bde75
Move nullptr_t to unversioned namespace: Sean Hunt
...
llvm-svn: 132665
2011-06-05 13:00:46 +00:00
Howard Hinnant
bd0c160078
noexcept for <stack>. This completes noexcept for Chapter 23 [containers].
...
llvm-svn: 132652
2011-06-04 22:09:19 +00:00
Howard Hinnant
6971d82668
noexcept for <queue>.
...
llvm-svn: 132650
2011-06-04 21:32:33 +00:00
Howard Hinnant
557da866a3
noexcept for <unordered_set>.
...
llvm-svn: 132647
2011-06-04 20:18:37 +00:00
Howard Hinnant
3714107ed6
noexcept for <unordered_map>.
...
llvm-svn: 132646
2011-06-04 18:54:24 +00:00
Howard Hinnant
e691351098
Made more implementation details of [multi]map/set noexcept.
...
llvm-svn: 132642
2011-06-04 17:10:24 +00:00
Howard Hinnant
0e9f71c13f
noexcept for <set>. Plus a few fixes to noexcept for <map>.
...
llvm-svn: 132640
2011-06-04 15:22:34 +00:00
Howard Hinnant
1052ee39cb
noexcept for <map>.
...
llvm-svn: 132639
2011-06-04 14:31:57 +00:00
Howard Hinnant
3297ed7065
noexcept for <vector>. This also includes installing move_if_noexcept() into vector.
...
llvm-svn: 132577
2011-06-03 19:40:40 +00:00
Howard Hinnant
2d45a18c24
Bring noexcept for <string> inline with other containers.
...
llvm-svn: 132573
2011-06-03 18:40:47 +00:00
Howard Hinnant
4590010473
noexcept for <list>.
...
llvm-svn: 132562
2011-06-03 17:30:28 +00:00
Howard Hinnant
91a4750733
noexcept for <forward_list>.
...
llvm-svn: 132553
2011-06-03 16:20:53 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
f9dc28313f
noexcept for forward_list.
...
llvm-svn: 132461
2011-06-02 16:44:28 +00:00
Howard Hinnant
a87e836083
noexcept for deque.
...
llvm-svn: 132459
2011-06-02 16:10:22 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
8f0cd597f1
noexcept for <array>.
...
llvm-svn: 132359
2011-05-31 21:06:33 +00:00
Howard Hinnant
e3c6708439
Upgrade <ratio> to use template aliases when available.
...
llvm-svn: 132342
2011-05-31 16:55:36 +00:00
Howard Hinnant
b5d866d4a3
noexcept for Chapter 22 [localization].
...
llvm-svn: 132337
2011-05-31 15:34:58 +00:00
Howard Hinnant
f5c91471a4
Add _ATTRIBUTE macro for gcc: Justin Hibbits
...
llvm-svn: 132334
2011-05-31 13:13:49 +00:00
Howard Hinnant
76c7cd0e15
noexcept for Chapter 21 [strings].
...
llvm-svn: 132296
2011-05-29 19:57:12 +00:00
Howard Hinnant
af152c8431
minor documentation update
...
llvm-svn: 132286
2011-05-29 13:53:56 +00:00
Howard Hinnant
9e5c99f61f
noexcept for <typeindex>. This completes Chapter 20 [utilities].
...
llvm-svn: 132267
2011-05-28 18:57:24 +00:00
Howard Hinnant
cfd52789dc
noexcept for <scoped_allocator>.
...
llvm-svn: 132266
2011-05-28 18:51:12 +00:00
Howard Hinnant
d53d81522d
noexcept for <chrono>.
...
llvm-svn: 132265
2011-05-28 18:34:36 +00:00
Howard Hinnant
6a07d6f06d
noexcept for <functional>.
...
llvm-svn: 132264
2011-05-28 17:59:48 +00:00
Howard Hinnant
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
Howard Hinnant
d368a84c91
noexcept for <bitset>.
...
llvm-svn: 132216
2011-05-27 20:52:28 +00:00
Howard Hinnant
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
Howard Hinnant
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
Howard Hinnant
a62f28994c
Applied noexcept to everything in [diagnostics] (Chapter 19)
...
llvm-svn: 132137
2011-05-26 19:48:01 +00:00
Howard Hinnant
411d1bcc3b
Turn on cxx_alias_templates support
...
llvm-svn: 132134
2011-05-26 19:07:54 +00:00
Howard Hinnant
fafca58c58
Applied noexcept to everything in [language.support] (Chapter 18)
...
llvm-svn: 132129
2011-05-26 18:23:59 +00:00
Howard Hinnant
400b244339
Added [[noreturn]] attribute everywhere it should be
...
llvm-svn: 132125
2011-05-26 17:07:32 +00:00
Howard Hinnant
2fa07ae9a0
Fix const correctness bug in bind involving reference_wrapper found by Jonathan Sauer
...
llvm-svn: 131852
2011-05-22 15:07:43 +00:00
Howard Hinnant
5eb6bdfa1d
__invokable and __invoke_of now check for incomplete types and issue a compile-time diagnostic if they are used with incomplete types for anything except a return type. Note that both arguments *and* parameters are checked for completeness.
...
llvm-svn: 131818
2011-05-22 00:09:02 +00:00
Howard Hinnant
6282a4a1d3
This is a simplified (and superior) implementation of __invoke, __invokable and __invoke_of. It is superior in that __invoke now handles reference qualified member functions whereas the previous implementation did not. And it simply has less infrastructure in its implementation. I'm still learning how to program in C++11 (and probably will be for a long time). This change does not impact the behavior we're seeing in http://llvm.org/bugs/show_bug.cgi?id=9975
...
llvm-svn: 131761
2011-05-20 22:02:53 +00:00
Howard Hinnant
2344d6c195
Simplied bind using __invoke. In the process, found and fixed a couple of bugs. C++11 only.
...
llvm-svn: 131667
2011-05-19 19:41:47 +00:00
Howard Hinnant
ec0810e1c8
I had a giant misunderstanding of what 'synchronizes with' meant in [futures.async]/p5. This invalidated the current design of async in <future>. This is a new design, based on my new understanding, which has been confirmed on the lwg mailing list. The summary is that ~future() (and ~shared_future()) will block when they are created from within async, and the thread hasn't finished yet. As part of this work I created two new type traits: __invokable<F, Args...>::value and __invoke_of<F, Args...>::type. These are what result_of<F(Args...)> wanted to be when it grew up, but never will be. __invoke_of is carefully crafted so that it can serve as its own enable_if (type doesn't exist if the signature isn't invokable). All of this work is C++11 only.
...
llvm-svn: 131639
2011-05-19 15:05:04 +00:00
Howard Hinnant
dcaa2e9294
Fix ambiguity in operator== of scoped_allocator_adaptor.
...
llvm-svn: 131485
2011-05-17 20:41:18 +00:00
Howard Hinnant
651fedb82c
Fixed bug in recently introduced bind move constructor
...
llvm-svn: 131484
2011-05-17 20:27:51 +00:00
Howard Hinnant
872a91167e
Brought call_once variadic call up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
...
llvm-svn: 131414
2011-05-16 19:05:11 +00:00
Howard Hinnant
8df61ea84d
Brought thread variadic constructor up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
...
llvm-svn: 131413
2011-05-16 18:40:35 +00:00
Howard Hinnant
7735ccaf86
Supply missing std::qualifier to call.
...
llvm-svn: 131410
2011-05-16 16:20:59 +00:00
Howard Hinnant
23fdcd70c6
Spit 5th bullet __invoke into function pointers and everything else because result_of doesn't deal with function pointers.
...
llvm-svn: 131409
2011-05-16 16:20:21 +00:00
Howard Hinnant
07de7bcaa0
Supply missing move ctor in __bind_r, though this one will eventually be defaulted
...
llvm-svn: 131408
2011-05-16 16:19:01 +00:00
Howard Hinnant
15c34d48ba
Redesign of result_of to handle reference-qualified member functions
...
llvm-svn: 131407
2011-05-16 16:17:21 +00:00
Howard Hinnant
b12c37b302
Fix type-o found by Justin Hibbits
...
llvm-svn: 131348
2011-05-14 18:20:45 +00:00
Howard Hinnant
6db38ae05c
Fix type-o found by Justin Hibbits
...
llvm-svn: 131346
2011-05-14 17:24:22 +00:00
Howard Hinnant
fb7f07e3bd
http://llvm.org/bugs/show_bug.cgi?id=9854 . Also created an emulated hexfloat literal for use in some of the tests. <sigh> And cleaned up some harmless but irritating warnings in the tests.
...
llvm-svn: 131318
2011-05-13 21:52:40 +00:00
Howard Hinnant
3e71464d50
http://llvm.org/bugs/show_bug.cgi?id=9118
...
llvm-svn: 131296
2011-05-13 17:16:06 +00:00
Howard Hinnant
467fc38320
A much improved type_traits for C++0x. Not yet done: is_trivially_constructible, is_trivially_assignable and underlying_type.
...
llvm-svn: 131291
2011-05-13 14:08:16 +00:00
Howard Hinnant
f738497500
Corrected some bugs in both memory and the tests. Preparing for being able to turn on support for alias templates.
...
llvm-svn: 131199
2011-05-11 20:21:19 +00:00
Howard Hinnant
08ad63b580
Redid nothrow traits in terms of non-nothrow traits when noexcept is available
...
llvm-svn: 131198
2011-05-11 20:19:40 +00:00
Howard Hinnant
0cfdb9517e
Updated type_traits and the type_traits design doc with recent work done in clang.
...
llvm-svn: 131090
2011-05-09 19:21:17 +00:00
Howard Hinnant
575d41ee92
Correction to set of overloaded pair constructors for C++0x
...
llvm-svn: 130521
2011-04-29 18:10:55 +00:00
Douglas Gregor
6c38001ec5
Qualify calls to std::next(), to avoid conflicts with
...
libraries/applications that define their own 'next' template.
llvm-svn: 130511
2011-04-29 16:20:26 +00:00
Howard Hinnant
9d06c8c326
http://llvm.org/bugs/show_bug.cgi?id=9765
...
llvm-svn: 129910
2011-04-21 14:29:59 +00:00
Howard Hinnant
866d73c7b4
Think-o in poisson_distribution at mean == 10
...
llvm-svn: 129520
2011-04-14 15:59:22 +00:00
Howard Hinnant
a23551cad4
Fix bug in Sseq constraints found by Seth Cantrell
...
llvm-svn: 129285
2011-04-11 18:22:12 +00:00
Howard Hinnant
40dab2ce86
http://llvm.org/bugs/show_bug.cgi?id=9672
...
llvm-svn: 129266
2011-04-11 02:18:41 +00:00
Howard Hinnant
784ba65787
Changes to cerrno to protect against the case the ELAST is not defined.
...
llvm-svn: 129255
2011-04-10 19:46:55 +00:00
Howard Hinnant
1444d85b5a
time_get was missing the %F specifier. This change impacts the binary.
...
llvm-svn: 129251
2011-04-10 17:54:14 +00:00
Howard Hinnant
a9c7c14ebb
Chris Jefferson found a missing const (Bugzilla 9632)
...
llvm-svn: 128885
2011-04-05 14:55:28 +00:00
Howard Hinnant
dbe14303da
Chris Jefferson submitted this patch to fix http://llvm.org/bugs/show_bug.cgi?id=9351
...
llvm-svn: 128796
2011-04-03 20:05:29 +00:00
Howard Hinnant
890477f333
Provide a more readable error message for <atomic> until it is implemented.
...
llvm-svn: 128636
2011-03-31 16:39:39 +00:00
Howard Hinnant
382600ff97
Jonathan Sauer found a bug in the way ^ was handled
...
llvm-svn: 128350
2011-03-26 20:02:27 +00:00
Howard Hinnant
8f934e42d8
http://llvm.org/bugs/show_bug.cgi?id=9444
...
llvm-svn: 127412
2011-03-10 17:27:57 +00:00
Howard Hinnant
8cad46266c
I have to revert this recent fix to tuple conversions until clang implements cwg 1170. Without this fix pair and tuple don't convert properly. With it, associative containers get access errors when they shouldn't. cwg 1170 fixes the latter.
...
llvm-svn: 127411
2011-03-10 17:27:30 +00:00
Howard Hinnant
709b108ae1
Corrected const-correctness on nullptr type_traits, and beefed up the test for nullptr_t.
...
llvm-svn: 127338
2011-03-09 17:17:06 +00:00
Howard Hinnant
d6c80dec76
Walter Brown brought to my attention that type_traits was failing to correctly classify nullptr_t
...
llvm-svn: 127334
2011-03-09 15:10:51 +00:00
Howard Hinnant
f1bf6f9a3a
Chris Jefferson found a defect in the C++0x working draft by trying to run libc++ against boost. I've submitted an issue to the LWG, and this commit attempts to implement the proposed resolution of that defect report. I'd point to the issue but it hasn't been put into the LWG list yet. The title of the issue will be: Stage 2 accumulate incompatibilty
...
llvm-svn: 127303
2011-03-09 01:03:19 +00:00
Howard Hinnant
b5d166ad93
Chris Jefferson found this bug to pair/tuple introduced by a recent change to the draft that I missed.
...
llvm-svn: 126743
2011-03-01 14:27:55 +00:00
Howard Hinnant
99847d2bf1
Fix copy_n to increment only n-1 times for an input iterator. This works much better with std::istream_iterator<int>(std::cin). Credit: Matan Nassau.
...
llvm-svn: 126581
2011-02-27 20:55:39 +00:00
Howard Hinnant
73736effce
Fixed two problems found by Chris Jefferson: Made operator>> for char consistent with gcc. Opened an LWG issue on this one. 2) Renamed some private typedefs which are causing boost grief.
...
llvm-svn: 126576
2011-02-27 18:02:02 +00:00
Howard Hinnant
a8d8ca4d6f
http://llvm.org/bugs/show_bug.cgi?id=9326
...
llvm-svn: 126504
2011-02-25 19:52:41 +00:00
Howard Hinnant
0c68ed006d
Chris Jefferson spotted a problem with messages_base::catalog while getting libc++ to work on boost. The standard says this type must be an int. But this type is the key returned by the OS facility catopen. On OS X the type returned by catopen is void*, which doesn't fit into an int on 64 bit platforms. Chris suggested using ptrdiff_t instead of void*. It still isn't compliant with the standard, but chances are that this change will fix what is ailing boost. Chris also supplied the algorithm for distinguishing high-order pointers from error conditions. Thanks Chris.
...
llvm-svn: 126462
2011-02-25 00:51:08 +00:00
Howard Hinnant
a0fe8c436e
Chris Jefferson noted many places where function calls needed to be qualified (thanks Chris).
...
llvm-svn: 125510
2011-02-14 19:12:38 +00:00
Howard Hinnant
f190990546
fix stupid type-o
...
llvm-svn: 125311
2011-02-10 21:34:42 +00:00
Howard Hinnant
05033424f9
Installed __has_feature(is_convertible_to) and __has_feature(is_base_of)
...
llvm-svn: 125290
2011-02-10 17:46:03 +00:00
Howard Hinnant
da3b02fdb3
Missing traits::to_int_type in fstream
...
llvm-svn: 124727
2011-02-02 17:37:16 +00:00
Howard Hinnant
72c5e14203
Qualify calls to addressof with std::. Bug 9106
...
llvm-svn: 124726
2011-02-02 17:36:20 +00:00
Howard Hinnant
2774545736
Bug 9096 - list::iterator not default constructible
...
llvm-svn: 124508
2011-01-28 23:46:28 +00:00
Howard Hinnant
d44be13fa8
minor corrections to test, and hook is_base_of up to clang intrinsic
...
llvm-svn: 124502
2011-01-28 20:00:37 +00:00
Douglas Gregor
59f5dc60d2
Eliminate extraneous {};
...
llvm-svn: 124456
2011-01-27 23:36:08 +00:00
Howard Hinnant
eb92df7e9e
Make forward_list splice_after and merge work for lvalue lists
...
llvm-svn: 124430
2011-01-27 21:00:35 +00:00
Howard Hinnant
7015add232
Reverted previous fix to is_convertible as it caused more problems than it fixed. But this reverted fix will only matter for non-clang compilers. Installed __is_convertible_to for clang.
...
llvm-svn: 124429
2011-01-27 21:00:00 +00:00
Douglas Gregor
71711a673b
Inline namespaces are always available in Clang. Rely on that without
...
testing via __has_feature, since __has_feature for C++0x features no
longer evaluates true in C++98/03 mode.
Also, eliminate the redundant using directive. Inline namespaces make
their members visible in the enclosing namespace automatically.
llvm-svn: 124293
2011-01-26 15:39:56 +00:00
Douglas Gregor
d18302f1bb
Teach move_iterator that rvalue references cannot bind to non-function
...
lvalues, nor can one take the address of an xvalue, by adding
appropriate static_cast's (in the first case) and a temporary (in the
second case).
llvm-svn: 124255
2011-01-26 00:12:48 +00:00
Howard Hinnant
ad16003517
Add always_inline to string move constructors
...
llvm-svn: 124252
2011-01-26 00:06:59 +00:00
Douglas Gregor
175a104028
Remove an (incorrect) compiler workaround in the __mu function. The
...
workaround relied on rvalue references binding to non-function
lvalues, while the original formulation (with std::forward) does the
right thing.
llvm-svn: 124241
2011-01-25 23:11:15 +00:00
Howard Hinnant
2a3f1bc13f
tweak for readability (no functionality change)
...
llvm-svn: 124192
2011-01-25 16:31:30 +00:00
Douglas Gregor
912e161ce0
An rvalue reference cannot bind to an lvalue, so static_cast the
...
result of the __tuple_leaf::get() call to an rvalue reference when
returning from tuple's get().
llvm-svn: 124190
2011-01-25 16:14:21 +00:00
Douglas Gregor
a7b2241407
Eliminate the C++0x-only is_convertible testing function that accepts
...
a cv-qualifier rvalue reference to the type, e.g.,
template <class _Tp> char __test(const volatile typename remove_reference<_Tp>::type&&);
The use of this function signature rather than the more
straightforward one used in C++98/03 mode, e.g.,
template <class _Tp> char __test(_Tp);
is broken in two ways:
1) An rvalue reference cannot bind to lvalues, so is_convertible<X&,
X&>::value would be false. This breaks two of the unique_ptr tests
on Clang and GCC >= 4.5. Prior GCC's seem to have allowed rvalue
references to bind to lvalues, allowing this bug to slip in.
2) By adding cv-qualifiers to the type we're converting to, we get
some incorrect "true" results for, e.g., is_convertible<const X&, X&>::value.
llvm-svn: 124166
2011-01-25 01:15:41 +00:00
Howard Hinnant
465abe92a5
Chandler Carruth changed >> to > > in several places.
...
llvm-svn: 124120
2011-01-24 16:07:25 +00:00
Howard Hinnant
2503626838
Add attribute to inlined member.
...
llvm-svn: 123392
2011-01-13 20:05:05 +00:00
Howard Hinnant
59a7dc95de
Fixing an ambiguity in variadics found by clang.
...
llvm-svn: 123337
2011-01-12 22:56:59 +00:00
Howard Hinnant
119cd0ba12
fix guard
...
llvm-svn: 123269
2011-01-11 20:02:45 +00:00
Howard Hinnant
b5b2a1e19a
Two minor fixes: 1. Put integral_constant conversion to integral in even without constexpr support. 2. Add ios_base to <iosfwd>. The latter is being tracked by LWG 2026.
...
llvm-svn: 123080
2011-01-08 20:00:48 +00:00
Howard Hinnant
36fd9f96cf
Reverting an old optimization that conflicts with the new allocator model, and causes some test casees to compile that shouldn't.
...
llvm-svn: 122830
2011-01-04 19:53:31 +00:00
Howard Hinnant
ab061a656d
Marshall Clow's fix for Bug 8421.
...
llvm-svn: 122825
2011-01-04 19:21:05 +00:00
Howard Hinnant
c950e77d1d
Effort to reduce the number of exported symbols
...
llvm-svn: 122057
2010-12-17 14:46:43 +00:00
Howard Hinnant
ba31cbdbca
Reduced copying cost of tuple_cat from quadratic to linear.
...
llvm-svn: 121655
2010-12-12 23:04:37 +00:00
Howard Hinnant
7f64810bc8
LWG 1385 [FCD] tuple_cat should be a single variadic signature ( http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#1385 ). This issue is only in Ready status, meaning it is not official, but probably will be this March in Madrid. It was tentatively accepted in Batavia with the previso that Bill and I didn't have any problems implementing it. This is my part of that agreement.
...
llvm-svn: 121619
2010-12-11 20:47:50 +00:00
Howard Hinnant
d4a83d078c
The implementation of the new definition of result_of (N3123) resulted in some test failures in [func.memfn] that I failed to previously notice. This corrects that mistake.
...
llvm-svn: 121600
2010-12-11 00:05:19 +00:00
Michael J. Spencer
f5799be4a8
Add CMake build and fix major Linux blockers.
...
llvm-svn: 121510
2010-12-10 19:47:54 +00:00
Howard Hinnant
966b5a3157
N3158 Missing preconditions for default-constructed match_result objects
...
llvm-svn: 121282
2010-12-08 21:07:55 +00:00
Howard Hinnant
b5452b3db5
After a long break to wait for the atomic spec to settle, this completes the library part of <atomic>. It currently won't even parse as it depends on the existence of the intrinsics specified at http://libcxx.llvm.org/atomic_design_a.html . Everything has been tested using fake intrinsics which have now been removed. As the intrinsics come online, the ATOMIC_* macros will need to be adjusted to reflect which operations are lock-free. These macros will probably need to be #ifdef'd for each supported platform.
...
llvm-svn: 121267
2010-12-08 17:20:28 +00:00
Howard Hinnant
c5f5f0a166
atomics ...
...
llvm-svn: 121204
2010-12-07 23:24:41 +00:00
Howard Hinnant
c772a62096
Work on <atomic> continues. The file size is actually sane now...
...
llvm-svn: 121181
2010-12-07 20:46:14 +00:00
Howard Hinnant
9847abacb1
Getting <atomic> warmed back up. We have a hopefully more stable spec now. And I believe the intrinsic spec at http://libcxx.llvm.org/atomic_design_a.html is still good.
...
llvm-svn: 121064
2010-12-06 23:10:08 +00:00
Howard Hinnant
1596c4531b
N3189 Observers for the three handler functions
...
llvm-svn: 120712
2010-12-02 16:45:21 +00:00
Howard Hinnant
92e3718b13
Implemented N3194
...
llvm-svn: 120458
2010-11-30 20:23:32 +00:00
Howard Hinnant
6fd5c65095
Minor fixup in <ratio> and add optional support for shared_mutex and upgrade_mutex which must be opted into with #define _LIBCPP_SHARED_LOCK
...
llvm-svn: 120258
2010-11-28 19:41:07 +00:00
Howard Hinnant
0c6a0fe7fb
Add template alias emulation to <ratio>
...
llvm-svn: 120098
2010-11-24 17:05:06 +00:00
Howard Hinnant
e3120ed1bf
N3188 - Revision to N3113: Async Launch Policies (CH 36)
...
llvm-svn: 120027
2010-11-23 18:33:54 +00:00
Howard Hinnant
3dc6455ff0
N3191: C++ Timeout Specification
...
llvm-svn: 119909
2010-11-20 19:16:30 +00:00
Howard Hinnant
092980dd65
N3123
...
llvm-svn: 119906
2010-11-20 18:25:22 +00:00
Howard Hinnant
ca74048398
N3142. Many of these traits are just placeholders with medium quality emulation; waiting on compiler intrinsics to do it right.
...
llvm-svn: 119854
2010-11-19 22:17:28 +00:00
Howard Hinnant
d518d1c807
LWG 1522
...
llvm-svn: 119710
2010-11-18 17:34:48 +00:00
Howard Hinnant
908484b147
LWG 1439
...
llvm-svn: 119703
2010-11-18 17:01:36 +00:00
Howard Hinnant
48d05bd26c
LWG 1339
...
llvm-svn: 119699
2010-11-18 16:13:03 +00:00
Howard Hinnant
fb34010258
LWG 1432
...
llvm-svn: 119611
2010-11-18 01:47:02 +00:00
Howard Hinnant
a4a1ef1fc2
LWG 1404
...
llvm-svn: 119609
2010-11-18 01:40:00 +00:00
Howard Hinnant
d09f711dc2
LWG 1325
...
llvm-svn: 119571
2010-11-17 21:53:14 +00:00
Howard Hinnant
5ba1459c4c
LWG 1323
...
llvm-svn: 119560
2010-11-17 21:11:40 +00:00
Howard Hinnant
601afb30ec
LWG 1191
...
llvm-svn: 119545
2010-11-17 19:52:17 +00:00
Howard Hinnant
ef6168357a
LWG 1118
...
llvm-svn: 119541
2010-11-17 19:22:43 +00:00
Howard Hinnant
57d1ebcc38
Update <string> to use allocator_traits.
...
llvm-svn: 119522
2010-11-17 17:55:08 +00:00
Howard Hinnant
412dbebe1b
license change
...
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
9b35c8275c
Dave Zarzycki showed how the efficiency of shared_ptr could be significantly
...
increased. The following program is running 49% faster:
#include <iostream>
#include <memory>
#include <chrono>
#include <vector>
#include "chrono_io"
int main()
{
typedef std::chrono::high_resolution_clock Clock;
Clock::time_point t0 = Clock::now();
{
std::shared_ptr<int> p(new int (1));
std::vector<std::shared_ptr<int> > v(1000000, p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
v.insert(v.begin(), p);
}
Clock::time_point t1 = Clock::now();
std::cout << (t1-t0) << '\n';
}
llvm-svn: 119388
2010-11-16 21:33:17 +00:00
Howard Hinnant
c4931c4746
I have reverted all contributions made by Jesse Towner in revision 110724
...
llvm-svn: 119383
2010-11-16 21:10:23 +00:00
Howard Hinnant
007b26be68
Fixed bug in random_shuffle to avoid swapping with self
...
llvm-svn: 117098
2010-10-22 15:26:39 +00:00
Howard Hinnant
a7c2f3eac3
[atomics.types.address]
...
llvm-svn: 117033
2010-10-21 17:44:19 +00:00
Howard Hinnant
f9c02e15c4
atomic_schar, atomic_uchar, atomic_short, atomic_ushort, atomic_int, atomic_uint, atomic_long, atomic_ulong, atomic_llong, atomic_ullong, atomic_char16_t, atomic_char32_t and atomic_wchar_t.
...
llvm-svn: 116860
2010-10-19 21:22:10 +00:00
Howard Hinnant
d89b01e521
atomic_char
...
llvm-svn: 116813
2010-10-19 16:51:18 +00:00
Howard Hinnant
b2b5513dcc
Changing <atomic> to follow Design A
...
llvm-svn: 116742
2010-10-18 20:39:07 +00:00
Howard Hinnant
10e4a48a26
Convert __thread_local_data to the singleton pattern
...
llvm-svn: 116500
2010-10-14 19:18:04 +00:00
Howard Hinnant
a65a935ba4
Bug 7983 fixed by Bernhard Rosenkraenzer
...
llvm-svn: 116487
2010-10-14 17:11:39 +00:00
Howard Hinnant
e79d71e2e3
Patch by Marshall Clow to make the assignment operators of piecewise_constant_distribution and piecewise_linear_distribution exception safe.
...
llvm-svn: 116404
2010-10-13 14:37:09 +00:00
Howard Hinnant
0f444b3b16
Corrected an inconsistency with recent changes in tuple, and perfect forwarding within bind
...
llvm-svn: 115930
2010-10-07 18:03:23 +00:00
Howard Hinnant
772699070e
Make flag type configurable by the compiler
...
llvm-svn: 115614
2010-10-05 14:02:23 +00:00
Howard Hinnant
69c3cb85ab
Thanks Sebastian\!
...
llvm-svn: 115612
2010-10-05 13:38:23 +00:00
Howard Hinnant
668523a1b8
Filling out the infrastructure in <atomic>
...
llvm-svn: 115577
2010-10-04 23:55:35 +00:00
Howard Hinnant
d5a97fc683
__has_feature crutch
...
llvm-svn: 115540
2010-10-04 19:01:30 +00:00
Howard Hinnant
2b672e24a5
Still working on the basic design of <atomic>. I'm working towards a system by which the compiler only needs to define the strongest intrinsics it can. Weaker atomics in the library automatically try stronger and stronger variants, picking the weakest compiler intrinsic available. If no compiler intrinsics are available for a given operation, the library locks a mutex and does the job. Better documentation to follow...
...
llvm-svn: 115538
2010-10-04 18:52:54 +00:00
Howard Hinnant
2ec672fff5
Tweak to make clang blocks work with std::functional (very fragile)
...
llvm-svn: 115461
2010-10-03 13:59:56 +00:00
Howard Hinnant
748a5279b1
[atomics.flag] completed. Initialization is not working on clang and can't be made to work without defaulted default constructors.
...
llvm-svn: 115207
2010-09-30 21:05:29 +00:00
Howard Hinnant
a31e741ac9
Name change of intrinsics as suggested by Jeffrey Yasskin
...
llvm-svn: 115145
2010-09-30 14:04:35 +00:00
Howard Hinnant
88efc1c7a5
Contemplating this <atomic> reorganization...
...
llvm-svn: 115087
2010-09-29 21:20:03 +00:00
Howard Hinnant
7387390d6e
Wrestling with the slowly dawning realization that <atomic> isn't implementable on any compiler at my disposal...
...
llvm-svn: 115054
2010-09-29 18:13:54 +00:00
Howard Hinnant
cfe0b0a1ab
[atomics.order]
...
llvm-svn: 114966
2010-09-28 17:13:38 +00:00
Howard Hinnant
cd39d413b4
Getting started on <atomic>
...
llvm-svn: 114887
2010-09-27 21:17:38 +00:00
Howard Hinnant
f5241d7586
Bugzilla 8231
...
llvm-svn: 114851
2010-09-27 18:09:23 +00:00
Howard Hinnant
30ad985b6b
Cleaning up some tuple code.
...
llvm-svn: 114848
2010-09-27 17:54:17 +00:00
Howard Hinnant
789847ddbb
visibility-decoration sweep completed.
...
llvm-svn: 114685
2010-09-23 18:58:28 +00:00
Howard Hinnant
e060133553
visibility-decoration.
...
llvm-svn: 114671
2010-09-23 17:31:07 +00:00
Howard Hinnant
53ec0b4e8e
visibility-decoration.
...
llvm-svn: 114658
2010-09-23 16:27:36 +00:00
Howard Hinnant
3e84caaebb
visibility-decoration.
...
llvm-svn: 114647
2010-09-23 15:13:20 +00:00
Howard Hinnant
392183f99d
visibility-decoration.
...
llvm-svn: 114559
2010-09-22 18:02:38 +00:00
Howard Hinnant
848a5374d0
visibility-decoration.
...
llvm-svn: 114551
2010-09-22 16:48:34 +00:00
Howard Hinnant
3030b2f1ab
visibility-decoration.
...
llvm-svn: 114545
2010-09-22 15:29:08 +00:00
Howard Hinnant
a3988679f9
visibility-decoration.
...
llvm-svn: 114543
2010-09-22 14:16:26 +00:00
Howard Hinnant
0af133f941
visibility-decoration.
...
llvm-svn: 114496
2010-09-21 22:55:27 +00:00
Howard Hinnant
fb100021b7
visibility-decoration.
...
llvm-svn: 114486
2010-09-21 21:28:23 +00:00
Howard Hinnant
f5ab703f68
visibility-decoration.
...
llvm-svn: 114470
2010-09-21 20:16:37 +00:00
Howard Hinnant
35ae4a20cd
visibility-decoration.
...
llvm-svn: 114465
2010-09-21 18:58:51 +00:00
Howard Hinnant
43d9923860
visibility-decoration.
...
llvm-svn: 114451
2010-09-21 17:32:39 +00:00
Howard Hinnant
4c88c9803f
Getting started on a visibility-decoration sweep.
...
llvm-svn: 114440
2010-09-21 16:04:28 +00:00
Howard Hinnant
d8e7922ba2
Tweak clang support for char16_t/char32_t
...
llvm-svn: 114129
2010-09-16 23:27:26 +00:00
Howard Hinnant
03976c1b62
Cement ABI on clang for char16_t and char32_t. Also fixed some comments in <iterator>.
...
llvm-svn: 113842
2010-09-14 20:26:27 +00:00
Howard Hinnant
8fb62e398a
Experimenting with a new forward fomulation (kudos Daniel Kruegler), updated insert iterators to work better with pproxies, and doubled the speed of __next_prime.
...
llvm-svn: 113731
2010-09-13 01:43:27 +00:00
Howard Hinnant
37030a77a0
Fix another const bug in function. Thanks to Daniel Krugler for finding this and the previous bug.
...
llvm-svn: 113686
2010-09-11 15:33:21 +00:00
Howard Hinnant
42daac442b
Fix const bug in function
...
llvm-svn: 113684
2010-09-11 15:09:37 +00:00
Howard Hinnant
f9cca3b7d0
I am experimenting with putting visibility-default attributes on all struct/classes in libc++. This checkin decorates only basic_string and vector as an experiment, and for review by those in this audience that might know more about visibilty than I do. If I get no negative feedback on this procedure I will begin to decorate the entire library in this way.
...
llvm-svn: 113590
2010-09-10 16:42:26 +00:00
Howard Hinnant
7d1c2a0f3a
Yonggang Luo fixed gcc version checking for type_traits support.
...
llvm-svn: 113487
2010-09-09 13:58:34 +00:00
Howard Hinnant
10b9b7b4bd
Hooked the following up to clang: is_class, is_enum, has_nothrow_copy_assign, has_trivial_destructor, has_virtual_destructor, is_pod. Implemented has_copy_assign.
...
llvm-svn: 113373
2010-09-08 17:55:32 +00:00
Howard Hinnant
331b3dd2ad
has_trivial_copy_assign hooked up to clang (without workarounds). Filed http://llvm.org/bugs/show_bug.cgi?id=8109 to take care of several types which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle most of them in the library.
...
llvm-svn: 113312
2010-09-07 23:38:59 +00:00
Howard Hinnant
bfc4026f4c
Made a stab at has_copy_constructor. Got it mostly working for g++-4.0, but only works for scalar types on clang. Ultimately this needs a compiler-supported is_constructible which clang is missing, and won't be able to use until it gets variadic templates.
...
llvm-svn: 113304
2010-09-07 23:11:28 +00:00
Howard Hinnant
06fc97019a
has_nothrow_copy_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8107 to take care of several types which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle most of them in the library.
...
llvm-svn: 113294
2010-09-07 22:09:07 +00:00
Howard Hinnant
01fd31000b
has_trivial_copy_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8105 to take care of void, arrays of incomplete bounds and complete bounds which don't work yet. If there is some reason we don't want to handle these types in the compiler, I can handle them in the library.
...
llvm-svn: 113270
2010-09-07 20:31:18 +00:00
Howard Hinnant
ba6f71b030
Made a stab at has_default_constructor. Got it mostly working for g++-4.0, but only works for scalar types on clang. Ultimately this needs a compiler-supported is_constructible which clang is missing, and won't be able to use until it gets variadic templates.
...
llvm-svn: 113225
2010-09-07 17:47:31 +00:00
Howard Hinnant
f336abfcd2
has_nothrow_default_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8101 to take care of void, arrays of incomplete types, and classes with virtual destructors which don't work yet. If there is some reasons we don't want to handle these types in the compiler, I can handle them in the library.
...
llvm-svn: 113217
2010-09-07 17:15:17 +00:00
Howard Hinnant
c3ed8c312e
has_trivial_default_constructor hooked up to clang. Filed http://llvm.org/bugs/show_bug.cgi?id=8097 to take care of void and arrays of incomplete types which don't work yet. If there is some reasons we don't want to handle these types in the compiler, I can handle them in the library.
...
llvm-svn: 113205
2010-09-07 15:53:26 +00:00
Howard Hinnant
db3e9975d0
Working the type_traits area: Hooked up to clang's __is_union. Got has_trivial_copy_assign working.
...
llvm-svn: 113162
2010-09-06 19:10:31 +00:00
Howard Hinnant
959cf8aede
Fix whitespace
...
llvm-svn: 113089
2010-09-04 23:46:48 +00:00
Howard Hinnant
7609c9b665
Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
...
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
7f2aae9937
Configure libc++ to recognize and use inline namespaces for clang. Many, many thanks to Sebastian Redl for implementing it in clang, and to Daniel Dunbar for rattling my cage about it. This is huge for libc++. Thanks to you both\!
...
llvm-svn: 113026
2010-09-03 23:03:25 +00:00
Howard Hinnant
b77c0c03bb
[futures.atomic_future] and notify_all_at_thread_exit. This completes the header <future> and all of Chapter 30 (for C++0x enabled compilers).
...
llvm-svn: 113017
2010-09-03 21:46:37 +00:00
Howard Hinnant
ead85506a7
[futures.shared_future]
...
llvm-svn: 112990
2010-09-03 18:39:25 +00:00
Howard Hinnant
27f000e10b
[futures.task] and [futures.async]. Requires variadics and rvalue-ref support.
...
llvm-svn: 112500
2010-08-30 18:46:21 +00:00
Howard Hinnant
8759d9d4d0
[futures.promise]. Depends on rvalue-ref support to work 100%.
...
llvm-svn: 112388
2010-08-28 21:01:06 +00:00
Howard Hinnant
167fd1084b
future continues ...
...
llvm-svn: 112284
2010-08-27 20:10:19 +00:00
Howard Hinnant
dae3481b28
Getting started on <future>
...
llvm-svn: 112061
2010-08-25 17:32:05 +00:00
Howard Hinnant
fae824a32d
Remove tabs
...
llvm-svn: 111778
2010-08-22 13:53:14 +00:00
Howard Hinnant
b3371f6f49
Fixing whitespace problems
...
llvm-svn: 111750
2010-08-22 00:02:43 +00:00
Howard Hinnant
9f1102b7fe
US 108, N3109
...
llvm-svn: 111747
2010-08-21 21:14:53 +00:00
Howard Hinnant
e8e7af2477
DE 23
...
llvm-svn: 111746
2010-08-21 21:01:59 +00:00
Howard Hinnant
3db88036f6
US 117
...
llvm-svn: 111745
2010-08-21 20:58:44 +00:00
Howard Hinnant
4eb27b79c1
US 122, N3106
...
llvm-svn: 111742
2010-08-21 20:10:01 +00:00
Howard Hinnant
9b0b6d45d2
Installed allocator into std::function
...
llvm-svn: 111672
2010-08-20 19:36:46 +00:00
Howard Hinnant
cbbc430d24
JP 3 & JP 4
...
llvm-svn: 111547
2010-08-19 19:20:10 +00:00
Howard Hinnant
907af2668f
GB 85, GB 87
...
llvm-svn: 111546
2010-08-19 19:15:54 +00:00
Howard Hinnant
de6d046575
DE 19
...
llvm-svn: 111544
2010-08-19 19:09:08 +00:00
Howard Hinnant
1102fbbd67
US 98, US 99
...
llvm-svn: 111542
2010-08-19 18:59:38 +00:00
Howard Hinnant
20cc2a42b8
US 107
...
llvm-svn: 111538
2010-08-19 18:39:17 +00:00
Howard Hinnant
e57dc14c44
LWG 1278
...
llvm-svn: 111532
2010-08-19 17:40:04 +00:00
Howard Hinnant
5e2f7b89e9
Updated by-chapter chart with weekly test results. Also did some prototyping on result_of, but if-def'd out the prototyped part (which the LWG may or may not accept)
...
llvm-svn: 111389
2010-08-18 18:52:04 +00:00
Howard Hinnant
86550b0038
[re.alg.replace]. This finishes all of <regex>. That being said, <regex> is exceptionally difficult to thoroughly test. If anyone has the ability to test this, combined with the interest to do so, now would be a good time. :-)
...
llvm-svn: 111333
2010-08-18 00:13:08 +00:00
Howard Hinnant
14dcd3d1ff
[re.tokiter]
...
llvm-svn: 111278
2010-08-17 20:42:03 +00:00
Howard Hinnant
2bf1fd99b1
[re.regiter]
...
llvm-svn: 111178
2010-08-16 20:21:16 +00:00
Howard Hinnant
48b242a275
Everything under [re.results]
...
llvm-svn: 111074
2010-08-14 18:14:02 +00:00
Howard Hinnant
5cd6658798
Everything under [re.regex]
...
llvm-svn: 111024
2010-08-13 18:11:23 +00:00
Howard Hinnant
3d87b69f7d
Filling out regex tests...
...
llvm-svn: 110955
2010-08-12 21:14:20 +00:00
Howard Hinnant
54b409fdb9
now works with -fno-exceptions and -fno-rtti
...
llvm-svn: 110828
2010-08-11 17:04:31 +00:00
David Chisnall
37aab7674a
#ifdef around Solaris/Linux/Darwin-specific error codes and replace them with their BSD equivalents if they are not available.
...
llvm-svn: 110827
2010-08-11 16:52:41 +00:00
David Chisnall
2a072dde4b
Include sys/endian.h on FreeBSD and use that to detect the byte order.
...
llvm-svn: 110824
2010-08-11 16:27:20 +00:00
Howard Hinnant
08b0997cc1
Modified the definition of std::foward to address National Body Comment US 90
...
llvm-svn: 110805
2010-08-11 14:05:55 +00:00
Howard Hinnant
2bcfef5e9c
Fix conflict with cstring and using namespace std
...
llvm-svn: 110736
2010-08-10 21:57:23 +00:00
Howard Hinnant
eb2692571f
patch by Jesse Towner, and bug fix by Sebastian Redl
...
llvm-svn: 110724
2010-08-10 20:48:29 +00:00
Howard Hinnant
e7b3e177c4
Let C lib supply stdbool.h
...
llvm-svn: 109894
2010-07-30 21:28:27 +00:00
Howard Hinnant
a8e3da215c
Make complex.h play nice with C
...
llvm-svn: 109791
2010-07-29 18:43:15 +00:00
Howard Hinnant
7189782c6b
bug fix concerning search not at beginning of string and word boundaries
...
llvm-svn: 109750
2010-07-29 15:17:28 +00:00
Howard Hinnant
7949ab0743
fix bug incrementing past end in search
...
llvm-svn: 109716
2010-07-29 01:15:27 +00:00
Howard Hinnant
4ea5240e05
fix parse bug in ecma non-greedy loop
...
llvm-svn: 109711
2010-07-29 00:36:00 +00:00
Howard Hinnant
6e156afa71
Fixed some bugs in the ecma bracket epression regarding escaped characters, and got the awk grammar going.
...
llvm-svn: 109599
2010-07-28 17:35:27 +00:00
Howard Hinnant
c1124300fe
lookahead for ecma
...
llvm-svn: 109548
2010-07-27 22:20:32 +00:00
Howard Hinnant
93da3b2e41
grep and egrep grammars
...
llvm-svn: 109534
2010-07-27 19:53:10 +00:00
Howard Hinnant
6afe8b0a23
continued regex development...
...
llvm-svn: 109512
2010-07-27 17:24:17 +00:00
Howard Hinnant
5c67986156
A good start on ecma regex's. Maybe even feature complete, not sure yet. Also an unrelated fix to is_constructible thanks to Daniel Krugler.
...
llvm-svn: 109479
2010-07-27 01:25:38 +00:00
Howard Hinnant
f7109438ea
I believe posix extended expr is feature complete. Getting started on ecma exprs.
...
llvm-svn: 109126
2010-07-22 17:53:24 +00:00
Howard Hinnant
b762bea3ba
A few more tests for posix extended alternation
...
llvm-svn: 109107
2010-07-22 14:12:20 +00:00
Howard Hinnant
c1198c320f
A good start on extended posix regex. Loops working. Alternation working. Also update by-chapter completeness summary.
...
llvm-svn: 108548
2010-07-16 19:08:36 +00:00
Howard Hinnant
6ded099399
Tests for basic posix regex templated on wchar_t
...
llvm-svn: 108435
2010-07-15 18:18:07 +00:00
Howard Hinnant
5d695f041c
Fixed to work with generalized iterators.
...
llvm-svn: 108359
2010-07-14 21:14:52 +00:00
Howard Hinnant
5699358c63
Minor optimizations. Minor bug fixes. More tests.
...
llvm-svn: 108331
2010-07-14 15:45:11 +00:00
Howard Hinnant
8ab959c961
Bracket expressions are working (lightly tested).
...
llvm-svn: 108280
2010-07-13 21:48:06 +00:00
Howard Hinnant
fdec08bd8b
regex_constants icase and collate for matching a single char and for matching back references
...
llvm-svn: 108178
2010-07-12 19:11:27 +00:00
Howard Hinnant
aea2afe334
back references for BRE
...
llvm-svn: 108168
2010-07-12 18:16:05 +00:00
Howard Hinnant
0cbed7e140
Redesign number 3. The previous design was not handling matching of empty strings inside of loops.
...
llvm-svn: 108151
2010-07-12 15:51:17 +00:00
Howard Hinnant
87ec03a2ea
weekly update to by-chapter-summary, plus left and right anchor support in basic posix.
...
llvm-svn: 107938
2010-07-09 00:15:26 +00:00
Howard Hinnant
8c459a14a9
Marked subexpressions in a loop in basic posix working (only lightly tested so far)
...
llvm-svn: 107889
2010-07-08 17:43:58 +00:00
Howard Hinnant
189b212662
First loop test passed. The data structure and search algorithm is still crude and in-flux. But this milestone needed to be locked in. Right now every loop is implemented in terms of a structure that will handle the most complicated {min, max} loop. Though only *-loops are tested at the moment. In a future iteration *-loops will likely be optimized a little more. The only tests are for basic posix so far, but I have prototype code running for extended posix and ecma. The prototype code lacks the complicating properties of the real <regex> requirements though.
...
llvm-svn: 107803
2010-07-07 19:14:52 +00:00
Howard Hinnant
928658cd70
First test for marked subexpressions
...
llvm-svn: 107317
2010-06-30 20:30:19 +00:00
Howard Hinnant
237ee6fef8
First, very primitive, search results on one engine
...
llvm-svn: 107294
2010-06-30 17:22:19 +00:00