Commit Graph

633 Commits

Author SHA1 Message Date
Louis Dionne
d8ae8539a7 [libc++] Use std::is_nothrow_callable for std::invoke according to LWG 2807
Thanks to Zoe Carver for the patch.
Differential Revision: https://reviews.llvm.org/D58097

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357616 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-03 17:54:37 +00:00
Louis Dionne
7b9927381c [libcxx] Make sure reference_wrapper works with incomplete types
Summary: Completes P0357R3, which was merged into the C++20 Working Draft in San Diego.

Reviewers: EricWF, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Differential Revision: https://reviews.llvm.org/D54722

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357423 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-01 19:53:44 +00:00
Louis Dionne
3af5f5e110 [libc++][CMake] Clean up some of the libc++ re-exporting logic
Summary:
This change allows specifying the version of libc++abi's ABI to re-export
when configuring CMake. It also clearly identifies which ABI version of
libc++abi each export file contains.

Finally, it removes hardcoded knowledge about the 10.9 SDK for MacOS,
since that knowledge is not relevant anymore. Indeed, libc++ can't be
built with the toolchain that came with the 10.9 SDK anyway because
the version of Clang it includes is too old (for example if you want
to build a working libc++.dylib, you need bugfixes to visibility
attributes that are only in recent Clangs).

Reviewers: dexonsmith, EricWF

Subscribers: mgorny, christof, jkorous, arphaman, libcxx-commits

Differential Revision: https://reviews.llvm.org/D59489

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356587 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-20 18:16:24 +00:00
Eric Fiselier
158cd4dca0 LWG 2843 "Unclear behavior of std::pmr::memory_resource::do_allocate()"
Patch by Arthur O'Dwyer.
Reviewed as https://reviews.llvm.org/D47344

new_delete_resource().allocate(n, a) has basically two permissible results:

* Return an appropriately sized and aligned block.
* Throw bad_alloc.

Before this patch, libc++'s new_delete_resource would do a third and impermissible thing, which was
to return an appropriately sized but inappropriately under-aligned block. This is now fixed.

(This came up while I was stress-testing unsynchronized_pool_resource on my MacBook. If we can't
trust the default resource to return appropriately aligned blocks, pretty much everything breaks.
For similar reasons, I would strongly support just patching __libcpp_allocate directly, but I don't
care to die on that hill, so I made this patch as a <memory_resource>-specific workaround.)

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355763 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-09 00:38:19 +00:00
Davide Italiano
a011222d74 Reinstate libc++ patches now that the lldb formatter has been updated.
"[libc++] Fix <atomic> failures on GCC"
"[libc++] Change memory_order to an enum class"
"[libc++] decoupling Freestanding atomic<T> from libatomic.a"

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355427 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-05 18:40:49 +00:00
Davide Italiano
3438c15d15 [libcxx] Revert set of atomic patches that broke lldb.
Revert "[libc++] Fix <atomic> failures on GCC"
Revert "[libc++] Change memory_order to an enum class"
Revert "[libc++] decoupling Freestanding atomic<T> from libatomic.a"

The lldb formatter nededs to be updated. Shafik and Louis will
coordinate to do so.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355417 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-05 17:38:33 +00:00
Louis Dionne
1bf0d1eb64 [libc++] Change memory_order to an enum class
This implements P0439R0.

Thanks to Zoe Carver for the patch.
Differential Revision: https://reviews.llvm.org/D58201

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355403 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-05 14:50:25 +00:00
Louis Dionne
aeeba70ab1 [libc++] Add is_nothrow_convertible from P0758R1
Reviewed as https://reviews.llvm.org/D58019.
Thanks to Zoe Carver for the patch.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355010 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 17:57:38 +00:00
Marshall Clow
ae4afd034b Implment the last part of P1024: tuple-like interface to span. Reviewed as https://reviews.llvm.org/D58706.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354988 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-27 15:41:37 +00:00
Marshall Clow
f7374c69a9 Remove P1272R1, it was not moved in Kona
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354904 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 18:17:30 +00:00
Marshall Clow
b0560e2ae9 Put a 'first implemented' version into the entry for P1357
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354901 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 17:22:47 +00:00
Marshall Clow
02ee9a6e9a Mark several issues (and one paper) as complete. Reviewed as D58099; but I added LWG3101 and LWG3144 and P1357R1 as well.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354898 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 17:01:00 +00:00
Marshall Clow
1c2f15d4c4 Update status page with papers/issues adopted in Kona
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@354796 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 16:12:00 +00:00
James Y Knight
e0324cb307 Adjust documentation for git migration.
This fixes most references to the paths:
 llvm.org/svn/
 llvm.org/git/
 llvm.org/viewvc/
 github.com/llvm-mirror/
 github.com/llvm-project/
 reviews.llvm.org/diffusion/

to instead point to https://github.com/llvm/llvm-project.

This is *not* a trivial substitution, because additionally, all the
checkout instructions had to be migrated to instruct users on how to
use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of
checking out various projects into various subdirectories.

I've attempted to not change any scripts here, only documentation. The
scripts will have to be addressed separately.

Additionally, I've deleted one document which appeared to be outdated
and unneeded:
  lldb/docs/building-with-debug-llvm.txt

Differential Revision: https://reviews.llvm.org/D57330

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352514 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-29 16:37:27 +00:00
Eric Fiselier
427fc9484c update upcoming meeting issue status
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352339 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-28 02:59:01 +00:00
Marshall Clow
56e3b48754 Note that we have a patch for LWG3101
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@351832 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-22 16:22:53 +00:00
Marshall Clow
844067dc76 Updated issue 3144
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@351773 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-22 01:05:58 +00:00
Marshall Clow
cb6b6cda0f Update with issues to be moved in San Diego
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@351770 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-22 00:31:09 +00:00
Louis Dionne
134a848236 [libcxx] Reorganize tests since the application of P0602R4
Summary:
P0602R4 makes the special member functions of optional and variant
conditionally trivial based on the types in the optional/variant.
We already implemented that, but the tests were organized as if this
were a non-standard extension. This patch reorganizes the tests in a
way that makes more sense since this is not an extension anymore.

Reviewers: EricWF, mpark, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Differential Revision: https://reviews.llvm.org/D54772

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@350884 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-10 20:06:11 +00:00
Eric Fiselier
da05bdc85c Implement LWG 3096: path::lexically_relative is confused by trailing slashes
path("/dir/").lexically_relative("/dir"); now returns "." instead of ""

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349885 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-21 04:25:40 +00:00
Eric Fiselier
3cf34d1caf Implement LWG 3065: Make path operators friends.
This prevents things like:

using namespace std::filesystem;
auto x = L"a/b" == std::string("a/b");

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349884 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-21 04:09:01 +00:00
Eric Fiselier
874280d14d Implement LWG 3145: file_clock breaks ABI for C++17 implementations.
This patch adds std::chrono::file_clock, but without breaking the
existing ABI for std::filesystem.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349883 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-21 03:54:57 +00:00
Eric Fiselier
a2037284d4 Implement LWG 2936: Path comparison is defined in terms of the generic format
This patch implements path::compare according to the current spec. The
only observable change is the ordering of "/foo" and "foo", which orders
the two paths based on having or not having a root directory (instead
of lexically comparing "/" to "foo").

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349881 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-21 03:16:30 +00:00
Eric Fiselier
545d0b950d Mark two filesystem LWG issues as complete - nothing to do
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349877 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-21 02:17:00 +00:00
Marshall Clow
f927635d87 Implement P1209 - Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20. Reviewed as https://reviews.llvm.org/D55532
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349178 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-14 18:49:35 +00:00
Louis Dionne
604afd7688 [libcxx] Implement P0318: unwrap_ref_decay and unwrap_reference
Summary:
This was voted into C++20 in San Diego. Note that there was a revision
D0318R2 which did include unwrap_reference_t, but we mistakingly voted
P0318R1 into the C++20 Working Draft (which does not include
unwrap_reference_t). This patch implements D0318R2, which is what
we'll end up with in the Working Draft once this mistake has been
fixed.

Reviewers: EricWF, mclow.lists

Subscribers: christof, dexonsmith, libcxx-commits

Differential Revision: https://reviews.llvm.org/D54485

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@348138 91177308-0d34-0410-b5e6-96231b3b80d8
2018-12-03 14:03:27 +00:00
Marshall Clow
7593e799d2 Implement P0966 - string::reserve should not shrink
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347789 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-28 18:18:34 +00:00
Marshall Clow
f4e307bd3c Implement P1085R2 - Should Span be Regular?. This consists entirely of deletions
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347672 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-27 16:35:41 +00:00
Zhihao Yuan
580cde08e1 [libc++] Implement P0487R1 - Fixing operator>>(basic_istream&, CharT*)
Summary:
Avoid buffer overflow by replacing the pointer interface with an array reference interface in C++2a.
Tentatively ready on Batavia2018.

 https://wg21.link/lwg2499
 https://wg21.link/p0487

Reviewers: mclow.lists, ldionne, EricWF

Reviewed By: ldionne

Subscribers: libcxx-commits, cfe-commits, christof

Differential Revision: https://reviews.llvm.org/D51268

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347377 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-21 03:30:10 +00:00
Marshall Clow
44047a25fd Note that P0899R1 requires no work.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347344 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-20 20:38:15 +00:00
Marshall Clow
3b4ca5b4af Mark P0771 as complete; we already did this - I just added tests to be sure
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347343 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-20 20:37:07 +00:00
Marshall Clow
1595c0dd31 Mark #2184 as complete; the tests are fine. (I thought that they were wrong before)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346805 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 22:26:03 +00:00
Louis Dionne
a4e279c31f [NFC] Mark LWG3128 and LWG3132 as requiring no work
Those LWG issues were adopted in San Diego and require no work
on our side.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346799 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 21:13:10 +00:00
Marshall Clow
10180dc28f Remove duplicate entry for issue 3134
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346772 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 18:07:51 +00:00
Marshall Clow
87b4a050de Update status for issue 3122
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346771 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 18:05:10 +00:00
Louis Dionne
d9c27151e9 [NFC][libcxx] Mark P1006R1 as complete
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346767 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 17:33:11 +00:00
Marshall Clow
98d4ace735 Implement P0972R0: <chrono> zero(), min(), and max() should be noexcept. Reviewed as https://reviews.llvm.org/D53828
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346766 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 17:22:41 +00:00
Louis Dionne
d086fccc3a [NFC][libcxx] Mark P1006 as implemented in LLVM 8.0
It was implemented in https://reviews.llvm.org/D53867

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346765 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-13 17:09:25 +00:00
Marshall Clow
94664a1ad8 Update to-do list with new work from WG21 meeting in San Diego
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@346634 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-12 04:58:00 +00:00
Louis Dionne
3fa96b3738 [NFC] Replace C++1y and C++1z by C++14 and C++17, respectively
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345762 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-31 18:53:31 +00:00
Louis Dionne
def3a4042e [NFC] Mark "Splicing Maps and Sets" as done in LLVM 8.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345759 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-31 18:33:11 +00:00
Louis Dionne
831ab1b675 [libcxx] Correct link to code review for P1006
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345658 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-30 21:50:11 +00:00
Marshall Clow
02bbf435d8 Add link to implementation for P1006R0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345653 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-30 21:27:42 +00:00
Marshall Clow
c5a77b2981 Added Phab link for P0927
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345526 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-29 19:31:35 +00:00
Marshall Clow
173057e232 Updated the issue notes.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@344989 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-23 01:30:14 +00:00
Marshall Clow
dd10075b58 Added more notes to the issues.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@344975 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-22 23:52:09 +00:00
Marshall Clow
6735cca767 Papers and Issues for San Diego
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@343923 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-06 15:07:03 +00:00
Eric Fiselier
3cea452823 Correct docs to reference the new libc++ lists.
We recently added libcxx-dev and libcxx-commits mailing lists.
This patch updates the libc++ documentation to correctly reference
the libc++ lists instead of the old Clang ones.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342816 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22 19:49:29 +00:00
Sylvestre Ledru
e404320723 add a quick link to libc++abi
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342625 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 07:58:43 +00:00
Sylvestre Ledru
ac2b5703bb refresh the libc++ homepage
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@342624 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-20 07:57:31 +00:00