Commit Graph

15 Commits

Author SHA1 Message Date
Stephan T. Lavavej
a9bcd3dae8 [libcxx] [test] D27013: Fix MSVC warning C4018 "signed/unsigned mismatch", part 1/12.
Change loop indices from int to std::size_t.

Also, include <cstddef> when it wasn't already being included.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@287820 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-23 22:01:19 +00:00
Eric Fiselier
124ed406e5 [libc++] Fix stack_allocator
Summary:
To quote STL the problems with stack allocator are"

>"stack_allocator<T, N> is seriously nonconformant to N4582 17.6.3.5 [allocator.requirements].
> First, it lacks a rebinding constructor. (The nested "struct rebind" isn't sufficient.)
> Second, it lacks templated equality/inequality.
> Third, it completely ignores alignment.
> Finally, and most severely, the Standard forbids its existence. Allocators are forbidden from returning memory "inside themselves". This requirement is implied by the Standard's requirements for rebinding and equality. It's permitted to return memory from a separate buffer object on the stack, though."

This patch attempts to address all of those issues.

First, instead of storing the buffer inside the allocator I've change `stack_allocator` to accept the buffer as an argument.

Second, in order to fix rebinding I changed the parameter list from `<class T, size_t NumElements>` to `<class T, size_t NumBytes>`. This allows allocator rebinding
between types that have different sizes. 

Third, I added copy and rebinding constructors and assignment operators.

And finally I fixed the allocation logic to always return properly aligned storage.



Reviewers: mclow.lists, howard.hinnant, STL_MSFT

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25154

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283631 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-08 00:56:22 +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
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
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
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
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
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
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
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
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
Marshall Clow
fd2d680753 Add failing tests that I forgot to add to the last commit
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@263451 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-14 17:58:54 +00:00
Marshall Clow
ed77ffbc4d Implement LWG#2566: Requirements on the first template parameter of container adaptors
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@263450 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-14 17:58:11 +00:00
Marshall Clow
df00d5e5ad We had two identical files named 'MoveOnly.h' in the test suite. Move one to support/, remove the other, and update all the tests that included them. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@227370 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-28 21:22:53 +00:00
Eric Fiselier
a90c6dd460 Move test into test/std subdirectory.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224658 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-20 01:40:03 +00:00