From owner-svn-src-all@freebsd.org Sat Feb 11 13:25:44 2017 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E8661CDB1ED; Sat, 11 Feb 2017 13:25:44 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A83F1A8D; Sat, 11 Feb 2017 13:25:44 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v1BDPhxC075545; Sat, 11 Feb 2017 13:25:43 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v1BDPhX9075539; Sat, 11 Feb 2017 13:25:43 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201702111325.v1BDPhX9075539@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 11 Feb 2017 13:25:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r313638 - in vendor/libc++/dist: docs include src test/std/utilities/optional/optional.bad_optional_access test/std/utilities/variant/variant.visit X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Feb 2017 13:25:45 -0000 Author: dim Date: Sat Feb 11 13:25:42 2017 New Revision: 313638 URL: https://svnweb.freebsd.org/changeset/base/313638 Log: Vendor import of libc++ release_40 branch r294803: https://llvm.org/svn/llvm-project/libcxx/branches/release_40@294803 Modified: vendor/libc++/dist/docs/conf.py vendor/libc++/dist/include/optional vendor/libc++/dist/include/variant vendor/libc++/dist/src/optional.cpp vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Modified: vendor/libc++/dist/docs/conf.py ============================================================================== --- vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:42 2017 (r313638) @@ -47,9 +47,9 @@ copyright = u'2011-2017, LLVM Project' # built documents. # # The short X.Y version. -version = '4.0' +version = '4' # The full version, including alpha/beta/rc tags. -release = '4.0' +release = '4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. Modified: vendor/libc++/dist/include/optional ============================================================================== --- vendor/libc++/dist/include/optional Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/include/optional Sat Feb 11 13:25:42 2017 (r313638) @@ -160,14 +160,12 @@ namespace std // purposefully not using { class _LIBCPP_EXCEPTION_ABI bad_optional_access - : public logic_error + : public exception { public: - _LIBCPP_INLINE_VISIBILITY - bad_optional_access() : logic_error("bad optional access") {} - // Get the key function ~bad_optional_access() into the dylib virtual ~bad_optional_access() _NOEXCEPT; + virtual const char* what() const _NOEXCEPT; }; } // std Modified: vendor/libc++/dist/include/variant ============================================================================== --- vendor/libc++/dist/include/variant Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/include/variant Sat Feb 11 13:25:42 2017 (r313638) @@ -574,7 +574,7 @@ private: constexpr decltype(auto) operator()(_Alts&&... __alts) const { __std_visit_exhaustive_visitor_check< _Visitor, - decltype(_VSTD::forward<_Alts>(__alts).__value)...>(); + decltype((_VSTD::forward<_Alts>(__alts).__value))...>(); return __invoke_constexpr(_VSTD::forward<_Visitor>(__visitor), _VSTD::forward<_Alts>(__alts).__value...); } Modified: vendor/libc++/dist/src/optional.cpp ============================================================================== --- vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -15,6 +15,10 @@ namespace std bad_optional_access::~bad_optional_access() _NOEXCEPT = default; +const char* bad_optional_access::what() const _NOEXCEPT { + return "bad_optional_access"; + } + } // std _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL Modified: vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -11,7 +11,7 @@ // -// class bad_optional_access : public logic_error +// class bad_optional_access : public exception #include #include @@ -20,6 +20,6 @@ int main() { using std::bad_optional_access; - static_assert(std::is_base_of::value, ""); - static_assert(std::is_convertible::value, ""); + static_assert(std::is_base_of::value, ""); + static_assert(std::is_convertible::value, ""); } Modified: vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -283,9 +283,20 @@ void test_exceptions() { #endif } +// See http://llvm.org/PR31916 +void test_caller_accepts_nonconst() { + struct A {}; + struct Visitor { + void operator()(A&) {} + }; + std::variant v; + std::visit(Visitor{}, v); +} + int main() { test_call_operator_forwarding(); test_argument_forwarding(); test_constexpr(); test_exceptions(); + test_caller_accepts_nonconst(); }