Commit Graph

563 Commits

Author SHA1 Message Date
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
Nick Kledzik bc6191fba9 support another Apple build environment
llvm-svn: 131996
2011-05-24 20:27:31 +00:00
Nick Kledzik 664c0da5d8 on Darwin re-export C++0x type infos
llvm-svn: 131995
2011-05-24 20:26:04 +00:00
Howard Hinnant cf76200bd3 http://llvm.org/bugs/show_bug.cgi?id=9399 fixed by Ryuta Suzuki
llvm-svn: 131961
2011-05-24 12:54:00 +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 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 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 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 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 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 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 5dbf45dfe0 CWG 1170 has been fixed for destructors
llvm-svn: 131290
2011-05-13 13:39:08 +00:00
Alexis Hunt 662d91f1cd __is_trivially_copyable now supplied by clang
llvm-svn: 131271
2011-05-13 00:32:09 +00:00
Howard Hinnant f208605bd4 Corrected misspelling
llvm-svn: 131265
2011-05-13 00:03:08 +00:00
Howard Hinnant b24491b73e Updated to reflect updated use of existing clang support
llvm-svn: 131264
2011-05-13 00:01:01 +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
Nick Kledzik f9ad245c90 change RC_BUILDIT to RC_XBS for detecting Apple build environment
llvm-svn: 130970
2011-05-06 01:13:20 +00:00
Nick Kledzik 7db91cefb2 add support for setjmp/longjmp based exceptions
llvm-svn: 130938
2011-05-05 18:45:41 +00:00
Nick Kledzik de214e29df <rdar://problem/9014045> more support for Apple internal build environments
llvm-svn: 130872
2011-05-04 21:50:46 +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 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
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 8e2617780a Jonathan Sauer updated is_base_of traits status
llvm-svn: 128349
2011-03-26 19:58:42 +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 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 3145a948d6 http://llvm.org/bugs/show_bug.cgi?id=9349 I introduced a bug with the last fix and Ryuta Suzuki has corrected it. And hopefully I committed Ryuta Suzuki's directions correctly this time.
llvm-svn: 126917
2011-03-03 01:59:23 +00:00
Howard Hinnant 01533ed9ad http://llvm.org/bugs/show_bug.cgi?id=9349 I have not personally tested this patch. Please let me know if it causes problems.
llvm-svn: 126846
2011-03-02 17:29:46 +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 80a3cadab7 Jean-Daniel Dupas fixes install directions
llvm-svn: 126222
2011-02-22 14:18:34 +00:00
Howard Hinnant 1a36219c86 Change install name to libc++.1.dylib
llvm-svn: 125626
2011-02-16 00:40:06 +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 bd356a8011 Update testit to default to clang
llvm-svn: 125498
2011-02-14 18:06:10 +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 e4de279009 Updated getting started directions.
llvm-svn: 124452
2011-01-27 23:18:19 +00:00
Howard Hinnant 8d3b8265a6 updated buildit to work with recent clang updates
llvm-svn: 124432
2011-01-27 21:01:51 +00:00
Howard Hinnant 80b2905b83 clang found a missing return statement.
llvm-svn: 124431
2011-01-27 21:01:11 +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 389eb9b54a placeholder test
llvm-svn: 124193
2011-01-25 16:32:04 +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
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 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 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 c5f5f0a166 atomics ...
llvm-svn: 121204
2010-12-07 23:24:41 +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 fd18df5b2e Add a couple more std-qualifers.
llvm-svn: 121002
2010-12-06 15:11:48 +00:00
Howard Hinnant 75357bcd39 oops, forgot std::
llvm-svn: 120915
2010-12-04 19:56:43 +00:00
Howard Hinnant 816cb8975d Fix up uses of new/terminate/unexpected handlers to use the new getters.
llvm-svn: 120914
2010-12-04 19:54:11 +00:00
Howard Hinnant 4dcf83cbd5 Add typeinfo for char16_t, char32_t and nullptr.
llvm-svn: 120810
2010-12-03 17:25:24 +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 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 348bb56a82 type_traits intrinsics design
llvm-svn: 119776
2010-11-19 01:48:13 +00:00
Howard Hinnant 4b88967b70 type_traits intrinsics design
llvm-svn: 119775
2010-11-19 01:38:58 +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
Chris Lattner 58dffe641b libc++ is now dual licensed under both UIUC and MIT licenses.
llvm-svn: 119391
2010-11-16 21:40:19 +00:00
Chris Lattner 4c9fa8a132 add a credits file for libc++
llvm-svn: 119390
2010-11-16 21:39:15 +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
Nick Kledzik 4b6ccfd9ce update to use new linker option to re-export from libc++abi.dylb
llvm-svn: 117691
2010-10-29 19:46:14 +00:00
Howard Hinnant 5ec1826429 Secure __next_prime from overflowing
llvm-svn: 117650
2010-10-29 14:10:30 +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 6b4120915e Updated chart with weekly test results, and updated export files for chnages in <atomic>.
llvm-svn: 116943
2010-10-20 20:15:14 +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 8166eca7b4 Update atomic Design A spec with reference C++ implementations for the purpose of documeting the semantics of each atomic operation.
llvm-svn: 116713
2010-10-18 16:40:13 +00:00
Howard Hinnant 1f1f63a698 Update atomic Design A spec
llvm-svn: 116707
2010-10-18 16:02:24 +00:00
Howard Hinnant c1ef47986b Fix two test bugs
llvm-svn: 116515
2010-10-14 21:08:32 +00:00
Howard Hinnant 3daef8dce2 Convert __thread_local_data to the singleton pattern and change export files...
llvm-svn: 116501
2010-10-14 19:24:23 +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
Nick Kledzik fd6fdbecd4 temporarily use cc to link instead of clang to work around issue with -Xarch
llvm-svn: 116435
2010-10-13 21:12:41 +00:00
Nick Kledzik 2b23d60cb3 update export list for when building with clang++
llvm-svn: 116434
2010-10-13 21:11:52 +00:00
Howard Hinnant 279312ec4e updated for weekly test results
llvm-svn: 116425
2010-10-13 20:24:31 +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 71dee18c43 Updated atomic design docs
llvm-svn: 116065
2010-10-08 17:36:50 +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 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 dc2394f856 Update atomic design A
llvm-svn: 115913
2010-10-07 14:18:37 +00:00
Howard Hinnant a35a35fc90 Updated <atomic> docs with three design options
llvm-svn: 115791
2010-10-06 16:15:10 +00:00
Howard Hinnant b93850f370 A compiler writer's guide to <atomic>, minor update
llvm-svn: 115633
2010-10-05 17:22:28 +00:00
Howard Hinnant 1de2266f07 A compiler writer's guide to <atomic>
llvm-svn: 115629
2010-10-05 16:44:40 +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 f717f3ae61 Bug 7984 by Bernhard Rosenkraenzer
llvm-svn: 115443
2010-10-02 23:27:23 +00:00
Howard Hinnant 18217738c7 Bug 8254 by Bernhard Rosenkraenzer
llvm-svn: 115430
2010-10-02 23:23:25 +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 77f965b75a updated per weekly tests
llvm-svn: 115081
2010-09-29 20:15:25 +00:00
Howard Hinnant 7d489d7a73 Didn't mean to commit that one
llvm-svn: 115058
2010-09-29 18:33:45 +00:00