Commit Graph

1684 Commits

Author SHA1 Message Date
Eric Fiselier
4db388b579 Change allocator<T>::allocate to throw length_error, not bad_alloc
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268842 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 03:12:24 +00:00
Eric Fiselier
dba23b499b Add experimental container alias templates for PMRs
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268841 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 03:09:55 +00:00
Eric Fiselier
257fd699fd Add <experimental/memory_resource>
Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268829 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-07 01:04:55 +00:00
Eric Fiselier
8a7462d163 Removing some trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268543 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-04 20:29:19 +00:00
Eric Fiselier
6aec0206da Fix PR27538. Remove __is_convertible specializations for array and function types.
This patch fixes a bunch of bugs in the fallback implementation of
is_convertible, which is used by GCC. Removing the "__is_convertible"
specializations for array/function types we fallback on the SFINAE test,
which is more correct.

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


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268359 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 04:26:02 +00:00
Eric Fiselier
219406e77f [libcxx] [test] Replace non-Standard "atomic_flag f(false);" with Standard "atomic_flag f;"
Summary:
Replace non-Standard "atomic_flag f(false);" with Standard "atomic_flag f;" in clear tests.
Although the  value of 'f' is unspecified it shouldn't matter because these tests always call `f.test_and_set()` without checking the result, so the initial state shouldn't matter.

The test init03.pass.cpp is explicitly testing this non-Standard extension; It has been moved into the `test/libcxx` directory.

Reviewers: mclow.lists, STL_MSFT

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268355 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 02:12:26 +00:00
Eric Fiselier
3ed38a96f8 Guard use of <unistd.h> in test.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268346 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 00:36:57 +00:00
Eric Fiselier
feb3898d4a Cleanup warnings and remove use of __builtin_va_list in depr.c.headers
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268294 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 20:08:16 +00:00
Eric Fiselier
46c05119b5 Initialize local doubles to NaN. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268285 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:20:16 +00:00
Eric Fiselier
a9ea11398d Void cast runtime-unused variables. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268284 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-02 19:15:48 +00:00
Eric Fiselier
61a220ae5b Replace one more occurrence of non-standard std:launch::any. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268153 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-30 02:30:18 +00:00
Eric Fiselier
59af3f895f Fix PR21428 for long. Buffer was one byte too small in octal formatting case. Rename previously added test
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@268009 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 07:23:20 +00:00
Eric Fiselier
bc8538fde6 Move extern C include test into test/libcxx
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267983 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 04:19:48 +00:00
Eric Fiselier
a7a9004024 Fix test failures by adding missing include
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267982 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 04:18:13 +00:00
Eric Fiselier
1e5a4a4a71 Fix or move various non-standard tests.
This patch does the following:

* Remove <__config> includes from some container tests.
* Guards uses of std::launch::any in async tests because it's an extension.
* Move "test/std/extensions" to "test/libcxx/extensions"
* Moves various non-standard tests including those in "sequences/vector",
  "std/localization" and "utilities/meta".


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267981 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 04:07:45 +00:00
Eric Fiselier
96becae308 Move INVOKE tests into test/libcxx sub-tree.
Testing the concrete implementation of INVOKE means calling the implementation
specific names `__invoke` and `__invoke_constexpr`. For this reason the test
are non-standard. For this reason it's best if the tests live outside of the
`test/std` directory.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267973 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 01:52:57 +00:00
Eric Fiselier
138574cae9 Remove more names of unreferenced parameters. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267962 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 00:47:16 +00:00
Eric Fiselier
2d1a7f1400 Add <string> include for streaming operators. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267959 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 00:39:40 +00:00
Eric Fiselier
6531a09dc7 Add proper include for unique_ptr. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267958 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 00:37:56 +00:00
Eric Fiselier
375e2f669c Guard libc++ specific c.__invariants() tests in LIBCPP_ASSERT macros
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267947 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 22:28:23 +00:00
Eric Fiselier
bda804ea25 Remove names of unreferenced parameters. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267852 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 03:17:56 +00:00
Eric Fiselier
849c551745 Add braces, move braces, and rename variables to avoid shadowing. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267844 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 02:45:11 +00:00
Eric Fiselier
ce24f965f1 Provide member function definitions to avoid warnings. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267843 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 02:18:48 +00:00
Eric Fiselier
a32eb83b2f Rename function parameters to avoid shadowing. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267838 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 02:00:52 +00:00
Eric Fiselier
4596c29195 Guard Clang and GCC specific pragmas. Patch from STL@microsoft.com
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267836 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 01:49:03 +00:00
Marshall Clow
d446308c9c Fix = that should have been == in test. Thanks to STL@microsoft for the catch
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267654 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-27 01:46:43 +00:00
Marshall Clow
85d5622129 Apparently XFAIL tests that are supposed to fail to compile can be problematic. They still get compiled, and if the compile succeeds, the buildbots complain. Replace the XFAIL with #error.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267591 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-26 19:29:35 +00:00
Marshall Clow
6dfff1c9b9 #include <test_macros.h> in all the regex tests, and remove all mentions of __cpluplus (use TEST_STD_VERS and/or XFAIL instead). No functional change
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267567 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-26 16:24:44 +00:00
Marshall Clow
d7f1f971d1 Rename a few tests that had typos in their names. No functional change. Thanks to STL for the catch
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267287 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-23 14:31:00 +00:00
Eric Fiselier
5ccbc48774 Fix some non-standard parts of our test suite. Reported by STL
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267131 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-22 10:33:56 +00:00
Marshall Clow
59f2aea750 Add missing include of <algorithm>
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267119 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-22 07:39:05 +00:00
Eric Fiselier
df46b78ce7 Fix LWG issue #2106: move_iterators returning prvalues
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267091 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-22 00:49:12 +00:00
Eric Fiselier
6f367f088c Fix C++03 build breakage
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267090 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-22 00:47:15 +00:00
Eric Fiselier
c6c26a44de Complete LWG issue #2016. Allocators must be nothrow swappable
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267085 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-22 00:15:18 +00:00
Eric Fiselier
8f1e73dfd2 Add is_swappable/is_nothrow_swappable traits
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@267079 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-21 23:38:59 +00:00
Eric Fiselier
e94c1aee2b [libcxx] Fix PR15638 - Only allocate in parent when starting a thread to prevent calling terminate.
Summary:
Hi,

When creating a new thread libc++ performs at least 2 allocations. The first allocates a tuple of args and the functor that will be passed to the new thread. The second allocation is for the thread local storage needed internally by libc++. Currently the second allocation happens in the child thread, meaning that if it throws the program will terminate with an uncaught bad alloc.

The solution to this is to allocate ALL memory in the parent thread and then pass it to the child.

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

Reviewers: mclow.lists, danalbert, jroelofs, EricWF

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266851 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-20 02:21:33 +00:00
Eric Fiselier
8d5cbd7ce2 Add 'is_callable' and 'is_nothrow_callable' traits and cleanup INVOKE.
The primary purpose of this patch is to add the 'is_callable' traits.
Since 'is_nothrow_callable' required making 'INVOKE' conditionally noexcept
I also took this oppertunity to implement a constexpr version of INVOKE.
This fixes 'std::experimental::apply' which required constexpr 'INVOKE support'.

This patch will be followed up with some cleanup. Primarly removing most
of "__member_function_traits" since it's no longer used by INVOKE (in C++11 at least).


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266836 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-20 00:14:32 +00:00
Ben Craig
9c6f00d616 XFAILing new test on C++03
initializer_list doesn't exist in C++03.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266820 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-19 21:07:30 +00:00
Ben Craig
d59d416bc9 Include initializer_list from utility
The C++11 and C++14 standards both say in the header <utility> synopsis that
<utility> shall include <initializer_list>.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266808 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-19 20:13:55 +00:00
Eric Fiselier
95526d31cb Make tuples constructors conditionally EXPLICIT. See N4387
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266703 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-19 01:19:25 +00:00
Eric Fiselier
134ff65b8f Implement LWG issue 2219 - support reference_wrapper in INVOKE
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266590 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-18 06:17:30 +00:00
Eric Fiselier
b952822a48 Add hash specializations for __int128_t. Fixes LWG issue 2119
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266587 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-18 02:54:00 +00:00
Eric Fiselier
c325f3dccf Add tests for LWG issue 2361
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266586 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-18 02:31:05 +00:00
Eric Fiselier
91a156579e Fix LWG issue 2345 - Add insert(value_type&&)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266585 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-18 01:40:45 +00:00
Eric Fiselier
dc414cd8ca Teach map/unordered_map how to optimize 'emplace(Key, T)'.
In cases where emplace is called with two arguments and the first one
matches the key_type we can Key to check for duplicates before allocating.

This patch expands on work done by dexonsmith@apple.com.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266498 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-16 00:23:12 +00:00
Eric Fiselier
83c9dc1714 Extract key to avoid preemptive mallocs in insert/emplace in associative containers
Summary: This patch applies Duncan's work on __hash_table to __tree.

Reviewers: mclow.lists, dexonsmith

Subscribers: dexonsmith, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266491 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 23:27:27 +00:00
Eric Fiselier
d5019333fa Cleanup and guard tuple's constructor SFINAE. Fixes PR22806 and PR23256.
There are two main fixes in this patch.

First the constructor SFINAE was changed so that it's evaluated in two stages
where the first stage evaluates the "safe" SFINAE conditions and the second
evaluates the "dangerous" ones. The key is that the second stage is lazily
evaluated only if the first stage passes. This helps fix PR23256
(https://llvm.org/bugs/show_bug.cgi?id=23256).

The second fix is for PR22806 and LWG issue 2549. This fix applies
the suggested resolution to the LWG issue in order to prevent the construction
of dangling references. The SFINAE for this check is contained within
the _PreferTupleLikeConstructor alias template. The tuple-like constructors
are disabled whenever that trait returns false.

(https://llvm.org/bugs/show_bug.cgi?id=22806)
(http://cplusplus.github.io/LWG/lwg-active.html#2549)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266461 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 18:05:59 +00:00
Eric Fiselier
55ad3ac786 [libcxx] Remove the "reduced-arity-initialization" extension from the uses-allocator constructors
Summary:
A default uses-allocator constructor has been added since that overload was previously provided by the extended constructor.

Since Clang does implicit conversion checking after substitution this constructor has to deduce the allocator_arg_t parameter so that it can prevent the evaluation of "is_default_constructible" if the first argument doesn't match. See http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1391 for more information.

This patch fixes PR24779 (https://llvm.org/bugs/show_bug.cgi?id=24779)

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266409 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 03:29:40 +00:00
Marshall Clow
dca800cd0f Implement LWG#680, which was missed lo these many moons ago, and was reported as bug #27259. As a drive-by fix, replace the hand-rolled equivalent to addressof in __wrap_iter with the real thing.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@265914 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-11 03:54:53 +00:00
Marshall Clow
f4f7d8fc96 Recommit r263036 with additional inlining, so that it will continue to work with existing system dylibs. Implements LWG#2583
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@265706 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-07 18:13:41 +00:00