[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-07-09 Thread Casey Carter via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rL307505: optional: Implement LWG 2900 and P0602 (authored by CaseyCarter). Changed prior to commit: https://reviews.llvm.org/D32385?vs=101631=105784#toc Repository: rL LLVM

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-07-09 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF accepted this revision. EricWF added a comment. This revision is now accepted and ready to land. LGTM. I'll deal with ensuring all vendors are willing to take this ABI break (or that they avoid it). https://reviews.llvm.org/D32385 ___

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-06-06 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 101631. CaseyCarter edited the summary of this revision. CaseyCarter added a comment. Incorporate the libcxx test tree `special_member_gen` test into the std test, making my per-SMF triviality tests unnecessary. https://reviews.llvm.org/D32385 Files:

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-06-04 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 101366. CaseyCarter added a comment. Fix merge conflicts. https://reviews.llvm.org/D32385 Files: include/optional test/libcxx/utilities/optional/optional.object/special_member_gen.pass.cpp

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-05-04 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added a comment. > libc++ committed to ABI stability for optional, a new feature of C++17, > before the standard shipped? Libc++ doesn't commit to anything, the vendors such as Apple and FreeBSD do. I don't think either of them have shipped a release with std::optional yet, but I need

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-05-04 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter added a comment. In https://reviews.llvm.org/D32385#745771, @EricWF wrote: > So Itanium ABI has this quirk where trivial types are passed using different > conventions than non-trivial types. This means changing the triviality of > `std::optional` for any instantiation is

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-05-04 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added a comment. So Itanium ABI has this quirk where trivial types are passed using different conventions than non-trivial types. This means changing the triviality of `std::optional` for any instantiation is potentially ABI breaking. I'll need to do more investigation to find out how

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-05-03 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 97769. CaseyCarter added a comment. Polish: clarify `static_assert` messages, DeMorgan a clause so it more precisely reflects the `static_assert` message. https://reviews.llvm.org/D32385 Files: include/optional

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-05-01 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 97366. CaseyCarter added a comment. Fix a missing indent in the `msvc_stdlib_force_include.hpp` change. https://reviews.llvm.org/D32385 Files: include/optional test/libcxx/utilities/optional/optional.object/special_member_gen.pass.cpp

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-04-30 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 97217. CaseyCarter added a comment. Update libc++-specific special member test for extended P0602 implementation. https://reviews.llvm.org/D32385 Files: include/optional test/libcxx/utilities/optional/optional.object/special_member_gen.pass.cpp

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-04-29 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 97203. CaseyCarter added a comment. Fix comment typo in optional.object.assign/move.pass.cpp https://reviews.llvm.org/D32385 Files: include/optional test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp

[PATCH] D32385: [libcxx] optional: Implement LWG 2900 and P0602

2017-04-29 Thread Casey Carter via Phabricator via cfe-commits
CaseyCarter updated this revision to Diff 97188. CaseyCarter retitled this revision from "[libcxx] Implement LWG 2900 "The copy and move constructors of optional are not constexpr"" to "[libcxx] optional: Implement LWG 2900 and P0602". CaseyCarter edited the summary of this revision. CaseyCarter