Commit Graph

438 Commits

Author SHA1 Message Date
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 38b99b025c Add test for self-referencing emplace test.
llvm-svn: 159921
2012-07-09 02:47:43 +00:00
Howard Hinnant eeac9fcfb7 Apply constexpr to <bitset>.
llvm-svn: 159899
2012-07-07 17:04:52 +00:00
Howard Hinnant a62ebe043e Give tuple a constexpr default constructor.
llvm-svn: 159857
2012-07-06 20:39:45 +00:00
Howard Hinnant 227001d12e Add noexcept test for offsetof macro per [support.types]/p4.
llvm-svn: 159846
2012-07-06 18:39:01 +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
Howard Hinnant 0bc272cf9a Fix a few testsuite bugs involving trailing null (or lack thereof) in strstream.
llvm-svn: 157832
2012-06-01 20:02:59 +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
Richard Smith 99f15d6eb7 libc++: Add some missing #includes to atomics tests. libc++ doesn't need these
at the moment, but they allow these tests to be used to test clang against
libstdc++. Add myself to the credits file, as suggested by Howard.

llvm-svn: 155085
2012-04-19 00:50:47 +00:00
David Chisnall 4fa71de024 Fix the remaining atomic tests, all of which were wrong for the case where a
compare-and-exchange failed (it should update the expected value to the current
value, and the tests were checking that it didn't...).

Results of the atomics part of the test suite on FreeBSD with clang trunk and
the atomic.c from compiler-rt (currently kludged into the test, not installed
properly):

****************************************************
Results for /root/libc++/test/atomics:
using clang version 3.1 (trunk 153415)
Target: x86_64-unknown-freebsd10.0
Thread model: posix
with -std=c++0x -stdlib=libc++ -pthread /tmp/atomic.o  
----------------------------------------------------
sections without tests   : 0
sections with failures   : 0
sections without failures: 14
                       +   ----
total number of sections : 14
----------------------------------------------------
number of tests failed   : 0
number of tests passed   : 52
                       +   ----
total number of tests    : 52
****************************************************

Yay!

llvm-svn: 154095
2012-04-05 13:48:16 +00:00
David Chisnall ca917f5342 Fix test cases that were trying to make atomic things that are not trivially copyable.
Now all of the test cases compile.  Some of them even run!

llvm-svn: 154094
2012-04-05 13:23:08 +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 e8df82fa1a Fix test for default constructor of discrete_distribution. This partially addresses http://llvm.org/bugs/show_bug.cgi?id=12436.
llvm-svn: 153873
2012-04-02 15:00:14 +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 b2f52bb982 Allow libc++ to be built with CMake from within the LLVM tree. The libc++ part is just some renaming as the variable was already in use, conflicting with something else in the LLVM tree. Contributed by Ruben Van Boxem.
llvm-svn: 153036
2012-03-19 15:40:23 +00:00
David Chisnall 2f4cb4d79d Don't refer to a function that doesn't exist in the quick_exit test.
llvm-svn: 152716
2012-03-14 14:02:15 +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
David Chisnall 66d4573786 Make the failure reporting in testit a bit more useful.
llvm-svn: 151719
2012-02-29 13:00:44 +00:00
Howard Hinnant 26bba442ac update test for explicit bool operator.
llvm-svn: 151461
2012-02-25 21:43:14 +00:00
Howard Hinnant 167d0fbb8a Silence some warnings in a test.
llvm-svn: 151451
2012-02-25 20:04:11 +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
Dave Zarzycki d9d5b4492b Use Xcode relative compilers when possible
llvm-svn: 151108
2012-02-22 00:20:30 +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
Howard Hinnant 08487f51b7 Relax pointer output test to accept glibc's output. Patch supplied by Jeffrey Yasskin.
llvm-svn: 150927
2012-02-19 14:51:01 +00:00
Howard Hinnant c7cf23e4bf Exercise rvalue arguements to make_shared for C++11 mode.
llvm-svn: 150887
2012-02-18 20:12:03 +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 fac8c8866d Remove quotes from locale name identifier. Credit Edward Meewis.
llvm-svn: 146655
2011-12-15 15:01:38 +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 1196716270 unord test fixes by Edward Meewis
llvm-svn: 145707
2011-12-02 21:23:14 +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 05e485879c Fix ratio arithmetic with zero
llvm-svn: 143519
2011-11-01 23:13:37 +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 33a30f4159 Windows porting work by Ruben Van Boxem
llvm-svn: 141003
2011-10-03 15:23:59 +00:00
Howard Hinnant 20dde1e8fb Updated testit to run on Windows and fresh Windows results by Ruben Van Boxem
llvm-svn: 140950
2011-10-01 15:34:27 +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 cf50df9d94 Fix test bugs found by David Chisnall
llvm-svn: 140271
2011-09-21 18:33:46 +00:00
David Chisnall 580eccb05a Fix locales used in re tests.
llvm-svn: 140265
2011-09-21 17:38:03 +00:00
David Chisnall 13bddcf1bc Remove undefines in cstdio test. Fix these properly rather than bodging the tests.
llvm-svn: 140264
2011-09-21 17:37:18 +00:00
David Chisnall ecccb1f868 More +.UTF-8 fixes.
llvm-svn: 140262
2011-09-21 17:35:42 +00:00
Howard Hinnant b996af1fe7 Fix failure found by David Chisnall
llvm-svn: 140255
2011-09-21 16:42:32 +00:00
David Chisnall 71850c961d More fixes to the tests. Add UTF-8 encoding to all locales that don't specify one. Undefine some stdio.h macros that break the tests.
llvm-svn: 140252
2011-09-21 14:59:10 +00:00
David Chisnall b25f615c58 Fully-qualify some more locales in the tests...
llvm-svn: 140251
2011-09-21 14:48:49 +00:00
David Chisnall 1d9bdaa24d Don't check STREAMS error numbers on systems that don't implement the obsolete (as described in POSIX2008) XSI STREAMS extension.
llvm-svn: 140248
2011-09-21 12:23:11 +00:00
David Chisnall 8b053d5ec1 More locale cleanups. Fully specify locales in iostream tests.
llvm-svn: 140247
2011-09-21 12:09:17 +00:00
David Chisnall e36a15db17 Localisation test fixes to make the tests pass on FreeBSD, which does not provide shortened forms of the various locales (e.g. en_US, rather than en_US.UTF-8 / en_US.ISO{whatever}).
Reviewed by Howard Hinnant.

llvm-svn: 140242
2011-09-21 08:19:20 +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 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 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 09ddc43442 Correct test.
llvm-svn: 135460
2011-07-19 01:07:49 +00:00
Alexis Hunt 2405470f01 Adjust two tests to account for a nasty change in copying behavior
between C++03 and C++0x and its effect on exceptions, and another two to
not test move construction when rvalue references are not available.

llvm-svn: 135445
2011-07-18 23:51:25 +00:00
Alexis Hunt 483cf24547 Make all fstream tests use tmpnam if creating files, rather than
hard-coded names.

llvm-svn: 135444
2011-07-18 23:51:21 +00:00
Alexis Hunt 4c14ed75ee Do a litmus test of using tmpnam to generate safe temporary file names
for the tests that open new data files.

llvm-svn: 135422
2011-07-18 20:46:16 +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
Alexis Hunt f3ff971561 Give A an explicitly non-throwing destructor so that B's destructor is
itself non-throwing.  Since nested_exception's destructor is
non-throwing, if B's destructor is not, this causes an error in C++03
mode due to the overriding function having a more lax specification.
This did not occur in C++0x mode as A's destructor was implicitly
non-throwing.

llvm-svn: 135400
2011-07-18 17:07:53 +00:00
Alexis Hunt bbe2b9dbc4 Fix wchar tests by not assuming that tm is complete and by using the
proper va_list time on non-darwin platforms.

llvm-svn: 135247
2011-07-15 05:44:47 +00:00
Howard Hinnant 11af28bdbd Fixing up some ABI issues
llvm-svn: 134639
2011-07-07 21:03:52 +00:00
Alexis Hunt dca31a7964 <inttypes.h> does not necessarily include <stdint.h>. Accordingly, do
not test for this.

llvm-svn: 134531
2011-07-06 20:52:28 +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 878e035ea1 test for pair piecewise construction
llvm-svn: 133667
2011-06-22 23:51:19 +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 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 60954bbbbc Add noexcept tests for deque.
llvm-svn: 132523
2011-06-03 01:46:22 +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 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 c2bf9e1851 This commit was accidental. Reverting.
llvm-svn: 131514
2011-05-18 00:47:00 +00:00
Howard Hinnant 781afe1934 A bunch of future tests got invalidated with the latest updates to thread. Fixed the tests.
llvm-svn: 131509
2011-05-17 23:32:48 +00:00
Howard Hinnant 5fdeee5b3a Fix and beef up test bug for move_if_noexcept
llvm-svn: 131483
2011-05-17 20:10:42 +00:00
Howard Hinnant fe7e3eeddc Clean up a bunch of warnings in the tests, 3 of which actually turned out to be test bugs.
llvm-svn: 131479
2011-05-17 19:12:55 +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 15c34d48ba Redesign of result_of to handle reference-qualified member functions
llvm-svn: 131407
2011-05-16 16:17:21 +00:00
Howard Hinnant af6c26b366 Warning suppression in test.
llvm-svn: 131344
2011-05-14 15:38:08 +00:00
Howard Hinnant 3962348edf Warning suppression in test.
llvm-svn: 131343
2011-05-14 15:36:25 +00:00
Howard Hinnant 6c4c6a8047 Warning suppression in test.
llvm-svn: 131341
2011-05-14 14:53:12 +00:00
Howard Hinnant c6b9ff1169 Correction to hexfloat hack.
llvm-svn: 131340
2011-05-14 14:33:56 +00:00
Howard Hinnant e0d67710e9 Fix test bug.
llvm-svn: 131328
2011-05-14 00:07:53 +00:00
Howard Hinnant fe7cffaf57 Suppress some warings in the tests.
llvm-svn: 131327
2011-05-14 00:04:05 +00:00
Howard Hinnant a7fa0710cb Suppress some warings in the tests.
llvm-svn: 131326
2011-05-13 23:59:50 +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 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 a23551cad4 Fix bug in Sseq constraints found by Seth Cantrell
llvm-svn: 129285
2011-04-11 18:22:12 +00:00
Howard Hinnant e4b11156d7 Corrected tests for http://llvm.org/bugs/show_bug.cgi?id=9351
llvm-svn: 128807
2011-04-04 01:42:30 +00:00
Howard Hinnant e4bafbee25 ... And these wonderful tests.
llvm-svn: 128797
2011-04-03 20:06:31 +00:00
Nick Kledzik 4f8ccdf2f8 <rdar://problem/9073695> std::uncaught_exception() becomes true before evaluating the throw-expression rather than after
llvm-svn: 127499
2011-03-11 22:33:07 +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 a8d8ca4d6f http://llvm.org/bugs/show_bug.cgi?id=9326
llvm-svn: 126504
2011-02-25 19:52:41 +00:00
Howard Hinnant bd356a8011 Update testit to default to clang
llvm-svn: 125498
2011-02-14 18:06:10 +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
Howard Hinnant 389eb9b54a placeholder test
llvm-svn: 124193
2011-01-25 16:32:04 +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
Chandler Carruth ce395a9acd Teach the Lit configuration to actually use the cxx0x setting when
constructing compile flags, and to link against the 'rt' library on
Linux for clock_gettime and friends.

llvm-svn: 124052
2011-01-23 01:05:20 +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
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 7f8e26867f Test adjustment for recent changes in allocator_traits
llvm-svn: 121503
2010-12-10 19:22:37 +00:00
Howard Hinnant 088bd9aa14 This got accidentally removed
llvm-svn: 121502
2010-12-10 19:22:00 +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 3135def61d cleaning up...
llvm-svn: 121275
2010-12-08 20:09:09 +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
Michael J. Spencer 5f53fceff0 test: Rename string_op+= to string_op_plus_equal. Windows git doesn't like it.
llvm-svn: 121265
2010-12-08 17:06:47 +00:00
Howard Hinnant 0e1cd17d0a atomics ...
llvm-svn: 121202
2010-12-07 23:20:28 +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 e78881314a Update testsuite strucuture to latest draft
llvm-svn: 120064
2010-11-23 22:13:07 +00:00
Howard Hinnant b32f147bbf Update testsuite strucuture to latest draft
llvm-svn: 120058
2010-11-23 20:55:56 +00:00
Howard Hinnant fedfe3b69c Update testsuite strucuture to latest draft
llvm-svn: 120057
2010-11-23 20:55:36 +00:00
Howard Hinnant ab7be6e43c Update testsuite strucuture to latest draft
llvm-svn: 120054
2010-11-23 20:47:09 +00:00
Howard Hinnant 4030e72457 Update testsuite strucuture to latest draft
llvm-svn: 120045
2010-11-23 20:26:48 +00:00
Howard Hinnant 46cc61ea7c Update testsuite strucuture to latest draft
llvm-svn: 120043
2010-11-23 20:25:10 +00:00
Howard Hinnant e8ce332127 Update testsuite strucuture to latest draft
llvm-svn: 120040
2010-11-23 20:21:36 +00:00
Howard Hinnant 274541968b Update testsuite strucuture to latest draft
llvm-svn: 120036
2010-11-23 19:52:19 +00:00
Howard Hinnant e5cb278766 Update testsuite strucuture to latest draft
llvm-svn: 120029
2010-11-23 19:15:49 +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 48d05bd26c LWG 1339
llvm-svn: 119699
2010-11-18 16:13:03 +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 412dbebe1b license change
llvm-svn: 119395
2010-11-16 22:09:02 +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 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 c1ef47986b Fix two test bugs
llvm-svn: 116515
2010-10-14 21:08:32 +00:00
Howard Hinnant 149f659af3 Relaxing timing test a bit to avoid spurious test failures under load
llvm-svn: 115920
2010-10-07 16:25:31 +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 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 88efc1c7a5 Contemplating this <atomic> reorganization...
llvm-svn: 115087
2010-09-29 21:20:03 +00:00
Howard Hinnant 7d489d7a73 Didn't mean to commit that one
llvm-svn: 115058
2010-09-29 18:33:45 +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 eb9e9a3710 fixing whitespace
llvm-svn: 114967
2010-09-28 17:19:10 +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
Daniel Dunbar 5f09d9e00a tests/lit: Split options into two groups, so we don't get driver warnings about
unused linker arguments for compile only tests.

llvm-svn: 113935
2010-09-15 04:31:58 +00:00
Daniel Dunbar ecd98d5173 tests: Remove some stray cleanup code.
llvm-svn: 113934
2010-09-15 04:18:37 +00:00
Daniel Dunbar bc9a848e04 tests: Fixup lit config, which got garbled somehow...
llvm-svn: 113931
2010-09-15 04:11:29 +00:00
Daniel Dunbar 42ea463089 tests: Sketch a lit config for running libc++ tests; currently expects libc++ to have been installed.
llvm-svn: 113925
2010-09-15 03:57:04 +00:00
Howard Hinnant 1c1620b269 Updated by-chapter-summary with weekly test results, and fixed up some bad paths in some tests caused by aligning the test suite with N3126.
llvm-svn: 113403
2010-09-08 20:31:42 +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 1be27f0929 has_nothrow_copy_assign hooked up to clang
llvm-svn: 113364
2010-09-08 16:39:18 +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 cbf93f3959 sync with N3126
llvm-svn: 113101
2010-09-05 01:14:30 +00:00
Howard Hinnant f9e81f9acb sync with N3126
llvm-svn: 113100
2010-09-05 01:10:45 +00:00
Howard Hinnant 771f325a1f sync with N3126
llvm-svn: 113099
2010-09-05 01:06:34 +00:00
Howard Hinnant 5bed8c6f65 sync with N3126
llvm-svn: 113098
2010-09-05 00:57:20 +00:00
Howard Hinnant e7d99b29be sync with N3126
llvm-svn: 113097
2010-09-05 00:49:04 +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 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 c009b09c2b [futures.unique_future]
llvm-svn: 112423
2010-08-29 14:20:30 +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 dae3481b28 Getting started on <future>
llvm-svn: 112061
2010-08-25 17:32:05 +00:00
Howard Hinnant 01f586ca2c Corrected some int -> char narrowing conversions
llvm-svn: 111849
2010-08-23 21:41:03 +00:00
Howard Hinnant 8c93ff2ce3 Accidentally changed a data file during the whitespace cleanup
llvm-svn: 111845
2010-08-23 21:23:21 +00:00
Howard Hinnant fae824a32d Remove tabs
llvm-svn: 111778
2010-08-22 13:53:14 +00:00
Howard Hinnant 2807d4a58b Fixing whitespace problems
llvm-svn: 111769
2010-08-22 01:04:38 +00:00
Howard Hinnant 94b2dd0998 Fixing whitespace problems
llvm-svn: 111767
2010-08-22 00:59:46 +00:00
Howard Hinnant 2cb7936efe Fixing whitespace problems
llvm-svn: 111765
2010-08-22 00:50:25 +00:00
Howard Hinnant bf2897cf45 Fixing whitespace problems
llvm-svn: 111764
2010-08-22 00:47:54 +00:00
Howard Hinnant f36101dd3d Fixing whitespace problems
llvm-svn: 111763
2010-08-22 00:45:01 +00:00
Howard Hinnant a0eaf608cd Fixing whitespace problems
llvm-svn: 111762
2010-08-22 00:42:21 +00:00
Howard Hinnant 3bad6b61e5 Fixing whitespace problems
llvm-svn: 111761
2010-08-22 00:39:25 +00:00
Howard Hinnant b5a4c50a03 Fixing whitespace problems
llvm-svn: 111760
2010-08-22 00:31:12 +00:00
Howard Hinnant 0022123b95 Fixing whitespace problems
llvm-svn: 111759
2010-08-22 00:29:01 +00:00
Howard Hinnant 66dbf0d311 Fixing whitespace problems
llvm-svn: 111758
2010-08-22 00:26:48 +00:00
Howard Hinnant 62bfbb0974 Fixing whitespace problems
llvm-svn: 111757
2010-08-22 00:22:24 +00:00
Howard Hinnant 5cf4e1f1f0 Fixing whitespace problems
llvm-svn: 111756
2010-08-22 00:20:12 +00:00
Howard Hinnant 8f2f7e7c79 Fixing whitespace problems
llvm-svn: 111755
2010-08-22 00:15:28 +00:00
Howard Hinnant 664ae8118e Fixing whitespace problems
llvm-svn: 111753
2010-08-22 00:08:10 +00:00
Howard Hinnant 9f1102b7fe US 108, N3109
llvm-svn: 111747
2010-08-21 21:14:53 +00:00