| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch from ngolovliov@gmail.com
Reviewed as: https://reviews.llvm.org/D42344
As described in llvm.org/PR30959, the current
implementation of std::{map, key}::{count, equal_range} in libcxx is
non-conforming. Quoting the C++14 standard [associative.reqmts]p3
> The phrase “equivalence of keys” means the equivalence relation imposed by
> the comparison and not the operator== on keys. That is, two keys k1 and k2 are
> considered to be equivalent if for the comparison object comp,
> comp(k1, k2) == false && comp(k2, k1) == false.
In the same section, the requirements table states the following:
> a.equal_range(k) equivalent to make_pair(a.lower_bound(k), a.upper_bound(k))
> a.count(k) returns the number of elements with key equivalent to k
The behaviour of libstdc++ seems to conform to the standard here.
llvm-svn: 324799
|
| |
|
|
| |
llvm-svn: 324640
|
| |
|
|
| |
llvm-svn: 324624
|
| |
|
|
|
|
| |
unsupported, b/c they don't have deduction guides, even in C++17 mode
llvm-svn: 324619
|
| |
|
|
| |
llvm-svn: 324609
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Currently libc++ implements some operations on valarray by using the
resize method. This method has a parameter with a default value.
Because of this, valarray may spuriously construct and destruct
objects of valarray's element type.
This patch fixes this issue and adds corresponding test cases.
Reviewers: EricWF, mclow.lists
Reviewed By: mclow.lists
Subscribers: rogfer01, cfe-commits
Differential Revision: https://reviews.llvm.org/D41992
llvm-svn: 324596
|
| |
|
|
|
|
| |
with old bots
llvm-svn: 324573
|
| |
|
|
| |
llvm-svn: 324569
|
| |
|
|
| |
llvm-svn: 324566
|
| |
|
|
|
|
|
|
| |
An array T[1] isn't necessarily the same say when it's
a member of a struct. This patch addresses that problem and corrects
the tests to deal with it.
llvm-svn: 324545
|
| |
|
|
|
|
|
| |
Fallback implementations are now provided by bionic when necessary,
which these may conflict with.
llvm-svn: 324534
|
| |
|
|
|
|
| |
sizeof(T)>sizeof(long long)'. We were mishandling the small-string optimization calculations for very large 'characters'. This may be an ABI change (change the size of) strings of very large 'characters', but since they never worked, I'm not too concerned.
llvm-svn: 324531
|
| |
|
|
| |
llvm-svn: 324529
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constructible types.
Summary:
This patch fixes llvm.org/PR35491 and LWG2157 (https://cplusplus.github.io/LWG/issue2157)
The fix attempts to maintain ABI compatibility by replacing the array with a instance of `aligned_storage`.
Reviewers: mclow.lists, EricWF
Reviewed By: EricWF
Subscribers: lichray, cfe-commits
Differential Revision: https://reviews.llvm.org/D41223
llvm-svn: 324526
|
| |
|
|
| |
llvm-svn: 324503
|
| |
|
|
|
|
| |
type aliases, conjunction/disjunction, apply, etc. See https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 324423
|
| |
|
|
| |
llvm-svn: 324399
|
| |
|
|
| |
llvm-svn: 324398
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
or lower.
The 10.13 SDK always defines utimensat() (with an availability(macosx=10.13) annotation)
and unconditionally defines UTIME_OMIT, so use the compile-time availability macros
on Apple platforms instead.
For people statically linking libc++, it might make sense to also provide an opt-in
option for using __builtin_available() to dynamically check for the OS version,
but for now let's do the smallest thing needed to unbreak the build.
Based on a patch by Eric Fiselier <eric@efcs.ca>: https://reviews.llvm.org/D34249
Fixes PR33469.
llvm-svn: 324385
|
| |
|
|
|
|
| |
https://reviews.llvm.org/D42945 ; thanks to Bruce Mitchener for the patch.
llvm-svn: 324378
|
| |
|
|
| |
llvm-svn: 324312
|
| |
|
|
| |
llvm-svn: 324310
|
| |
|
|
|
|
|
|
|
|
|
| |
non-default constructible types."
Revert "Fix initialization of array<const T, 0> with GCC."
Revert "Make array<const T, 0> non-CopyAssignable and make swap and fill ill-formed."
This reverts commit r324182, r324185, and r324194 which were causing issues with zero-length std::arrays.
llvm-svn: 324309
|
| |
|
|
| |
llvm-svn: 324307
|
| |
|
|
| |
llvm-svn: 324292
|
| |
|
|
|
|
| |
https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 324290
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Previously, when handling zero-sized array of const objects we
used a const version of aligned_storage_t, which is not an array type.
However, GCC complains about initialization of the form: array<const T, 0> arr = {};
This patch fixes that bug by making the dummy object used to represent
the zero-sized array an array itself. This avoids GCC's complaints
about the uninitialized const member.
llvm-svn: 324194
|
| |
|
|
| |
llvm-svn: 324193
|
| |
|
|
|
|
|
|
|
| |
This patch removes the noexcept declaration from filesystem
operations which require creating temporary paths or
creating a directory iterator. Either of these operations
can throw.
llvm-svn: 324192
|
| |
|
|
| |
llvm-svn: 324191
|
| |
|
|
| |
llvm-svn: 324190
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because path can be constructed from a ton of different types, including string
and wide strings, this caused it's streaming operators to suck up all sorts
of silly types via silly conversions. For example:
using namespace std::experimental::filesystem::v1;
std::wstring w(L"wide");
std::cout << w; // converts to path.
This patch tentatively adopts the resolution to LWG2989 and fixes the issue
by making the streaming operators friends of path.
llvm-svn: 324189
|
| |
|
|
| |
llvm-svn: 324188
|
| |
|
|
|
|
|
| |
Previously copy_file didn't handle the case where the input and
output were the same file.
llvm-svn: 324187
|
| |
|
|
| |
llvm-svn: 324186
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The standard isn't exactly clear how std::array should handle zero-sized arrays
with const element types. In particular W.R.T. copy assignment, swap, and fill.
This patch takes the position that those operations should be ill-formed,
and makes changes to libc++ to make it so.
This follows up on commit r324182.
llvm-svn: 324185
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constructible types.
Summary:
This patch fixes llvm.org/PR35491 and LWG2157 (https://cplusplus.github.io/LWG/issue2157)
The fix attempts to maintain ABI compatibility by replacing the array with a instance of `aligned_storage`.
Reviewers: mclow.lists, EricWF
Reviewed By: EricWF
Subscribers: lichray, cfe-commits
Differential Revision: https://reviews.llvm.org/D41223
llvm-svn: 324182
|
| |
|
|
| |
llvm-svn: 324165
|
| |
|
|
|
|
|
|
|
|
|
| |
When Clang encounters an already invalid class declaration, it can
emit incorrect diagnostics about the exception specification on
some of its members. This patch temporarily works around that
incorrect diagnostic.
The clang bug was introduced in r324062.
llvm-svn: 324164
|
| |
|
|
|
|
|
|
|
| |
Clang previously reported an empty union as having a unique object
representation. This was incorrect and was fixed in a recent Clang commit.
This patch fixes the libc++ tests.
llvm-svn: 324153
|
| |
|
|
| |
llvm-svn: 324033
|
| |
|
|
|
|
|
|
| |
Patch by Chris Kennelly!
Differential Revision: https://reviews.llvm.org/D41746
llvm-svn: 324020
|
| |
|
|
|
|
| |
back in the dylib for binary compatibility
llvm-svn: 323989
|
| |
|
|
|
|
| |
https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 323979
|
| |
|
|
|
|
| |
https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 323975
|
| |
|
|
|
|
| |
https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 323972
|
| |
|
|
|
|
| |
https://libcxx.llvm.org/TS_deprecation.html
llvm-svn: 323971
|
| |
|
|
|
|
| |
traits match the character type. This is a requirement on the user - now we get consistent failures at compile time instead of incomprehensible error messages or runtime failures. This is also LWG#2994 - not yet adopted.
llvm-svn: 323945
|
| |
|
|
| |
llvm-svn: 323918
|
| |
|
|
| |
llvm-svn: 323822
|