| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LWG 3013 points out that the constructors and increment members
of the directory iterators need to allocate, and therefore cannot
be marked noexcept.
It also points out that `is_empty` and `copy` likely need to allocate
as well, and as such can also not be noexcept.
This patch speculatively implements the resolution removing noexcept,
because libc++ does indeed have the possibility of throwing on allocation
failure.
llvm-svn: 316941
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
incorrectly.
The guts of the increment method for recursive_directory_iterator
was failing to pass an error code object to calls to status/symlink_status,
which can throw under certain conditions.
This patch fixes the issues by correctly propagating the error codes.
However the noexcept still needs to be removed from the signature, as
mentioned in LWG 3014, but that change will be made in a separate commit.
llvm-svn: 316939
|
|
|
|
| |
llvm-svn: 316917
|
|
|
|
|
|
| |
Yaroshevskiy for both the bug report and the fix.
llvm-svn: 316914
|
|
|
|
|
|
| |
Update the tests to check this (and other noexcept bits
llvm-svn: 316456
|
|
|
|
|
|
| |
for the bug report.
llvm-svn: 316439
|
|
|
|
|
|
| |
Found by OSS-Fuzz
llvm-svn: 316191
|
|
|
|
|
|
| |
Reviewed as https://reviews.llvm.org/D39066
llvm-svn: 316172
|
|
|
|
|
|
| |
https://reviews.llvm.org/D37955
llvm-svn: 316095
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
perform push_back instead of emplace_back.
Summary:
The constructors `vector(Iter, Iter, Alloc = Alloc{})` and `assign(Iter, Iter)` don't correctly perform EmplaceConstruction from the result of dereferencing the iterator. This results in them performing an additional and unneeded copy.
This patch addresses the issue by correctly using `emplace_back` in C++11 and newer.
There are also some bugs in our `insert` implementation, but those will be handled separately.
@mclow.lists We should probably merge this into 5.1, agreed?
Reviewers: mclow.lists, dlj, EricWF
Reviewed By: mclow.lists, EricWF
Subscribers: cfe-commits, mclow.lists
Differential Revision: https://reviews.llvm.org/D38757
llvm-svn: 315994
|
|
|
|
|
|
| |
At least with clang-3.9 and earlier, -Wunknown-pragmas is also needed.
llvm-svn: 315882
|
|
|
|
|
|
|
| |
I *did* try to check that such kind of an issue was not introduced
by the rL315874, but clearly i failed to finish verification.
llvm-svn: 315876
|
|
|
|
|
|
|
| |
Previously this broke the builders, when D38101 was committed.
Silence the warning so that it can be re-landed.
llvm-svn: 315874
|
|
|
|
|
|
| |
-Wunused-variable
llvm-svn: 315809
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38452
llvm-svn: 315570
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D38628
llvm-svn: 315278
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The vcruntime headers are hairy and clash with both libc++ headers
themselves and other libraries. libc++ normally deals with the clashes
by deferring to the vcruntime headers and silencing its own definitions,
but for clients which don't want to depend on vcruntime headers, it's
desirable to support the opposite, i.e. have libc++ provide its own
definitions.
Certain operator new/delete replacement scenarios are not currently
supported in this mode, which requires some tests to be marked XFAIL.
The added documentation has more details.
Differential Revision: https://reviews.llvm.org/D38522
llvm-svn: 315234
|
|
|
|
| |
llvm-svn: 314947
|
|
|
|
|
|
|
| |
This patch adds the newly standardized deduction guides
for std::pair, allowing it to work class template deduction.
llvm-svn: 314864
|
|
|
|
|
|
| |
constructor
llvm-svn: 314608
|
|
|
|
|
|
| |
* Don't forbid non-libc++ implementations from strengthening noexcept on forward_list's move constructor.
llvm-svn: 314459
|
|
|
|
| |
llvm-svn: 314259
|
|
|
|
| |
llvm-svn: 314258
|
|
|
|
| |
llvm-svn: 313502
|
|
|
|
|
|
|
|
| |
Clang recently changed the way it outputs static assert diagnostics.
This patch fixes libc++'s -verify tests so they tolerate both the old
and new message format.
llvm-svn: 313499
|
|
|
|
|
|
|
|
|
|
|
| |
There were a number of cases where __double_underscore functions,
for example __has_construct_test, were called without being qualified,
causing ADL to occur. This patch qualifies those calls to avoid this
problem.
Thanks to David L. Jones for point out the issue initially.
llvm-svn: 313324
|
|
|
|
| |
llvm-svn: 313092
|
|
|
|
| |
llvm-svn: 313064
|
|
|
|
|
|
| |
to Tim Shen for the patch
llvm-svn: 313056
|
|
|
|
|
|
| |
thanks to Jonathan Wakely for the report
llvm-svn: 313031
|
|
|
|
|
|
| |
strings. Fixes PR#34529.
llvm-svn: 312923
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes llvm.org/PR34298. Previously libc++ incorrectly evaluated
the __invokable trait via the converting constructor `function(Tp)` [with Tp = std::function]
whenever the copy constructor or copy assignment operator
was required. This patch further constrains that constructor to short
circut before evaluating the troublesome SFINAE when `Tp` matches
std::function.
The original patch is from Alex Lorenz.
llvm-svn: 312892
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r312890 because the test case fails to compile for
older versions of Clang that reject initializing a const object without
a user defined constructor.
Since this patch should go into 5.0.1, I want to keep it an atomic change,
and will re-commit it with a fixed test case.
llvm-svn: 312891
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes llvm.org/PR34298. Previously libc++ incorrectly evaluated
the __invokable trait via the converting constructor `function(Tp)` [with Tp = std::function]
whenever the copy constructor or copy assignment operator
was required. This patch further constrains that constructor to short
circut before evaluating the troublesome SFINAE when `Tp` matches
std::function.
The original patch is from Alex Lorenz.
llvm-svn: 312890
|
|
|
|
|
|
|
| |
XFAIL some failing tests for SLES11 (older glibc), also replace spaces
in linux distro w/dashes.
llvm-svn: 312774
|
|
|
|
|
|
| |
parameter value for rfind/find_last_of/find_last_not_of
llvm-svn: 312693
|
|
|
|
| |
llvm-svn: 312691
|
|
|
|
| |
llvm-svn: 312690
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Update specification text from N4387
* Delete not_brace_initializable.fail.cpp: it's redundant with nullopt_t.fail.cpp
* is_empty<T> implies is_class<T>
* is_literal is deprecated; directly verify that we can create a nullopt_t in a constexpr context
Differential Revision: D37024
llvm-svn: 312256
|
|
|
|
| |
llvm-svn: 311967
|
|
|
|
|
|
| |
Dörrie for the suggested fix.
llvm-svn: 311952
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test/std/containers/Emplaceable.h
test/std/containers/NotConstructible.h
test/support/counting_predicates.hpp
Replace unary_function/binary_function inheritance with typedefs.
test/std/depr/depr.function.objects/depr.base/binary_function.pass.cpp
test/std/depr/depr.function.objects/depr.base/unary_function.pass.cpp
test/std/utilities/function.objects/func.require/binary_function.pass.cpp
test/std/utilities/function.objects/func.require/unary_function.pass.cpp
Mark these tests as requiring 98/03/11/14 because 17 removed unary_function/binary_function.
test/std/thread/futures/futures.task/futures.task.members/ctor_func_alloc.pass.cpp
test/std/thread/futures/futures.task/futures.task.nonmembers/uses_allocator.pass.cpp
Mark these tests as requiring 11/14 because 17 removed packaged_task allocator support.
test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp
This test doesn't need to be skipped in C++17 mode. Only the construction of
std::function from an allocator needs to be skipped in C++17 mode.
test/std/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp
test/std/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp
test/std/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp
test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp
When testing these reference_wrapper features, unary_function inheritance is totally irrelevant.
test/std/utilities/function.objects/refwrap/weak_result.pass.cpp
Define and use my_unary_function/my_binary_function to test the weak result type machinery
(which is still present in C++17, although deprecated).
test/support/msvc_stdlib_force_include.hpp
Now we can test C++17 strictly, without enabling removed features.
Fixes D36503.
llvm-svn: 311705
|
|
|
|
|
|
|
|
|
|
| |
This improves readability and (theoretically) improves portability,
as _Ugly names are reserved.
This performs additional de-uglification, so all of these tests
follow the example of iterator.traits/empty.pass.cpp.
llvm-svn: 310761
|
|
|
|
|
|
|
| |
This improves readability and (theoretically) improves portability,
as __ugly names are reserved.
llvm-svn: 310760
|
|
|
|
|
|
|
| |
This improves readability and (theoretically) improves portability,
as __ugly names are reserved.
llvm-svn: 310759
|
|
|
|
|
|
|
| |
This improves readability and (theoretically) improves portability,
as _Ugly names are reserved.
llvm-svn: 310758
|
|
|
|
| |
llvm-svn: 310157
|
|
|
|
| |
llvm-svn: 310156
|
|
|
|
| |
llvm-svn: 310155
|
|
|
|
| |
llvm-svn: 309851
|