| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 293619
|
|
|
|
| |
llvm-svn: 293599
|
|
|
|
| |
llvm-svn: 292992
|
|
|
|
|
|
| |
with C++14 or before. Resolves PR31680.
llvm-svn: 292990
|
|
|
|
|
|
| |
_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR
llvm-svn: 292986
|
|
|
|
|
|
| |
will fail
llvm-svn: 292969
|
|
|
|
|
|
| |
C++17, so replicate the changes in experimental.
llvm-svn: 292962
|
|
|
|
| |
llvm-svn: 292958
|
|
|
|
|
|
| |
than test code.
llvm-svn: 292943
|
|
|
|
| |
llvm-svn: 292905
|
|
|
|
|
|
|
|
|
| |
Pending LIT changes are about to remove the REQUIRES-ANY keyword
in place of supporting boolean && and || within "REQUIRES". This
patch prepares libc++ for that change so that when applied
the bots don't lose their mind.
llvm-svn: 292901
|
|
|
|
| |
llvm-svn: 292823
|
|
|
|
| |
llvm-svn: 292809
|
|
|
|
| |
llvm-svn: 292806
|
|
|
|
| |
llvm-svn: 292689
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Exactly what the title says.
This patch also adds a `std::hash<nullptr_t>` specialization in C++17, but it was not added by this paper and I can't find the actual paper that adds it.
See http://wg21.link/P0513R0 for more info.
If there are no comments in the next couple of days I'll commit this
Reviewers: mclow.lists, K-ballo, EricWF
Reviewed By: EricWF
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D28938
llvm-svn: 292684
|
|
|
|
| |
llvm-svn: 292577
|
|
|
|
|
|
| |
No functional change, no code review.
llvm-svn: 292434
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MSVC has compiler warnings C4127 "conditional expression is constant" (enabled
by /W4) and C6326 "Potential comparison of a constant with another constant"
(enabled by /analyze). They're potentially useful, although they're slightly
annoying to library devs who know what they're doing. In the latest version of
the compiler, C4127 is suppressed when the compiler sees simple tests like
"if (name_of_thing)", so extracting comparison expressions into named
constants is a workaround. At the same time, using std::integral_constant
avoids C6326, which doesn't look at template arguments.
test/std/containers/sequences/vector.bool/emplace.pass.cpp
Replace 1 == 1 with true, which is the same as far as the library is concerned.
Fixes D28837.
llvm-svn: 292432
|
|
|
|
|
|
|
|
| |
Adding `path::operator=(string_type&&)` made the expression `p = {}`
ambiguous. This path fixes that ambiguity by making the `string&&`
overload a template so it ranks lower during overload resolution.
llvm-svn: 292345
|
|
|
|
| |
llvm-svn: 292337
|
|
|
|
| |
llvm-svn: 292326
|
|
|
|
|
|
|
| |
In recent changes type_info's private constructor was
accidentally made implicit. This patch fixes that.
llvm-svn: 292294
|
|
|
|
|
|
|
|
|
|
|
| |
This is the subject of an active NB comment. Regardless of what the Working
Paper currently says, asking this question is morally wrong, because the
answer can change when the type is completed. C1XX now detects such
precondition violations and complains about them; perhaps Clang should too.
Fixes D28591.
llvm-svn: 292281
|
|
|
|
|
|
|
|
|
|
| |
When support for `basic_string_view` was added to string it also
added new assignment operators from `basic_string_view`. These caused
ambiguity when assigning from a braced initializer. This patch fixes
that regression by making the basic_string_view assignment operator
rank lower in overload resolution by making it a template.
llvm-svn: 292276
|
|
|
|
|
|
|
| |
On Windows the header new.h defines "new_handler" in the global
namespace.
llvm-svn: 292177
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
There seems to be an additional bug in `-fdelayed-template-parsing`
similar to
http://llvm.org/viewvc/llvm-project?view=revision&revision=236063.
This is a workaround for it for <variant> to compile with `clang-cl` on Windows.
Reviewers: EricWF
Differential Revision: https://reviews.llvm.org/D28734
llvm-svn: 292097
|
|
|
|
| |
llvm-svn: 292091
|
|
|
|
|
|
|
|
|
|
|
| |
very large times
Seems to be the case for NFS.
Original patch by Eric Fiselier!
Differential Revision: https://reviews.llvm.org/D22452
llvm-svn: 292013
|
|
|
|
| |
llvm-svn: 292012
|
|
|
|
| |
llvm-svn: 291741
|
|
|
|
|
|
|
|
|
|
| |
The destructor of std::promise needs to construct a std::future_error
exception so it calls std::make_exception_ptr. But under
libcpp-no-exceptions this will trigger an abort.
Differential Revision: https://reviews.llvm.org/D27614
llvm-svn: 291550
|
|
|
|
| |
llvm-svn: 291475
|
|
|
|
|
|
| |
4.0 (specifically, r290744)
llvm-svn: 291457
|
|
|
|
| |
llvm-svn: 291322
|
|
|
|
| |
llvm-svn: 291278
|
|
|
|
|
|
| |
Michael Park
llvm-svn: 291094
|
|
|
|
|
|
|
|
|
|
|
| |
The test was previously set to XFAIL if __cpp_structured_bindings
wasn't defined. However there are Clang 4.0 versions which do not
define this macro but do provide structured bindings, which causes
the test to pass unexpectedly.
This patch changes the XFAIL to an UNSUPPORTED.
llvm-svn: 291060
|
|
|
|
|
|
|
|
| |
In ABI v1 libc++ implements std::pointer_safety as a class type instead
of an enumeration. However this class type does not provide
a default constructor as it should. This patch adds that default constructor.
llvm-svn: 291059
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the C++ standard `std::pointer_safety` is defined
as a C++11 strongly typed enum. However libc++ currently defines
it as a class type which simulates a C++11 enumeration. This
can be detected in valid C++ code.
This patch introduces an the _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE ABI option.
When defined `std::pointer_safety` is implemented as an enum type.
Unfortunatly this also means it can no longer be provided as an extension
in C++03.
Additionally this patch moves the definition for `get_pointer_safety()`
out of the dylib, and into the headers. New usages of `get_pointer_safety()`
will now use the inline version instead of the dylib version. However in
order to keep the dylib ABI compatible the old definition is explicitly
compiled into it.
llvm-svn: 291046
|
|
|
|
| |
llvm-svn: 291031
|
|
|
|
| |
llvm-svn: 291028
|
|
|
|
| |
llvm-svn: 291021
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bindings
Summary:
This patch attempts to re-implement a fix for LWG 2770, but not the actual specified PR.
The PR for 2770 specifies tuple_size<T const> as only conditionally providing a `::value` member. However C++17 structured bindings require `tuple_size<T const>` to be complete only if `tuple_size<T>` is also complete. Therefore this patch implements only provides the specialization `tuple_size<T CV>` iff `tuple_size<T>` is a complete type.
This fixes http://llvm.org/PR31513.
Reviewers: mclow.lists, rsmith, mpark
Subscribers: mpark, cfe-commits
Differential Revision: https://reviews.llvm.org/D28222
llvm-svn: 291019
|
|
|
|
|
|
| |
reverse_iterator, move_iterator, array and Range Access' for C++17
llvm-svn: 290976
|
|
|
|
|
|
| |
Fixes D27786.
llvm-svn: 290922
|
|
|
|
|
|
|
|
|
|
| |
These tests were using malloc()'s return value without checking for null,
which MSVC's /analyze rightly warns about. Asserting that the pointer is
non-null both expresses the test's intention and silences the warning.
Fixes D27785.
llvm-svn: 290921
|
|
|
|
|
|
|
| |
This patch implements the correct PR for LWG 2770. It also makes the primary
tuple_size template incomplete again which fixes part of llvm.org/PR31513.
llvm-svn: 290846
|
|
|
|
| |
llvm-svn: 290758
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were two problems with the initial fix.
1. The added tests flushed out that we misconfigured _LIBCPP_EXPLICIT with GCC.
2. Because the boolean type was a member function template it caused weird link
errors. I'm assuming due to the vague linkage rules. This time the bool type
is a non-template member function pointer. That seems to have fixed the
failing tests. Plus it will end up generating less symbols overall, since
the bool type is no longer per instantiation.
original commit message below
-----------------------------
std::basic_ios has an operator bool(). In C++11 and later
it is explicit, and only allows contextual implicit conversions.
However explicit isn't available in C++03 which causes std::istream (et al)
to have an implicit conversion to int. This can easily cause ambiguities
when calling operator<< and operator>>.
This patch uses a "bool-like" type in C++03 to work around this. The
"bool-like" type is an arbitrary pointer to member function type. It
will not convert to either int or void*, but will convert to bool.
llvm-svn: 290754
|