| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 274206
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 273837
|
|
|
|
| |
llvm-svn: 273836
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 273379
|
|
|
|
| |
llvm-svn: 273368
|
|
|
|
| |
llvm-svn: 273367
|
|
|
|
| |
llvm-svn: 273362
|
|
|
|
| |
llvm-svn: 273357
|
|
|
|
| |
llvm-svn: 273354
|
|
|
|
| |
llvm-svn: 273353
|
|
|
|
| |
llvm-svn: 273348
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 273345
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
warnings enabled
llvm-svn: 272822
|
|
|
|
| |
llvm-svn: 272744
|
|
|
|
| |
llvm-svn: 272722
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 272629
|
|
|
|
| |
llvm-svn: 272621
|
|
|
|
| |
llvm-svn: 272613
|
|
|
|
|
|
|
|
|
| |
Adds XFAIL/UNSUPPORTED lit tags as appropriate. Gets a clean test run
for -std=c++98 on Fedora 20.
NFC.
llvm-svn: 271741
|
|
|
|
| |
llvm-svn: 271502
|
|
|
|
| |
llvm-svn: 271489
|
|
|
|
| |
llvm-svn: 271487
|
|
|
|
| |
llvm-svn: 271475
|
|
|
|
| |
llvm-svn: 271473
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
fails with ASAN
llvm-svn: 271459
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 271435
|
|
|
|
| |
llvm-svn: 271249
|
|
|
|
| |
llvm-svn: 271238
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 271108
|
|
|
|
| |
llvm-svn: 271065
|
|
|
|
| |
llvm-svn: 269665
|
|
|
|
| |
llvm-svn: 269298
|
|
|
|
| |
llvm-svn: 268842
|
|
|
|
| |
llvm-svn: 268543
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 268359
|
|
|
|
| |
llvm-svn: 268284
|
|
|
|
|
|
|
|
|
|
|
|
| |
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".
llvm-svn: 267981
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 267973
|
|
|
|
| |
llvm-svn: 267958
|
|
|
|
| |
llvm-svn: 267947
|
|
|
|
| |
llvm-svn: 267852
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 267844
|