aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Serialization/Module.cpp
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2014-10-23 04:12:28 +0000
committerEric Fiselier <eric@efcs.ca>2014-10-23 04:12:28 +0000
commit319be7222003a55cbb373ebcc0601bb84c869f82 (patch)
treeaa6fe1a0effe23a927d10da34baf4a4c1d7c6c7b /clang/lib/Serialization/Module.cpp
parentc1892e2d48e4dcc34c55e64b494ddbe723644c68 (diff)
downloadllvm-319be7222003a55cbb373ebcc0601bb84c869f82.zip
llvm-319be7222003a55cbb373ebcc0601bb84c869f82.tar.gz
llvm-319be7222003a55cbb373ebcc0601bb84c869f82.tar.bz2
Add support for "fancy" pointers to shared_ptr. Fixes PR20616
Summary: This patch add support for "fancy pointers/allocators" as well as fixing support for shared_pointer and "minimal" allocators. Fancy pointers are class types that meet the NullablePointer requirements. In our case they are created by fancy allocators. `support/min_allocator.h` is an archetype for these types. There are three types of changes made in this patch: 1. `_Alloc::template rebind<T>::other` -> `__allocator_traits_rebind<_Alloc, T>::type`. This change was made because allocators don't need a rebind template. `__allocator_traits_rebind` is used instead of `allocator_traits::rebind` because use of `allocator_traits::rebind` requires a workaround for when template aliases are unavailable. 2. `a.deallocate(this, 1)` -> `a.deallocate(pointer_traits<self>::pointer_to(*this), 1)`. This change change is made because fancy pointers aren't always constructible from raw pointers. 3. `p.get()` -> `addressof(*p.get())`. Fancy pointers aren't actually a pointer. When we need a "real" pointer we take the address of dereferencing the fancy pointer. This should give us the actual raw pointer. Test Plan: Tests were added using `support/min_allocator.h` to each affected shared_ptr overload and creation function. These tests can only be executed in C++11 or greater since min_allocator is only available then. A extra test was added for the non-variadic versions of allocate_shared. Reviewers: danalbert, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4859 llvm-svn: 220469
Diffstat (limited to 'clang/lib/Serialization/Module.cpp')
0 files changed, 0 insertions, 0 deletions