Marshall Clow
a2586b395b
Add missing include that caused a test failure on Windows. Thanks to STL for the patch. No functional change.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279453 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-22 18:45:31 +00:00
Marshall Clow
546498cb48
make the associative containers do the right thing for propogate_on_container_assignment. Fixes bug #29001 . Tests are only for <map> right now - more complete tests will come when we revamp our allocator testing structure.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279008 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-17 23:24:02 +00:00
Marshall Clow
d4badbbc5a
Support allocators with explicit conversion constructors. Fixes bug #29000
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@278904 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-17 05:58:40 +00:00
Eric Fiselier
2d9e2e2bc8
Fix compile error due to mismatched iterator types. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@277574 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-03 05:50:03 +00:00
Eric Fiselier
775417d97c
Make dtor_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276595 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-25 00:50:32 +00:00
Eric Fiselier
0809a7f62b
Mark bucket_count() assertions as non-portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276593 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-25 00:26:41 +00:00
Eric Fiselier
03388d19d6
Make move_assign_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276591 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-25 00:18:12 +00:00
Eric Fiselier
f4a698aa30
Make swap_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com.
...
See D21820 for more information (https://reviews.llvm.org/D21820 ).
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276590 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-25 00:15:29 +00:00
Eric Fiselier
3a974c6835
Fix a non-standard allocator in vector tests. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276588 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-24 23:49:42 +00:00
Eric Fiselier
5eec7d6e30
Mark bucket() assertions as non-portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276584 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-24 23:34:18 +00:00
Eric Fiselier
a29e0e5ba2
Make move_noexcept.pass.cpp tests more portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276581 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-24 23:19:51 +00:00
Eric Fiselier
7ee04dd6f2
Make bucket_count() greater-equal assertions portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276580 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-24 23:16:37 +00:00
Eric Fiselier
a3db71902a
Mark bucket_size() assertions as non-portible. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276578 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-24 23:13:36 +00:00
Eric Fiselier
3816ef98b1
Implement P0084r2. Changing emplace return types.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276230 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-21 03:20:17 +00:00
Eric Fiselier
7310ec83f3
Fix undefined behavior in __tree
...
Summary:
This patch attempts to fix the undefined behavior in __tree by changing the node pointer types used throughout. The pointer types are changed for raw pointers in the current ABI and for fancy pointers in ABI V2 (since the fancy pointer types may not be ABI compatible).
The UB in `__tree` arises because tree downcasts the embedded end node and then deferences that pointer. Currently there are 3 node types in __tree.
* `__tree_end_node` which contains the `__left_` pointer. This node is embedded within the container.
* `__tree_node_base` which contains `__right_`, `__parent_` and `__is_black`. This node is used throughout the tree rebalancing algorithms.
* `__tree_node` which contains `__value_`.
Currently `__tree` stores the start of the tree, `__begin_node_`, as a pointer to a `__tree_node`. Additionally the iterators store their position as a pointer to a `__tree_node`. In both of these cases the pointee can be the end node. This is fixed by changing them to store `__tree_end_node` pointers instead.
To make this change I introduced an `__iter_pointer` typedef which is defined to be a pointer to either `__tree_end_node` in the new ABI or `__tree_node` in the current one.
Both `__tree::__begin_node_` and iterator pointers are now stored as `__iter_pointers`.
The other situation where `__tree_end_node` is stored as the wrong type is in `__tree_node_base::__parent_`. Currently `__left_`, `__right_`, and `__parent_` are all `__tree_node_base` pointers. Since the end node will only be stored in `__parent_` the fix is to change `__parent_` to be a pointer to `__tree_end_node`.
To make this change I introduced a `__parent_pointer` typedef which is defined to be a pointer to either `__tree_end_node` in the new ABI or `__tree_node_base` in the current one.
Note that in the new ABI `__iter_pointer` and `__parent_pointer` are the same type (but not in the old one). The confusion between these two types is unfortunate but it was the best solution I could come up with that maintains the ABI.
The typedef changes force a ton of explicit type casts to correct pointer types and to make current code compatible with both the old and new pointer typedefs. This is the bulk of the change and it's really messy. Unfortunately I don't know how to avoid it.
Please let me know what you think.
Reviewers: howard.hinnant, mclow.lists
Subscribers: howard.hinnant, bbannier, cfe-commits
Differential Revision: https://reviews.llvm.org/D20786
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276003 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-19 17:56:20 +00:00
Eric Fiselier
9ae7274ea5
Add includes in test. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@275751 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-18 02:05:31 +00:00
Marshall Clow
51d7e8e381
Always use the allocator to construct/destruct elements of a deque/vector. Fixes PR#28412. Thanks to Jonathan Wakely for the report.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@275105 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11 21:38:08 +00:00
Marshall Clow
1a93312404
Fix static assert problem on gcc; remove XFAILs that I put in in r274250
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274285 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 22:05:45 +00:00
Eric Fiselier
3efb2c901e
Fix C++03 build.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274274 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 20:46:58 +00:00
Marshall Clow
a0f496b989
Temporarily XFAIL the incomplete type tests for GCC while I figure out why adding a static_assert in r274235 broken them
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274250 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 17:49:36 +00:00
Marshall Clow
256814f751
Implement LWG#2684: 'priority_queue lacking comparator typedef'. We already did this, just added tests
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274243 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 16:03:50 +00:00
Marshall Clow
f0419f1dcc
Implement LWG#2596: 'vector::data() should use addressof'
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274241 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 15:50:55 +00:00
Marshall Clow
0c99f18af4
Implement LWG#2436: 'Comparators for associative containers should always be CopyConstructible'
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274235 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 15:11:53 +00:00
Eric Fiselier
0fc5603d78
Make std::array typedef tests more portable.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274210 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 04:54:00 +00:00
Eric Fiselier
16715b9a88
Fix unary_function inheritance assumption. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274205 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 04:28:12 +00:00
Eric Fiselier
5078baa9e0
Make default_noexcept.pass.cpp container tests more portable. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273823 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-26 20:21:22 +00:00
Eric Fiselier
8d2b31567c
Finish converting list _LIBCPP_DEBUG tests.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273394 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 08:47:43 +00:00
Eric Fiselier
111c696838
Cleanup _LIBCPP_DEBUG tests in std::list. More to come.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273393 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 08:01:27 +00:00
Eric Fiselier
506f9d5bd3
Cleanup [list.modifiers] tests.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273371 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 03:46:32 +00:00
Eric Fiselier
22bff1afcc
Move remaining _LIBCPP_VERSION tests into test/libcxx
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273367 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 02:23:22 +00:00
Eric Fiselier
c02ca7f4b0
Improve portability of vector tests. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272745 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-15 01:44:22 +00:00
Eric Fiselier
d24c465bea
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!
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272716 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 21:31:42 +00:00
Marshall Clow
174432dbd5
Found a couple bugs in the test suite. No functionality change.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272679 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 15:25:46 +00:00
Eric Fiselier
831bfc277c
Fix vector<bool> tests that were using ints. Patch from STL@microsoft.com
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272620 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 02:53:04 +00:00
Marshall Clow
4241df3ef4
Make the comparison objects that we pass in for various tests look more like actual comparison objects. No functional change.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272288 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-09 18:34:38 +00:00
Marshall Clow
467eaf8269
Avoid Shadowing warnings in the associative containers tests. Thanks to STL for the patch.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@272018 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-07 15:49:39 +00:00
Asiri Rathnayake
1575e3e813
[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.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271741 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 21:40:03 +00:00
Eric Fiselier
84acb1ec3f
Remove trailing whitespace in test suite. Approved by Marshall Clow.
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271435 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-01 21:35:39 +00:00
Eric Fiselier
7883d02159
Mark LWG issue 2537 as complete
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271241 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 01:11:20 +00:00
Eric Fiselier
7d1c44c360
Mark LWG issue #2585 as complete
...
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271240 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 01:03:07 +00:00
Asiri Rathnayake
a3eac518e6
[libcxx] Improve tests to use the UNSUPPORTED lit directive
...
Quite a few libcxx tests seem to follow the format:
#if _LIBCPP_STD_VER > X
// Do test.
#else
// Empty test.
#endif
We should instead use the UNSUPPORTED lit directive to exclude the test on
earlier C++ standards. This gives us a more accurate number of test passes
for those standards and avoids unnecessary conflicts with other lit
directives on the same tests.
Reviewers: bcraig, ericwf, mclow.lists
Differential revision: http://reviews.llvm.org/D20730
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@271108 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-28 08:57:35 +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
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
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
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
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