Commit Graph

2962 Commits

Author SHA1 Message Date
Marshall Clow dc3eb83d08 Always use the allocator to construct/destruct elements of a deque/vector. Fixes PR#28412. Thanks to Jonathan Wakely for the report.
llvm-svn: 275105
2016-07-11 21:38:08 +00:00
Eric Fiselier 0774aa96dc Allow is_swappable to SFINAE on deleted/ambiguous swap functions
llvm-svn: 275094
2016-07-11 19:57:13 +00:00
Eric Fiselier faaeaaf0d8 Hide some internal symbols for memory resource.
llvm-svn: 275089
2016-07-11 19:22:09 +00:00
Marshall Clow bc3b1f3b7b Fix typo in #ifdef; leave tests commented out b/c gcc 4.8 harks on them.
llvm-svn: 274882
2016-07-08 16:59:54 +00:00
Marshall Clow 947ce6b59f Implement LWG685 (which is from C++11!). Fixes PR#28421. Note: this (subtly) changes the return type of operator-(Iter1, Iter2) where Iter1 is a reverse iterator or a move_iterator, and Iter2 is some other move/reverse iterator type. In practice, I believe that almost every time the second param will be const_XXX and this will mean that the return type will be the same as it was before.
llvm-svn: 274880
2016-07-08 16:54:47 +00:00
Kwasi Mensah 318d35a7bc [libc++] Check hash before calling __hash_table key_eq function
Summary: The current implementations of __hash_table::find used by std::unordered_set/unordered_map call key_eq on each key that lands in the same bucket as the key you're looking for. However, since equal objects mush hash to the same value, you can short-circuit the possibly expensive call to key_eq by checking the hashes first.

Reviewers: EricWF

Subscribers: kmensah, cfe-commits

Differential Revision: http://reviews.llvm.org/D21510

llvm-svn: 274857
2016-07-08 15:34:28 +00:00
Manman Ren 78fa242ec2 Revert r274605 due to bot failure: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/244/
llvm-svn: 274651
2016-07-06 18:24:53 +00:00
Marshall Clow 5c29783bf2 Fix typo in #ifdef, and re-enable tests now that the green-dragon bots are no more
llvm-svn: 274605
2016-07-06 05:28:44 +00:00
Eric Fiselier c835c12f6c Add unordered_map::insert benchmark test and rename file
llvm-svn: 274424
2016-07-02 05:30:54 +00:00
Eric Fiselier f977598bb6 Improve performance of unordered_set<uint32_t>::find by 45%. Add benchmarks.
This patch improves the performance of unordered_set's find by 45% when
the value exists within the set. __hash_tables find method
needs to check if it's reached the end of the bucket by constraining the
hash of the current node and checking it against the bucket index. However
constraining the hash is an expensive operations and it can be avoided if the
two unconstrained hashes are equal. This patch applies that optimization.

This patch also adds a top level directory called benchmarks. 'benchmarks/'
is intended to store any/all benchmarks written for the standard library.
Currently nothing is done with files under 'benchmarks/' but I would like
to move towards introducing a formal format and test runner.

llvm-svn: 274423
2016-07-02 05:19:59 +00:00
Eric Fiselier 4f905b8daa Handle std::get<T>(...) for std::tuple<>
llvm-svn: 274422
2016-07-02 03:46:08 +00:00
Eric Fiselier 3a0485427f Remove workarounds for C++17 inline variable ABI break. It has been fixed in clang.
llvm-svn: 274419
2016-07-02 03:21:58 +00:00
Eric Fiselier f447e62e1d Rewrite std::get<Type>(...) helper using constexpr functions.
llvm-svn: 274418
2016-07-02 03:18:30 +00:00
Eric Fiselier 27cdf401ea Cleanup SFINAE in tuple, and add tests for reference assignment
llvm-svn: 274414
2016-07-02 01:25:46 +00:00
Eric Fiselier 7b60958aea Make tuple_constructible and family lazy again.
llvm-svn: 274413
2016-07-02 00:58:17 +00:00
Eric Fiselier fa10f41f3e Add another workaround for C++17 inline variable ABI breakage.
llvm-svn: 274408
2016-07-01 23:41:48 +00:00
Eric Fiselier d3ac6ae7d3 Remove accidental change committed in r274403.
llvm-svn: 274407
2016-07-01 23:31:55 +00:00
Eric Fiselier 58b6e3e3d0 Turn off ASAN's odr-violation diagnostics for now. See PR28391
llvm-svn: 274404
2016-07-01 23:25:47 +00:00
Eric Fiselier d3a1ed814b Work around ABI break caused by C++17 inline variables.
llvm-svn: 274403
2016-07-01 23:22:25 +00:00
Eric Fiselier e2fd8b8db9 Flatten tuple_constructible, tuple_convertible and tuple_assignable.
This patch is the last in a series that replaces recursive meta-programming
in std::tuple with non-recursive implementations.

Previously std::tuple could only be instantiated with 126 elements before
it blew the max template instantiation depth. Now the size of std::tuple is
essentially unbounded (I've tested with over 5000 elements).

One unfortunate side-effect of this change is that tuple_constructible
and similar no longer short circuit after the first failure. Instead they
evaluate the conditions for all elements. This could be potentially breaking.
I plan to look into this further.

llvm-svn: 274331
2016-07-01 04:07:39 +00:00
Eric Fiselier 10b9a1bb42 Flatten the tuple_element and __make_tuple_types implementations.
This patch attempts to improve the QoI of std::tuples tuple_element and
__make_tuple_types helpers. Previously they required O(N) instantiations,
one for every element in the tuple

The new implementations are O(1) after __tuple_indices<Id...> is created.

llvm-svn: 274330
2016-07-01 03:54:54 +00:00
Eric Fiselier 9743af6e31 Replace __make_tuple_indices implementation with superior implementation.
The previous __make_tuple_indices implementation caused O(N) instantiations
and was pretty inefficient. The C++14 __make_integer_sequence implementation
is much better, since it either uses a builtin to generate the sequence or
a very nice Log8(N) implementation provided by richard smith.

This patch moves the __make_integer_sequence implementation into __tuple
and uses it to implement __make_tuple_indices.

Since libc++ can't expose the name 'integer_sequence' in C++11 this patch
also introduces a dummy type '__integer_sequence' which is used when generating
the sequence. One the sequence is generated '__integer_sequence' can be
converted into the required type; either '__tuple_indices' or 'integer_sequence'.

llvm-svn: 274286
2016-06-30 22:34:43 +00:00
Marshall Clow 3b8669edbf Fix static assert problem on gcc; remove XFAILs that I put in in r274250
llvm-svn: 274285
2016-06-30 22:05:45 +00:00
Eric Fiselier 19cf6b6c93 Fix C++03 build.
llvm-svn: 274274
2016-06-30 20:46:58 +00:00
Marshall Clow f7aaf31c53 Mark issues 2550, 2551, 2555, 2685, 2698 as complete. These issues are wording clarifications; no code changes required.
llvm-svn: 274255
2016-06-30 18:05:19 +00:00
Marshall Clow 2f63da2887 Mark issues 2667, 2669, 2670, 2671, 2673 as complete. These issues are wording clarifications; no code changes required.
llvm-svn: 274253
2016-06-30 17:59:01 +00:00
Marshall Clow e46c0885ff Implement LWG#2688: 'clamp misses preconditions and has extraneous condition on result'. We already did this, just added tests
llvm-svn: 274252
2016-06-30 17:52:51 +00:00
Marshall Clow bc4618647f Temporarily XFAIL the incomplete type tests for GCC while I figure out why adding a static_assert in r274235 broken them
llvm-svn: 274250
2016-06-30 17:49:36 +00:00
Marshall Clow c8afc869b0 Implement LWG#2684: 'priority_queue lacking comparator typedef'. We already did this, just added tests
llvm-svn: 274243
2016-06-30 16:03:50 +00:00
Marshall Clow 81fce9729c Implement LWG#2596: 'vector::data() should use addressof'
llvm-svn: 274241
2016-06-30 15:50:55 +00:00
Marshall Clow e766a87b01 Implement LWG#2441: 'Exact-width atomic typedefs should be provided'
llvm-svn: 274236
2016-06-30 15:28:38 +00:00
Marshall Clow 497677449b Implement LWG#2436: 'Comparators for associative containers should always be CopyConstructible'
llvm-svn: 274235
2016-06-30 15:11:53 +00:00
Eric Fiselier b4fe59b595 Update status of already completed Oulu issues.
* P0163r0: Implemented in r273839.

* LWG 2309: pthread_mutex_lock only returns this error if certain debug flags
  were passed during construction. libc++ does not pass these flags. There is
  nothing to do.

* LWG 2310: Wording fix. No impact on libc++'s implementation.

* LWG 2312: libc++'s std::tuple implementation already constrains the overloads
  based on the number of arguments.

* LWG 2549: libc++'s std::tuple already applied this fix.

* LWG 2674: libc++ already depends on this relaxed wording.

* LWG 2704, 2706, 2707, 2719, 2720, 2721, 2723, 2725, 2728: All of these filesystem were either
  submitted by me and fixed before submission, or have already been applied.

llvm-svn: 274214
2016-06-30 06:59:29 +00:00
Eric Fiselier d3c2acd38c Make futures.overview enum tests more portable. Patch from STL@microsoft.com
llvm-svn: 274211
2016-06-30 05:00:32 +00:00
Eric Fiselier b21f96ac4b Make std::array typedef tests more portable.
llvm-svn: 274210
2016-06-30 04:54:00 +00:00
Eric Fiselier 8892b4eef0 Fix ::reference typedef in insert iterators.
Since at least the C++11 standard insert iterators are specified
as having ::reference typedef void. Libc++ was not doing that.
This patch corrects the typedef.

This patch changes the std::iterator base class of insert_iterator,
front_insert_iterator and back_insert_iterator. This should not
be an ABI breaking change.

llvm-svn: 274209
2016-06-30 04:40:50 +00:00
Eric Fiselier cb1fd66853 Make instreambuf.iterator/types.pass.cpp more portable.
llvm-svn: 274207
2016-06-30 04:31:09 +00:00
Eric Fiselier c76111a132 Fix use of terse static assert. Patch from STL@microsoft.com
llvm-svn: 274206
2016-06-30 04:29:12 +00:00
Eric Fiselier 3b0184321f Fix unary_function inheritance assumption. Patch from STL@microsoft.com
llvm-svn: 274205
2016-06-30 04:28:12 +00:00
Eric Fiselier 2bbb125d4e Fix unreferenced parameter warning. Patch from STL@microsoft.com
llvm-svn: 274204
2016-06-30 04:22:58 +00:00
Eric Fiselier 2afa66e124 Avoid applying unary minus to unsigned integers. Patch from STL@microsoft.com
llvm-svn: 274203
2016-06-30 04:21:52 +00:00
Akira Hatanaka 2556b769ec [libcxx] Fix a bug in strstreambuf::overflow.
The end pointer should point to one past the end of the newly allocated
buffer.

rdar://problem/24265174

Differential Revision: http://reviews.llvm.org/D20334

llvm-svn: 274132
2016-06-29 15:26:13 +00:00
Marshall Clow 91bd7dda3a Use WG21.link reflector to get to issues, rather than linking directly
llvm-svn: 274018
2016-06-28 14:13:28 +00:00
Marshall Clow baf27df0bf Updated C++1Z status page with new work from Oulu WG21 meeting
llvm-svn: 274016
2016-06-28 14:11:54 +00:00
Marshall Clow 3044c34c45 Fix bad link for P0006
llvm-svn: 273861
2016-06-27 11:14:34 +00:00
Eric Fiselier e3c72c1c85 Fix UB in uses_alloc_types.hpp
llvm-svn: 273840
2016-06-27 01:52:14 +00:00
Eric Fiselier 68436a9b48 Implement P0163r0. Add shared_ptr::weak_type.
This patch adds the weak_type typedef in shared_ptr. It is available in
C++17 and newer.

This patch also updates the _LIBCPP_STD_VER and TEST_STD_VER macros to
have the value of 16, since 2016 is the current year.

llvm-svn: 273839
2016-06-27 01:02:43 +00:00
Eric Fiselier 8b7faa6871 Implement p0337r0. Delete operator= for polymorphic_allocator.
llvm-svn: 273838
2016-06-27 00:55:25 +00:00
Eric Fiselier 9372d8bc61 Implement P0358r1. Fixes for not_fn.
llvm-svn: 273837
2016-06-27 00:40:41 +00:00
Eric Fiselier 06e9017d7b Fix C++03 failure in enable_shared_from_this test
llvm-svn: 273836
2016-06-27 00:38:28 +00:00
Eric Fiselier 39005d3019 Fix PR27115 - enable_shared_from_this does not work as a virtual base class.
See https://llvm.org/bugs/show_bug.cgi?id=27115

The problem was that the conversion from
'const enable_shared_from_this<T>*' to 'const T*' didn't work if
T inherited enable_shared_from_this as a virtual base class. The fix
is to take the original pointer passed to shared_ptr's constructor in the
__enable_weak_this method and perform an upcast to 'const T*' instead of
performing a downcast from the enable_shared_from_this base.

llvm-svn: 273835
2016-06-26 23:56:32 +00:00
Eric Fiselier 66fe5a4e2b Fix C++03 build
llvm-svn: 273832
2016-06-26 23:18:23 +00:00
Eric Fiselier bb94dca13a Fix PR28079 - std::wstring_convert move constructor broken.
The move constructor for wstring_convert accidentally copied the state member
into the converted count member in the move constructor. This patch fixes
the typo.

While working on this I discovered that wstring_convert doesn't actually
provide a move constructor according to the standard and therefore this
constructor is a libc++ extension. I'll look further into whether libc++ should
provide this constructor at all. Neither libstdc++ or MSVC's STL provide it.

llvm-svn: 273831
2016-06-26 22:56:26 +00:00
Eric Fiselier 555330719a Implement LWG 2488 - Make the placeholders constexpr.
This patch makes the bind placeholders in std::placeholders both (1) const and
(2) constexpr (See below).

This is technically a breaking change for any code using the placeholders
outside of std::bind and depending on them being non-const. However I don't
think this will break any real world code.

(1) Previously the placeholders were non-const extern globals in all
dialects. This patch changes these extern globals to be const in all dialects.
Since the cv-qualifiers don't participate in name mangling for globals this
is an ABI compatible change.

(2) Make the placeholders constexpr in C++11 and beyond. Although LWG 2488 only
applies to C++17 I don't see any reason not to backport this change.

llvm-svn: 273824
2016-06-26 21:01:34 +00:00
Eric Fiselier a9fb19d3a5 Make default_noexcept.pass.cpp container tests more portable. Patch from STL@microsoft.com
llvm-svn: 273823
2016-06-26 20:21:22 +00:00
Eric Fiselier 7cca38bfd1 Work around MSVC bug in atomics.types.generic/address.pass.cpp test. Patch from STL@microsoft.com
llvm-svn: 273822
2016-06-26 19:59:11 +00:00
Eric Fiselier 384e012561 Use L"cat" L"dog" when concatenating string literals. Patch from STL@microsoft.com
llvm-svn: 273821
2016-06-26 19:53:46 +00:00
Eric Fiselier 2e0e3df9da Add array bounds assertions to satisfy MSVC's /analyze flag. Patch from STL@microsoft.com
llvm-svn: 273820
2016-06-26 19:48:29 +00:00
Eric Fiselier 3740071be0 Add [[noreturn]] attribute to throw_bad_alloc_helper().
llvm-svn: 273819
2016-06-26 19:42:59 +00:00
Eric Fiselier 95b5ac7df9 Avoid narrowing conversions in quoted test. Patch from STL@microsoft.com
llvm-svn: 273818
2016-06-26 19:37:23 +00:00
Weiming Zhao 41583957a5 [libcxx] guard throw with exception enabling check
Summary: this fixes build error when built with c++14 and no exceptions

Reviewers: rmaprath

Subscribers: weimingz, grandinj, rmaprath, cfe-commits

Differential Revision: http://reviews.llvm.org/D21673

llvm-svn: 273697
2016-06-24 18:02:27 +00:00
Eric Fiselier 351a709781 Run list debug copy test in C++03.
llvm-svn: 273395
2016-06-22 08:57:33 +00:00
Eric Fiselier 75fd25e4bc Finish converting list _LIBCPP_DEBUG tests.
llvm-svn: 273394
2016-06-22 08:47:43 +00:00
Eric Fiselier 3624fedb68 Cleanup _LIBCPP_DEBUG tests in std::list. More to come.
llvm-svn: 273393
2016-06-22 08:01:27 +00:00
Eric Fiselier e357c0ad3b Cleanup filesystem::permissions ever more.
llvm-svn: 273392
2016-06-22 07:57:38 +00:00
Eric Fiselier c4f6eda006 Avoid unnecessary stat call in filesystem::permissions implementation.
llvm-svn: 273391
2016-06-22 07:24:00 +00:00
Eric Fiselier eea7a01a28 Disable ccache usage for .fail.cpp tests. It causes bugs.
llvm-svn: 273390
2016-06-22 07:09:59 +00:00
Eric Fiselier 0e9272bee2 Placate MSVC's unchecked malloc warning in thread tests.
llvm-svn: 273385
2016-06-22 05:44:08 +00:00
Eric Fiselier 19d44836d7 Use correct Clang feature names. I got them wrong in the previous commit
llvm-svn: 273384
2016-06-22 05:40:17 +00:00
Eric Fiselier 94713d1671 Support old GCC exception and rtti detection macros
llvm-svn: 273383
2016-06-22 05:33:52 +00:00
Eric Fiselier 88d38802e2 Add tests for RTTI/exceptions test macros.
llvm-svn: 273382
2016-06-22 05:29:15 +00:00
Eric Fiselier eb067d4ebd Fix exception/rtti detection in tests.
So the macros TEST_HAS_NO_EXCEPTIONS and TEST_HAS_NO_RTTI were always
getting defined because I spelt __cpp_exceptions and __cpp_rtti as
__cxx_exceptions and __cxx_rtti.

Tests incoming after this patch.

llvm-svn: 273381
2016-06-22 05:03:10 +00:00
Eric Fiselier 74480010dc Make shared_ptr constructor tests use count_new.hpp
llvm-svn: 273379
2016-06-22 04:51:07 +00:00
Eric Fiselier 739cc95471 Make locale constructors tests use count_new.hpp
llvm-svn: 273375
2016-06-22 04:34:24 +00:00
Eric Fiselier cc4162293f Placate MSVC's unchecked malloc warnings.
llvm-svn: 273374
2016-06-22 04:23:54 +00:00
Eric Fiselier 32853ad707 UBSan doesn't globally replace new/delete but it still makes some tests fail. Investigation needed.
llvm-svn: 273372
2016-06-22 04:00:45 +00:00
Eric Fiselier 8ff7432534 Cleanup [list.modifiers] tests.
llvm-svn: 273371
2016-06-22 03:46:32 +00:00
Eric Fiselier a97d34a982 Don't use non-conforming pointer_traits specialization it tests.
llvm-svn: 273368
2016-06-22 02:31:32 +00:00
Eric Fiselier 56f23a3f7f Move remaining _LIBCPP_VERSION tests into test/libcxx
llvm-svn: 273367
2016-06-22 02:23:22 +00:00
Eric Fiselier 189d6a8834 Move more _LIBCPP_VERSION tests to test/libcxx.
llvm-svn: 273365
2016-06-22 02:07:26 +00:00
Eric Fiselier 0202dec266 Move all tests for _LIBCPP_VERSION in language.support to test/libcxx/language.support.
llvm-svn: 273364
2016-06-22 01:55:59 +00:00
Eric Fiselier 505ceacd3b Move typoed dir meta.hel to meta.help
llvm-svn: 273362
2016-06-22 01:42:39 +00:00
Eric Fiselier 77d2d95973 Use static_assert instead of runtime assert in std::money_base tests.
llvm-svn: 273360
2016-06-22 01:40:46 +00:00
Eric Fiselier bae51d36aa Remove locale tests that depend on LC_ALL. These are non-portable.
llvm-svn: 273359
2016-06-22 01:33:38 +00:00
Eric Fiselier 46fb2b903e Fix comment typos, strip trailing whitespace. Patch from STL@microsoft.com
llvm-svn: 273357
2016-06-22 01:23:51 +00:00
Eric Fiselier 8d0d842e7b Avoid huge main() functions and huge arrays. Patch from STL@microsoft.com
llvm-svn: 273354
2016-06-22 01:13:44 +00:00
Eric Fiselier 7a580d0a72 Don't use C++17 terse static assert. Patch from STL@microsoft.com
llvm-svn: 273353
2016-06-22 01:10:14 +00:00
Eric Fiselier 060ecaf672 Fix operator precedence mistake in valarray/not.pass.cpp. Patch from STL@microsoft.com
llvm-svn: 273352
2016-06-22 01:04:09 +00:00
Eric Fiselier 408d6ebd2d Suppress stupid and incorrect MSVC warning. patch from STL@microsoft.com
llvm-svn: 273350
2016-06-22 01:02:08 +00:00
Eric Fiselier df839e04b4 Avoid assignment in return. Patch from STL@microsoft.com
llvm-svn: 273349
2016-06-22 01:00:32 +00:00
Eric Fiselier c1d08ff069 Suppress unused warnings in std::invoke tests.
llvm-svn: 273348
2016-06-22 00:58:06 +00:00
Eric Fiselier 5f15481f87 Guard libc++ assumption about identity hashing in test. Patch from STL@microsoft.com
llvm-svn: 273345
2016-06-22 00:53:35 +00:00
Eric Fiselier c36f0331df Guard use of non-standard macros in denorm_min() tests.
llvm-svn: 273344
2016-06-22 00:50:09 +00:00
Eric Fiselier 0df0296974 Allow placement new array test to consume extra bytes as specified by the standard.
llvm-svn: 273342
2016-06-22 00:32:28 +00:00
Eric Fiselier 97e0ba02fd Move native_handle thread tests to test/libcxx
llvm-svn: 273341
2016-06-22 00:21:50 +00:00
Eric Fiselier 092386771d Fix PR27684 - std::tuple no longer accepts reference to incomplete type in some cases.
Libc++ has to deduce the 'allocator_arg_t' parameter as 'AllocArgT' for the
following constructor:

  template <class Alloc> tuple(allocator_arg_t, Alloc const&)

Previously libc++ has tried to support tags derived from 'allocator_arg_t' by
using 'is_base_of<AllocArgT, allocator_arg_t>'. However this breaks whenever a
2-tuple contains a reference to an incomplete type as its first parameter.

See https://llvm.org/bugs/show_bug.cgi?id=27684

llvm-svn: 273334
2016-06-21 23:19:13 +00:00
Eric Fiselier 44e2ebadb2 Implement LWG issue 2720. Replace perms::resolve_symlinks with perms::symlink_nofollow.
This changes how filesystem::permissions(p, perms) handles symlinks. Previously
symlinks were not resolved by default instead only getting resolved when
"perms::resolve_symlinks" was used. After this change symlinks are resolved
by default and perms::symlink_nofollow must be given to change this.

This issue has not yet been moved to Ready status, and I will revert if it
doesn't get moved at the current meeting. However I feel confident that it
will and it's nice to have implementations when moving issues.

llvm-svn: 273328
2016-06-21 22:42:42 +00:00
Eric Fiselier 310d3b975f Implement LWG issue 2725. The issue should move this meeting
llvm-svn: 273325
2016-06-21 22:11:16 +00:00
Eric Fiselier 48bc850917 Allow the libc++ build/source paths to contain symlinks.
The filesystem tests were expecting the paths to the build/source directories
did not contain any symlinks. This patch resolves those symlinks before running
the test suite.

llvm-svn: 273323
2016-06-21 21:54:23 +00:00
Jonathan Coe 4fc9221616 Add entry to CREDITS.TXT for propagate_const
llvm-svn: 273123
2016-06-19 19:36:28 +00:00
Jonathan Coe 945cacc842 Implement std::experimental::propagate_const from LFTS v2
Summary:
An implementation of std::experimental::propagate_const from Library Fundamentals Technical Specification v2.

No tests are provided for disallowed types like fancy pointers or function pointers as no code was written to handle these.

Reviewers: EricWF, mclow.lists

Differential Revision: http://reviews.llvm.org/D12486

llvm-svn: 273122
2016-06-19 19:34:13 +00:00
Marshall Clow 92c9fef95f Test commit; remove some spaces at EOL. No functional change.
llvm-svn: 273121
2016-06-19 19:29:52 +00:00
Eric Fiselier 990952b664 Fix various undefined behavior found by UBSan.
* Fix non-null violation in strstream.cpp
  Overflow was calling memcpy with a null parameter and a size of 0.

* Fix std/atomics/atomics.flag/ tests:
  a.test_and_set() was reading from an uninitialized atomic, but wasn't
  using the value. The tests now clear the flag before performing the
  first test_and_set. This allows UBSAN to test that clear doesn't read
  an invalid value.

* Fix std/experimental/algorithms/alg.random.sample/sample.pass.cpp
  The tests were dereferencing a past-the-end pointer to an array so that
  they could do pointer arithmetic with it. Instead of dereference the iterator
  I changed the tests to use the special 'base()' test iterator method.

* Add -fno-sanitize=float-divide-by-zero to suppress division by zero UBSAN diagnostics.
  The tests that cause float division by zero are explicitly aware that they
  are doing that. Since this is well defined for IEEE floats suppress the warnings
  for now.

llvm-svn: 273107
2016-06-19 07:08:27 +00:00
Eric Fiselier be13be47ba Implement LWG issue 1169. num_get not fully compatible with strto*
Use strtof and strtod for floats and doubles respectively instead of
always using strtold. The other parts of the change are already implemented
in libc++.

This patch also has a drive by fix to wbuffer_convert::underflow() which
prevents it from calling memmove(buff, null, 0).

llvm-svn: 273106
2016-06-19 06:58:22 +00:00
Eric Fiselier 37ba54e5d7 Add UBSan blacklist for <__tree> and <__hash_table>
We all know <__tree> and <__hash_table> have plenty of UB that UBSan faithfully
finds. I am working on fixing this. However the noisy output from these failures
prevent automatically detecting regressions elsewhere.

This patch adds a blacklist file for these failures so I can later set up a
UBSAN buildbot.

llvm-svn: 273104
2016-06-19 02:25:22 +00:00
Eric Fiselier 629645d83d Fix bugs in last_write_time implementation.
* Fix passing a negative number as either tv_usec or tv_nsec. When file_time_type
  is negative and has a non-zero sub-second value we subtract 1 from tv_sec
  and make the sub-second duration positive.

* Detect and report when 'file_time_type' cannot be represented by time_t. This
  happens when using large/small file_time_type values with a 32 bit time_t.

There is more work to be done in the implementation. It should start to use
stat's st_mtim or st_mtimeval if it's provided as an extension. That way
we can provide a better resolution.

llvm-svn: 273103
2016-06-19 02:04:49 +00:00
Eric Fiselier d7ae63da67 Remove Apple specific guard for utimensat. Use !defined(UTIME_OMIT) instead.
As pointed out by @majnemer this is a better way to detect utimensat on all
platforms. The Apple specific guard is unneeded.

llvm-svn: 273093
2016-06-18 19:11:40 +00:00
Eric Fiselier b88d8f6346 Add -Wno-covered-switch-default while compiling libc++
fstream has a switch over ios_base::seekdir which provides a defensive default
case. This seems like the right thing for fstream to do, but we need to disable
clangs warning during the build to allow this.

llvm-svn: 273092
2016-06-18 18:55:18 +00:00
Eric Fiselier 824ed8c03e Fix SleepFor(...) helper when a monotonic clock is not available.
Single threaded builds often don't provide a monotonic clock, so we can't
always provide a monotonic SleepFor(...) implementation. Hopefully this
won't cause the builds to hang.

llvm-svn: 273091
2016-06-18 18:32:26 +00:00
Eric Fiselier 97d72df6b0 Use monotonic clock in synthetic SleepFor test helper
llvm-svn: 273089
2016-06-18 17:51:11 +00:00
Eric Fiselier d9ed9c462b Use utimes instead of utimensat when !defined(UTIME_OMIT). Fixes build for older GLIBC versions
llvm-svn: 273088
2016-06-18 17:37:04 +00:00
Eric Fiselier dc62be1915 Fix 3 bugs in filesystem tests and implementation.
This patch fixes the following bugs, all of which were discovered while
testing a 32 bit build on a 64 bit machine.

* path.itr/iterator.pass.cpp has undefined behavior.
  'path::iterator' stashes the value of the element inside the iterator.
  This violates the BiDirIterator requirements but is allowed for path::iterator.
  However this means that using reverse_iterator<path::iterator> has undefined
  behavior because it assumes that 'Iter tmp = it; return *tmp' will not create
  a dangling reference. However it does, and this caused this particular test
  to fail.

* path.native.obs/string_alloc.pass.cpp tested the SSO with a long string.
  On 32 bit builds std::wstring only has the SSO for strings of size 2. The
  test was using a string of size 4.

* fs.op.space/space.pass.cpp had overflows while calculating the expected values.
  The fix here is to convert the statvfs data members to std::uintmax_t before
  multiplying them. The internal implementation already does this but the tests
  needed to do it as well.

llvm-svn: 273078
2016-06-18 04:10:23 +00:00
Eric Fiselier df93bad1fe Enable building and using atomic shared_ptr for GCC.
Summary:
Currently the  implementation of [util.smartptr.shared.atomic] is provided only when using Clang, and not with GCC. This is a relic of not having a GCC implementation of <atomic>, even though <atomic> isn't actually used in the implementation. This patch enables support for atomic shared_ptr functions when using GCC.

Note that this is not a header only change. Previously only Clang builds of libc++.so would provide the required symbols. There is no reason  for this restriction.
After this change both Clang and GCC builds should be binary compatible with each other WRT these symbols.


Reviewers: mclow.lists, rmaprath, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D21407

llvm-svn: 273076
2016-06-18 02:12:53 +00:00
Eric Fiselier ccc9826f56 Add additional tests in an attempt to diagnose ARM test failures.
Currently 4 tests are failing on the ARM buildbot. To try and diagnose each
of the failures this patch does the following:

1) path.itr/iterator.pass.cpp
   * Temporarily print iteration sequence to see where its failing.

2) path.native.obs/string_alloc.pass.cpp
   * Remove test that ::new is not called when constructing a short string
     that requires a conversion. Since during the conversion global locale
     objects might be constructed.

3) fs.op.funcs/space.pass.cpp
   * Explicitly use uintmax_t in the implementation of space, hopefully
     preventing possible overflows.
   * Add additional tests that check for overflow is the calculation of the
     space_info values.
   * Add additional tests for the values returned from statfvs.

4) fs.op.funcs/last_write_time.pass.cpp
   * No changes made yet.

llvm-svn: 273075
2016-06-18 02:11:48 +00:00
Eric Fiselier ed4035059f Add checkpoints to string allocation test to help with debugging arm failures.
llvm-svn: 273072
2016-06-18 00:23:13 +00:00
Eric Fiselier 25255013ba Fix bugs in recursive_directory_iterator::increment(ec) implementation and tests.
r273060 didn't completely fix the issues in recursive_directory_iterator and
the tests. This patch follows up with more fixes

* Fix bug where recursive_directory_iterator::increment(ec) did not reset
  the error code if no failure occurred.

* Fix bad assertion in the recursive_directory_iterator::increment(ec) test
  that would only fire for certain iteration orders.

llvm-svn: 273070
2016-06-17 23:57:16 +00:00
Eric Fiselier 5b58d0dffb Work around GCC bug in tests. The bug has been fixed in GCC 6.0
llvm-svn: 273068
2016-06-17 23:30:40 +00:00
Eric Fiselier 1544e657b2 Fix initialization of test case array in C++11
llvm-svn: 273065
2016-06-17 22:36:47 +00:00
Eric Fiselier e32264a4c0 Fix bugs in recursive_directory_iterator implementation and tests.
There are two fixes in this patch:

* Fix bug where the constructor of recursive_directory_iterator did not reset
  the error code if no failure occurred.

* Fix tests were dependent on the iteration order of the test directories.

llvm-svn: 273060
2016-06-17 22:22:37 +00:00
Eric Fiselier 93e3212c7c Get filesystem tests passing for single-threaded configurations.
llvm-svn: 273054
2016-06-17 21:44:26 +00:00
Eric Fiselier 5e1787a9ea Update status of filesystem issues, and add tests for LWG issue 2683
llvm-svn: 273051
2016-06-17 21:24:11 +00:00
Eric Fiselier 6aa4c100ad Reorder permissions test so they are not dependent on the processes umask
llvm-svn: 273049
2016-06-17 21:00:27 +00:00
Eric Fiselier 34ecebcb23 Respect the processes umask in the create_directory test
llvm-svn: 273048
2016-06-17 20:54:25 +00:00
Eric Fiselier d6f2355f25 Add missing space between >> in template declaration. Fixes C++03 build.
llvm-svn: 273037
2016-06-17 20:16:46 +00:00
Eric Fiselier 7b677ee0de Fix a couple of warnings present in the filesystem tests.
llvm-svn: 273035
2016-06-17 19:57:54 +00:00
Eric Fiselier c79795874a Add Filesystem TS -- Complete
Add the completed std::experimental::filesystem implementation and tests.
The implementation supports C++11 or newer.

The TS is built as part of 'libc++experimental.a'. Users of the TS need to
manually link this library. Building and testing the TS can be disabled using
the CMake option '-DLIBCXX_ENABLE_FILESYSTEM=OFF'.

Currently 'libc++experimental.a' is not installed by default. To turn on the
installation of the library use '-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON'.

llvm-svn: 273034
2016-06-17 19:46:40 +00:00
Ed Schouten 04848f9511 Remove CloudABI specific workaround.
CloudABI has gained the mblen_l() function in the meantime that does
properly return whether the character set has shift-states (read:
never).

llvm-svn: 272886
2016-06-16 11:53:11 +00:00
Dan Albert 953d7d4475 Add an Android version check for GNU strerror_r.
Summary:
Android didn't gain GNU's strerror_r until Marshmallow. If we're
building libc++ against something older (we build the NDK library
against the oldest release we support, currently Gingerbread), fall
back to the POSIX version.

Reviewers: mclow.lists, EricWF

Subscribers: tberghammer, danalbert, srhines, cfe-commits

Differential Revision: http://reviews.llvm.org/D21402

llvm-svn: 272827
2016-06-15 20:20:32 +00:00
Eric Fiselier 1ff954f752 Fix warning in tuple tests. The test suite should now run clean with most warnings enabled
llvm-svn: 272822
2016-06-15 19:41:52 +00:00
Eric Fiselier 4e7ab67c0b Add -Wno-unused-command-line-argument when running the test suite to prevent errors
llvm-svn: 272809
2016-06-15 17:25:05 +00:00
Eric Fiselier 1c549d6ba8 Fix const default initialization of lock_guard<>
llvm-svn: 272804
2016-06-15 17:04:40 +00:00
Eric Fiselier 4fae50267a [libcxx] [test] In test/support/test_allocator.h, fix construct() to avoid moving immovable types.
Summary:
In test/support/test_allocator.h, fix construct() to avoid moving immovable types.

This improves the allocator's conformance, and fixes compiler errors with MSVC's STL. The scenario is when the allocator is asked to construct an object of type X that's immovable (deleted copy/move ctors), but implicitly constructible from an argument type A. When perfectly forwarded, X can be (explicitly) constructed from A, and everything is fine. That's std::allocator's behavior, and the Standard's default when a user allocator's construct() doesn't exist. The previous implementation of construct() here mishandled this scenario. Passing A to this construct() would implicitly construct an X temporary, bound to (non-templated) T&&. Then construct() would attempt to move-construct X from that X temporary, but X is immovable, boom.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D21094

llvm-svn: 272747
2016-06-15 01:53:32 +00:00
Eric Fiselier 0a707553a5 Improve portability of random_device tests. Patch from STL@microsoft.com
llvm-svn: 272746
2016-06-15 01:50:31 +00:00
Eric Fiselier 5d3e09ecc1 Improve portability of vector tests. Patch from STL@microsoft.com
llvm-svn: 272745
2016-06-15 01:44:22 +00:00
Eric Fiselier 78f8ce484f Improve portability of hash tests. Patch from STL@microsoft.com
llvm-svn: 272744
2016-06-15 01:42:35 +00:00
Eric Fiselier a0dd66423d Automatically detect export lists for OS X.
Summary:
Libc++ reexports symbols from the system libc++abi using -reexport_symbols_list. This can cause a linker failure if the list contains symbols not defined in the system libc++abi.
This patch attempts to detect the OS X version and use it to determine the correct symbol list. 

It's my understanding that `lib/libc++abi2.exp` should be used on 10.9 and greater. Otherwise 'lib/libc++abi.exp' should be used

This fixes PR25666 (https://llvm.org/bugs/show_bug.cgi?id=25666)

Reviewers: mclow.lists, bcraig, dexonsmith, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20772

llvm-svn: 272723
2016-06-14 21:55:14 +00:00
Eric Fiselier 1317a251c5 Fix bad test that was previously getting ifdef-ed away
llvm-svn: 272722
2016-06-14 21:50:30 +00:00
Eric Fiselier f2f2a6395f Replace __cplusplus comparisons and dialect __has_feature checks with TEST_STD_VER.
This is a huge cleanup that helps make the libc++ test suite more portable.
Patch from STL@microsoft.com. Thanks STL!

llvm-svn: 272716
2016-06-14 21:31:42 +00:00
Marshall Clow 9df8f6c472 Found a couple bugs in the test suite. No functionality change.
llvm-svn: 272679
2016-06-14 15:25:46 +00:00
Eric Fiselier 3d30c32f02 Partially Revert r272613. FreeBSD needs the non-trivial constructors in pair.
llvm-svn: 272671
2016-06-14 14:34:19 +00:00
Eric Fiselier db72c625e2 Update errcat.objects tests so they test the bug fixed in r272640.
llvm-svn: 272642
2016-06-14 06:37:36 +00:00
Eric Fiselier 61df7909ab Fix syntax error in r272640.
llvm-svn: 272641
2016-06-14 06:08:10 +00:00
Eric Fiselier 79e0574db0 Fix error checking for strerror_r implementations that return the error code.
llvm-svn: 272640
2016-06-14 06:03:20 +00:00
Eric Fiselier d046d5422a Avoid octal escape sequence warning with MSVC. Patch from STL@microsoft.com
llvm-svn: 272639
2016-06-14 05:47:46 +00:00
Eric Fiselier 9275b21947 Add missing include
llvm-svn: 272638
2016-06-14 04:58:19 +00:00
Eric Fiselier 596d408718 Temporarily XFAIL variadic lock_guard mangling test for GCC 4.9
llvm-svn: 272637
2016-06-14 04:45:26 +00:00
Eric Fiselier 48f35e074e Implement variadic lock_guard.
Summary:
This patch implements the variadic `lock_guard` paper. 

Making `lock_guard` variadic is a ABI breaking change because the specialization `lock_guard<_Mutex>` mangles differently then when it was the primary template. This change only provides variadic `lock_guard` in ABI V2 or when `_LIBCPP_ABI_VARIADIC_LOCK_GUARD` is defined.

Note that in ABI V2 `lock_guard` must always be declared as a variadic template, even in C++03, in order to keep the ABI consistent. For this reason `lock_guard` is forward declared as a variadic template in all standard dialects and therefore depends on variadic templates being provided as an extension in C++03. All supported versions of Clang and GCC provide this extension.




Reviewers: mclow.lists

Subscribers: K-ballo, mclow.lists, cfe-commits

Differential Revision: http://reviews.llvm.org/D21260

llvm-svn: 272634
2016-06-14 03:48:09 +00:00
Eric Fiselier 9778a6d811 Make system_error::message() thread safe. Fixes PR25598.
Summary:
system_error::message() uses `strerror` for the generic and system categories. This function is not thread safe.

The fix is to use `strerror_r`. It has been available since 2001 for GNU libc and since BSD 4.4 on FreeBSD/OS X.
On platforms with GNU libc the extended version is used which always returns a valid string, even if an error occurs.

In single-threaded builds `strerror` is still used.

See https://llvm.org/bugs/show_bug.cgi?id=25598

Reviewers: majnemer, mclow.lists

Subscribers: erik65536, cfe-commits, emaste

Differential Revision: http://reviews.llvm.org/D20903

llvm-svn: 272633
2016-06-14 03:45:31 +00:00
Eric Fiselier 10e3d1764a Ignore depricated warnings from <ext/hash_map> and <ext/hash_set>
llvm-svn: 272632
2016-06-14 03:26:11 +00:00
Eric Fiselier 3245e1f34b Fix warnings in tests.
llvm-svn: 272629
2016-06-14 03:21:49 +00:00
Eric Fiselier 84685fc831 Remove unused local var. Patch from STL@microsoft.com
llvm-svn: 272622
2016-06-14 02:55:21 +00:00
Eric Fiselier b03da3b65e Prevent truncation warning. Patch from STL@microsoft.com
llvm-svn: 272621
2016-06-14 02:54:15 +00:00
Eric Fiselier f81cfbab12 Fix vector<bool> tests that were using ints. Patch from STL@microsoft.com
llvm-svn: 272620
2016-06-14 02:53:04 +00:00
Eric Fiselier f4755f5b15 Rename variables to prevent shadowing. Patch from STL@microsoft.com
llvm-svn: 272619
2016-06-14 02:51:13 +00:00
Eric Fiselier b2cdce480a Avoid name shadowing in test. Patch from STL@microsoft.com
llvm-svn: 272618
2016-06-14 02:47:46 +00:00
Eric Fiselier 06d14341c5 Silence more unused variable warnings. Patch from STL@microsoft.com
llvm-svn: 272617
2016-06-14 02:46:39 +00:00
Eric Fiselier fbe79c9d25 Remove _LIBCPP_TRIVIAL_PAIR_COPY_CTOR option.
llvm-svn: 272613
2016-06-14 01:36:15 +00:00
Dan Albert ff2addf703 Add `REQUIRES: c++experimental` where appropriate.
Summary:
I haven't added it to all the tests, just those that fail without it
(those that aren't header only).

Reviewers: EricWF, mclow.lists

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D21247

llvm-svn: 272443
2016-06-10 22:45:11 +00:00
Evandro Menezes 72d6a934cc [streambuf] Added call to traits_type::copy to common case in xsgetn()
Patch by Laman Sole <laxman.g@partner.samsung.com>, Sebastian Pop
<s.pop@samsung.com>, Aditya Kumar <aditya.k7@samsung.com>

Differential Revision: http://reviews.llvm.org/D21103

llvm-svn: 272401
2016-06-10 16:00:29 +00:00
Marshall Clow 54238fd381 Make the comparison objects that we pass in for various tests look more like actual comparison objects. No functional change.
llvm-svn: 272288
2016-06-09 18:34:38 +00:00
Marshall Clow cbfb1487e1 Two more issues w/patches
llvm-svn: 272263
2016-06-09 14:50:38 +00:00
Marshall Clow 79e7c2c9b4 Add notes for 2688
llvm-svn: 272216
2016-06-08 22:33:25 +00:00
Chris Bieneman 687f4df95e [CMake] Cleanup uses of USES_TERMINAL
Now that we are on CMake 3.4.3 we no longer need a version check around this.

This is the libcxx side of r272211.

llvm-svn: 272212
2016-06-08 22:20:28 +00:00
Marshall Clow 96c63abad8 Mark 2441 as ready
llvm-svn: 272202
2016-06-08 21:25:38 +00:00
Marshall Clow 1fe50f3be5 Patch ready for #2436
llvm-svn: 272150
2016-06-08 14:54:35 +00:00
Marshall Clow a11d578b4b Added notes for a bunch of the issues
llvm-svn: 272050
2016-06-07 20:05:57 +00:00
Marshall Clow 13bfcb0b03 Added notes about the issues for Oulu
llvm-svn: 272029
2016-06-07 17:54:38 +00:00
Marshall Clow 6a23af0f33 Avoid Shadowing warnings in the associative containers tests. Thanks to STL for the patch.
llvm-svn: 272018
2016-06-07 15:49:39 +00:00
Marshall Clow 217cf69b92 Rename some test data (and make it const) to rid us of some shadowing warnings in the test suite. No functional change. Thanks to STL@microsoft for the report and patch.
llvm-svn: 271919
2016-06-06 18:24:08 +00:00
Marshall Clow 3a407a096c Remove arithmetic +/-127 on chars; results in UB when dealing with signed chars. Thanks to STL@microsoft for the report.
llvm-svn: 271897
2016-06-06 14:35:22 +00:00
Marshall Clow e499d086aa Don't call memmove when there's nothing to move. Fixes PR#27978.
llvm-svn: 271794
2016-06-04 16:16:59 +00:00
Asiri Rathnayake 981986cdfc [libcxx] Fix c++98 test failures.
Adds XFAIL/UNSUPPORTED lit tags as appropriate. Gets a clean test run
for -std=c++98 on Fedora 20.

NFC.

llvm-svn: 271741
2016-06-03 21:40:03 +00:00
Asiri Rathnayake 1f077f6b2b [libcxx] Fix thread join.pass.cpp segfault after r271475
Some pthread implementations do not like being called pthead_join()
with the pthread_t argument set to 0, and causes a segfault. This
patch fixes this issue by validating the pthread_t argument before
invoking pthread_join().

NFC.

Differential revision: http://reviews.llvm.org/D20929

Change-Id: Ief817c57bd0e1f43cbaa03061e02417d6a180c38
Reviewers: EricWF
llvm-svn: 271634
2016-06-03 08:45:26 +00:00
Eric Fiselier 881334e76b Add not_fn test for throwing operator!
llvm-svn: 271502
2016-06-02 08:37:00 +00:00
Eric Fiselier eb066bc29d Fix TEST_HAS_NO_EXCEPTIONS misspelling in the test suite.
llvm-svn: 271501
2016-06-02 08:19:02 +00:00
Eric Fiselier 58ff77c2e0 Mark LWG issue 2545 as complete. Add extra tests
llvm-svn: 271489
2016-06-02 05:44:14 +00:00
Eric Fiselier 7cf29e3468 Fix leak in __enable_weak_this(). Thanks to Arthur O'Dwyer for finding it.
llvm-svn: 271487
2016-06-02 04:57:00 +00:00
Eric Fiselier 9b903af3e9 Mark LWG issue 2218 as complete.
LWG issue 2218 relaxes a restriction on how containers can call
Alloc::construct(...) and Alloc::destroy(...). There is nothing new to test.

llvm-svn: 271477
2016-06-02 04:13:41 +00:00
Eric Fiselier 91ae4a078b Mark LWG issue 2336 as complete. There is nothing to do.
llvm-svn: 271476
2016-06-02 04:08:03 +00:00
Eric Fiselier 4efa1ad561 Mark LWG issue 2250 as complete
llvm-svn: 271475
2016-06-02 04:03:31 +00:00
Eric Fiselier d697ee41bc Mark LWG issue 2450 as complete.
llvm-svn: 271473
2016-06-02 03:12:44 +00:00
Eric Fiselier e44604aec7 Update libcxx.llvm.org documentation by linking to new docs.
Summary:
Currently much of the libcxx website is duplicated between the old www/ documentation and newer Sphinx docs. This patch changes the main libc++ webpage so that it links to the new documentation where possible. This means removing numerous sections from the landing page.

@mclow.lists What do you think?

Reviewers: mclow.lists

Subscribers: cfe-commits, mclow.lists

Differential Revision: http://reviews.llvm.org/D19250

llvm-svn: 271469
2016-06-02 02:16:28 +00:00
Eric Fiselier 5725756791 Add C++17 std::not_fn negator.
Summary:
Exactly what it sounds like.

I plan to commit this in a couple of days assuming no objections.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20799

llvm-svn: 271464
2016-06-02 01:25:41 +00:00
Eric Fiselier a4f2460fa5 [libcxx] Allow target flags to affect CMake configuration tests
Summary:
This patch changes the libc++ CMake so that it adds certain target flags like '-m32' or '--gcc-toolchain' before including config-ix.cmake.
Since these flags can affect things like check_library_exists([...]) they needed to be added before the tests are performed.

This patch fixes:

https://llvm.org/bugs/show_bug.cgi?id=24322

Reviewers: danalbert, jroelofs, bcraig, compnerd

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20887

llvm-svn: 271460
2016-06-02 01:10:08 +00:00
Eric Fiselier 39a724ea36 Remove enable_shared_from_this test since it leaks the control block and fails with ASAN
llvm-svn: 271459
2016-06-02 01:09:12 +00:00
Eric Fiselier 88f5bfdc5b Implement P0033R1 - Re-enabling shared_from_this
Summary: See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html

Reviewers: mclow.lists

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D19254

llvm-svn: 271449
2016-06-02 00:15:35 +00:00
Eric Fiselier d04c685168 Remove trailing whitespace in test suite. Approved by Marshall Clow.
llvm-svn: 271435
2016-06-01 21:35:39 +00:00
Eric Fiselier eb5cfb02d6 Cleanup non-standard tests as reported by STL@microsoft.com. NFC.
This patch addresses the following issues in the test suite:

1. Move "std::bad_array_length" test from std/ to libcxx/ test directory
   since the feature is not a part of the standard.

2. Rename "futures.tas" test directory to "futures.task" since that is the
   correct stable name.

3. Move tests for "packaged_task<T>::result_type" from std/ to libcxx/
   test directory since the typedef is a libc++ extension.

llvm-svn: 271430
2016-06-01 21:05:53 +00:00
Chris Bieneman 752cd33136 [CMake] Update to requiring CMake 3.4.3
Summary:
This is as per the discussions on developer lists:

http://lists.llvm.org/pipermail/llvm-dev/2016-April/098780.html
http://lists.llvm.org/pipermail/llvm-dev/2016-May/100058.html

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20828

llvm-svn: 271329
2016-05-31 20:21:52 +00:00
Marshall Clow 30bffb9dcf Issues for Oulu
llvm-svn: 271282
2016-05-31 14:29:38 +00:00
Eric Fiselier 7939ae5e08 Mark LWG issue 2520 as complete
llvm-svn: 271249
2016-05-31 04:27:57 +00:00
Eric Fiselier b56f446e2d Add tests that got missed in r271247.
llvm-svn: 271248
2016-05-31 01:51:34 +00:00
Eric Fiselier 5362bbb02a Mark LWG issue 2276 as complete. Add _LIBCPP_ASSERTS for it
llvm-svn: 271247
2016-05-31 01:50:55 +00:00
Eric Fiselier 3bdbb10a48 Mark LWG issue 2537 as complete
llvm-svn: 271241
2016-05-31 01:11:20 +00:00
Eric Fiselier 0ddc14c256 Mark LWG issue #2585 as complete
llvm-svn: 271240
2016-05-31 01:03:07 +00:00
Eric Fiselier 4c46801fa7 Mark LWG issue 2565 as complete. Update the tests to check it.
llvm-svn: 271238
2016-05-31 00:23:31 +00:00
Eric Fiselier af4a5a7f33 Make string_view work with -fno-exceptions and get tests passing.
llvm-svn: 271237
2016-05-30 23:53:19 +00:00
Eric Fiselier 424b5ee8f7 Cleanup error handling when TLS creation fails
llvm-svn: 271235
2016-05-30 23:15:19 +00:00
Eric Fiselier 928431af53 Mark LWG issue #2522 as complete
llvm-svn: 271231
2016-05-30 21:30:46 +00:00
Eric Fiselier 9ef549212c Fix bug in test allocator that incorrectly computed the allocation size
llvm-svn: 271195
2016-05-30 01:31:04 +00:00