From owner-svn-src-projects@freebsd.org Wed Dec 20 19:16:15 2017 Return-Path: Delivered-To: svn-src-projects@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 47540E9E184 for ; Wed, 20 Dec 2017 19:16:15 +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 AD25E7D3F0; Wed, 20 Dec 2017 19:16:14 +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 vBKJGDcQ087541; Wed, 20 Dec 2017 19:16:13 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id vBKJGCOq087521; Wed, 20 Dec 2017 19:16:12 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201712201916.vBKJGCOq087521@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 20 Dec 2017 19:16:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r327039 - in projects/clang600-import/contrib/libc++: . include include/experimental src src/experimental/filesystem src/include src/support/runtime X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang600-import/contrib/libc++: . include include/experimental src src/experimental/filesystem src/include src/support/runtime X-SVN-Commit-Revision: 327039 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Dec 2017 19:16:15 -0000 Author: dim Date: Wed Dec 20 19:16:11 2017 New Revision: 327039 URL: https://svnweb.freebsd.org/changeset/base/327039 Log: Merge libc++ trunk r321017 to contrib/libc++. Modified: projects/clang600-import/contrib/libc++/CREDITS.TXT projects/clang600-import/contrib/libc++/include/__config projects/clang600-import/contrib/libc++/include/__libcpp_version projects/clang600-import/contrib/libc++/include/__locale projects/clang600-import/contrib/libc++/include/__tree projects/clang600-import/contrib/libc++/include/algorithm projects/clang600-import/contrib/libc++/include/array projects/clang600-import/contrib/libc++/include/bitset projects/clang600-import/contrib/libc++/include/chrono projects/clang600-import/contrib/libc++/include/cstddef projects/clang600-import/contrib/libc++/include/deque projects/clang600-import/contrib/libc++/include/exception projects/clang600-import/contrib/libc++/include/experimental/algorithm projects/clang600-import/contrib/libc++/include/experimental/filesystem projects/clang600-import/contrib/libc++/include/experimental/iterator projects/clang600-import/contrib/libc++/include/forward_list projects/clang600-import/contrib/libc++/include/fstream projects/clang600-import/contrib/libc++/include/future projects/clang600-import/contrib/libc++/include/istream projects/clang600-import/contrib/libc++/include/iterator projects/clang600-import/contrib/libc++/include/list projects/clang600-import/contrib/libc++/include/locale projects/clang600-import/contrib/libc++/include/map projects/clang600-import/contrib/libc++/include/memory projects/clang600-import/contrib/libc++/include/new projects/clang600-import/contrib/libc++/include/optional projects/clang600-import/contrib/libc++/include/ostream projects/clang600-import/contrib/libc++/include/queue projects/clang600-import/contrib/libc++/include/random projects/clang600-import/contrib/libc++/include/regex projects/clang600-import/contrib/libc++/include/scoped_allocator projects/clang600-import/contrib/libc++/include/set projects/clang600-import/contrib/libc++/include/sstream projects/clang600-import/contrib/libc++/include/stack projects/clang600-import/contrib/libc++/include/streambuf projects/clang600-import/contrib/libc++/include/string projects/clang600-import/contrib/libc++/include/string_view projects/clang600-import/contrib/libc++/include/system_error projects/clang600-import/contrib/libc++/include/tuple projects/clang600-import/contrib/libc++/include/type_traits projects/clang600-import/contrib/libc++/include/typeinfo projects/clang600-import/contrib/libc++/include/unordered_map projects/clang600-import/contrib/libc++/include/unordered_set projects/clang600-import/contrib/libc++/include/utility projects/clang600-import/contrib/libc++/include/variant projects/clang600-import/contrib/libc++/include/vector projects/clang600-import/contrib/libc++/include/wchar.h projects/clang600-import/contrib/libc++/src/exception.cpp projects/clang600-import/contrib/libc++/src/experimental/filesystem/directory_iterator.cpp projects/clang600-import/contrib/libc++/src/experimental/filesystem/operations.cpp projects/clang600-import/contrib/libc++/src/include/atomic_support.h projects/clang600-import/contrib/libc++/src/include/config_elast.h projects/clang600-import/contrib/libc++/src/include/refstring.h projects/clang600-import/contrib/libc++/src/iostream.cpp projects/clang600-import/contrib/libc++/src/locale.cpp projects/clang600-import/contrib/libc++/src/new.cpp projects/clang600-import/contrib/libc++/src/random.cpp projects/clang600-import/contrib/libc++/src/strstream.cpp projects/clang600-import/contrib/libc++/src/support/runtime/exception_fallback.ipp projects/clang600-import/contrib/libc++/src/support/runtime/exception_msvc.ipp projects/clang600-import/contrib/libc++/src/support/runtime/exception_pointer_msvc.ipp projects/clang600-import/contrib/libc++/src/support/runtime/new_handler_fallback.ipp projects/clang600-import/contrib/libc++/src/system_error.cpp projects/clang600-import/contrib/libc++/src/typeinfo.cpp Directory Properties: projects/clang600-import/contrib/libc++/ (props changed) Modified: projects/clang600-import/contrib/libc++/CREDITS.TXT ============================================================================== --- projects/clang600-import/contrib/libc++/CREDITS.TXT Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/CREDITS.TXT Wed Dec 20 19:16:11 2017 (r327039) @@ -41,6 +41,10 @@ N: Jonathan B Coe E: jbcoe@me.com D: Implementation of propagate_const. +N: Glen Joseph Fernandes +E: glenjofe@gmail.com +D: Implementation of to_address. + N: Eric Fiselier E: eric@efcs.ca D: LFTS support, patches and bug fixes. Modified: projects/clang600-import/contrib/libc++/include/__config ============================================================================== --- projects/clang600-import/contrib/libc++/include/__config Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/__config Wed Dec 20 19:16:11 2017 (r327039) @@ -33,7 +33,7 @@ #define _GNUC_VER_NEW 0 #endif -#define _LIBCPP_VERSION 5000 +#define _LIBCPP_VERSION 6000 #ifndef _LIBCPP_ABI_VERSION #define _LIBCPP_ABI_VERSION 1 @@ -45,6 +45,8 @@ #define _LIBCPP_OBJECT_FORMAT_MACHO 1 #elif defined(_WIN32) #define _LIBCPP_OBJECT_FORMAT_COFF 1 +#elif defined(__wasm__) +#define _LIBCPP_OBJECT_FORMAT_WASM 1 #else #error Unknown object file format #endif @@ -55,11 +57,11 @@ #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT // Fix deque iterator type in order to support incomplete types. #define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE -// Fix undefined behavior in how std::list stores it's linked nodes. +// Fix undefined behavior in how std::list stores its linked nodes. #define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB // Fix undefined behavior in how __tree stores its end and parent nodes. #define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB -// Fix undefined behavior in how __hash_table stores it's pointer types +// Fix undefined behavior in how __hash_table stores its pointer types. #define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB #define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB #define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE @@ -76,9 +78,11 @@ // its vtable and typeinfo to libc++ rather than having all other libraries // using that class define their own copies. #define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION - // Enable optimized version of __do_get_(un)signed which avoids redundant copies. #define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET +// Use the smallest possible integer type to represent the index of the variant. +// Previously libc++ used "unsigned int" exclusivly. +#define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION #elif _LIBCPP_ABI_VERSION == 1 #if !defined(_LIBCPP_OBJECT_FORMAT_COFF) // Enable compiling copies of now inline methods into the dylib to support @@ -121,6 +125,9 @@ #ifndef __has_feature #define __has_feature(__x) 0 #endif +#ifndef __has_cpp_attribute +#define __has_cpp_attribute(__x) 0 +#endif // '__is_identifier' returns '0' if '__x' is a reserved identifier provided by // the compiler and '1' otherwise. #ifndef __is_identifier @@ -157,11 +164,21 @@ // FIXME: ABI detection should be done via compiler builtin macros. This // is just a placeholder until Clang implements such macros. For now assume -// that Windows compilers pretending to be MSVC++ target the microsoft ABI. -#if defined(_WIN32) && defined(_MSC_VER) +// that Windows compilers pretending to be MSVC++ target the Microsoft ABI, +// and allow the user to explicitly specify the ABI to handle cases where this +// heuristic falls short. +#if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT) +# error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined" +#elif defined(_LIBCPP_ABI_FORCE_ITANIUM) +# define _LIBCPP_ABI_ITANIUM +#elif defined(_LIBCPP_ABI_FORCE_MICROSOFT) # define _LIBCPP_ABI_MICROSOFT #else -# define _LIBCPP_ABI_ITANIUM +# if defined(_WIN32) && defined(_MSC_VER) +# define _LIBCPP_ABI_MICROSOFT +# else +# define _LIBCPP_ABI_ITANIUM +# endif #endif // Need to detect which libc we're using if we're on Linux. @@ -174,36 +191,30 @@ #ifdef __LITTLE_ENDIAN__ #if __LITTLE_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 1 -#define _LIBCPP_BIG_ENDIAN 0 +#define _LIBCPP_LITTLE_ENDIAN #endif // __LITTLE_ENDIAN__ #endif // __LITTLE_ENDIAN__ #ifdef __BIG_ENDIAN__ #if __BIG_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 0 -#define _LIBCPP_BIG_ENDIAN 1 +#define _LIBCPP_BIG_ENDIAN #endif // __BIG_ENDIAN__ #endif // __BIG_ENDIAN__ #ifdef __BYTE_ORDER__ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 1 -#define _LIBCPP_BIG_ENDIAN 0 +#define _LIBCPP_LITTLE_ENDIAN #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 0 -#define _LIBCPP_BIG_ENDIAN 1 +#define _LIBCPP_BIG_ENDIAN #endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #endif // __BYTE_ORDER__ #ifdef __FreeBSD__ # include # if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 +# define _LIBCPP_LITTLE_ENDIAN # else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 +# define _LIBCPP_BIG_ENDIAN # endif // _BYTE_ORDER == _LITTLE_ENDIAN # ifndef __LONG_LONG_SUPPORTED # define _LIBCPP_HAS_NO_LONG_LONG @@ -213,19 +224,16 @@ #ifdef __NetBSD__ # include # if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 +# define _LIBCPP_LITTLE_ENDIAN # else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 +# define _LIBCPP_BIG_ENDIAN # endif // _BYTE_ORDER == _LITTLE_ENDIAN # define _LIBCPP_HAS_QUICK_EXIT #endif // __NetBSD__ #if defined(_WIN32) # define _LIBCPP_WIN32API -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 +# define _LIBCPP_LITTLE_ENDIAN # define _LIBCPP_SHORT_WCHAR 1 // Both MinGW and native MSVC provide a "MSVC"-like enviroment # define _LIBCPP_MSVCRT_LIKE @@ -255,11 +263,9 @@ #ifdef __sun__ # include # ifdef _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 +# define _LIBCPP_LITTLE_ENDIAN # else -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 +# define _LIBCPP_BIG_ENDIAN # endif #endif // __sun__ @@ -269,6 +275,8 @@ // random data even when using sandboxing mechanisms such as chroots, // Capsicum, etc. # define _LIBCPP_USING_ARC4_RANDOM +#elif defined(__Fuchsia__) +# define _LIBCPP_USING_GETENTROPY #elif defined(__native_client__) // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, // including accesses to the special files under /dev. C++11's @@ -280,18 +288,16 @@ # define _LIBCPP_USING_DEV_RANDOM #endif -#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) +#if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) # include # if __BYTE_ORDER == __LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 +# define _LIBCPP_LITTLE_ENDIAN # elif __BYTE_ORDER == __BIG_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 +# define _LIBCPP_BIG_ENDIAN # else // __BYTE_ORDER == __BIG_ENDIAN # error unable to determine endian # endif -#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) +#endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) #if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) #define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) @@ -454,6 +460,10 @@ namespace std { #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) #endif +#if __has_builtin(__builtin_launder) +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#endif + #elif defined(_LIBCPP_COMPILER_GCC) #define _ALIGNAS(x) __attribute__((__aligned__(x))) @@ -536,6 +546,10 @@ namespace std { #define _LIBCPP_HAS_NO_ASAN #endif +#if _GNUC_VER >= 700 +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#endif + #elif defined(_LIBCPP_COMPILER_MSVC) #define _LIBCPP_TOSTRING2(x) #x @@ -880,7 +894,7 @@ template struct __static_assert_check {}; #define _LIBCPP_NONUNIQUE_RTTI_BIT (1ULL << 63) #endif -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT) || \ +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || \ defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) #define _LIBCPP_LOCALE__L_EXTENSIONS 1 #endif @@ -954,6 +968,18 @@ template struct __static_assert_check {}; #define _LIBCPP_CONSTEXPR_AFTER_CXX14 #endif +#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +#define _LIBCPP_CONSTEXPR_AFTER_CXX17 constexpr +#else +#define _LIBCPP_CONSTEXPR_AFTER_CXX17 +#endif + +#if __has_cpp_attribute(nodiscard) && _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_DISABLE_NODISCARD_AFTER_CXX17) +#define _LIBCPP_NODISCARD_AFTER_CXX17 [[nodiscard]] +#else +#define _LIBCPP_NODISCARD_AFTER_CXX17 +#endif + // FIXME: Remove all usages of this macro once compilers catch up. #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606L) # define _LIBCPP_HAS_NO_INLINE_VARIABLES @@ -1241,6 +1267,13 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_ # endif #endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) +#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) +# if defined(_DLL) +# pragma(lib, "c++.lib") +# else +# pragma(lib, "libc++.lib") +# endif +#endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) #endif // __cplusplus Modified: projects/clang600-import/contrib/libc++/include/__libcpp_version ============================================================================== --- projects/clang600-import/contrib/libc++/include/__libcpp_version Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/__libcpp_version Wed Dec 20 19:16:11 2017 (r327039) @@ -1 +1 @@ -5000 +6000 Modified: projects/clang600-import/contrib/libc++/include/__locale ============================================================================== --- projects/clang600-import/contrib/libc++/include/__locale Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/__locale Wed Dec 20 19:16:11 2017 (r327039) @@ -49,7 +49,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -#if !defined(_LIBCPP_LOCALE__L_EXTENSIONS) || defined(_LIBCPP_MSVCRT) +#if !defined(_LIBCPP_LOCALE__L_EXTENSIONS) struct __libcpp_locale_guard { _LIBCPP_INLINE_VISIBILITY __libcpp_locale_guard(locale_t& __loc) : __old_loc_(uselocale(__loc)) {} @@ -64,6 +64,32 @@ struct __libcpp_locale_guard { private: __libcpp_locale_guard(__libcpp_locale_guard const&); __libcpp_locale_guard& operator=(__libcpp_locale_guard const&); +}; +#elif defined(_LIBCPP_MSVCRT_LIKE) +struct __libcpp_locale_guard { + __libcpp_locale_guard(locale_t __l) : + __status(_configthreadlocale(_ENABLE_PER_THREAD_LOCALE)), + __locale_collate(setlocale(LC_COLLATE, __l.__get_locale())), + __locale_ctype(setlocale(LC_CTYPE, __l.__get_locale())), + __locale_monetary(setlocale(LC_MONETARY, __l.__get_locale())), + __locale_numeric(setlocale(LC_NUMERIC, __l.__get_locale())), + __locale_time(setlocale(LC_TIME, __l.__get_locale())) + // LC_MESSAGES is not supported on Windows. + {} + ~__libcpp_locale_guard() { + setlocale(LC_COLLATE, __locale_collate); + setlocale(LC_CTYPE, __locale_ctype); + setlocale(LC_MONETARY, __locale_monetary); + setlocale(LC_NUMERIC, __locale_numeric); + setlocale(LC_TIME, __locale_time); + _configthreadlocale(__status); + } + int __status; + char* __locale_collate; + char* __locale_ctype; + char* __locale_monetary; + char* __locale_numeric; + char* __locale_time; }; #endif Modified: projects/clang600-import/contrib/libc++/include/__tree ============================================================================== --- projects/clang600-import/contrib/libc++/include/__tree Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/__tree Wed Dec 20 19:16:11 2017 (r327039) @@ -84,7 +84,7 @@ __tree_is_left_child(_NodePtr __x) _NOEXCEPT return __x == __x->__parent_->__left_; } -// Determintes if the subtree rooted at __x is a proper red black subtree. If +// Determines if the subtree rooted at __x is a proper red black subtree. If // __x is a proper subtree, returns the black height (null counts as 1). If // __x is an improper subtree, returns 0. template @@ -119,7 +119,7 @@ __tree_sub_invariant(_NodePtr __x) return __h + __x->__is_black_; // return black height of this node } -// Determintes if the red black tree rooted at __root is a proper red black tree. +// Determines if the red black tree rooted at __root is a proper red black tree. // __root == nullptr is a proper tree. Returns true is __root is a proper // red black tree, else returns false. template Modified: projects/clang600-import/contrib/libc++/include/algorithm ============================================================================== --- projects/clang600-import/contrib/libc++/include/algorithm Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/algorithm Wed Dec 20 19:16:11 2017 (r327039) @@ -734,15 +734,15 @@ struct __less<_T1, const _T1> }; template -class __negate +class __invert // invert the sense of a comparison { private: _Predicate __p_; public: - _LIBCPP_INLINE_VISIBILITY __negate() {} + _LIBCPP_INLINE_VISIBILITY __invert() {} _LIBCPP_INLINE_VISIBILITY - explicit __negate(_Predicate __p) : __p_(__p) {} + explicit __invert(_Predicate __p) : __p_(__p) {} template _LIBCPP_INLINE_VISIBILITY @@ -750,7 +750,7 @@ class __negate (public) template _LIBCPP_INLINE_VISIBILITY - bool operator()(const _T1& __x, const _T2& __y) {return !__p_(__x, __y);} + bool operator()(const _T1& __x, const _T2& __y) {return __p_(__y, __x);} }; #ifdef _LIBCPP_DEBUG @@ -797,7 +797,7 @@ unsigned __ctz(unsigned __x) { unsigned long where; // Search from LSB to MSB for first set bit. // Returns zero if no set bit is found. - if (_BitScanForward(&where, mask)) + if (_BitScanForward(&where, __x)) return where; return 32; #endif @@ -823,15 +823,15 @@ unsigned long long __ctz(unsigned long long __x) { // Returns zero if no set bit is found. #if defined(_LIBCPP_HAS_BITSCAN64) (defined(_M_AMD64) || defined(__x86_64__)) - if (_BitScanForward64(&where, mask)) + if (_BitScanForward64(&where, __x)) return static_cast(where); #else // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit calls. // Scan the Low Word. - if (_BitScanForward(&where, static_cast(mask))) + if (_BitScanForward(&where, static_cast(__x))) return where; // Scan the High Word. - if (_BitScanForward(&where, static_cast(mask >> 32))) + if (_BitScanForward(&where, static_cast(__x >> 32))) return where + 32; // Create a bit offset from the LSB. #endif return 64; @@ -849,7 +849,7 @@ unsigned __clz(unsigned __x) { unsigned long where; // Search from LSB to MSB for first set bit. // Returns zero if no set bit is found. - if (_BitScanReverse(&where, mask)) + if (_BitScanReverse(&where, __x)) return 31 - where; return 32; // Undefined Behavior. #endif @@ -874,14 +874,14 @@ unsigned long long __clz(unsigned long long __x) { // BitScanReverse scans from MSB to LSB for first set bit. // Returns 0 if no set bit is found. #if defined(_LIBCPP_HAS_BITSCAN64) - if (_BitScanReverse64(&where, mask)) + if (_BitScanReverse64(&where, __x)) return static_cast(63 - where); #else // Scan the high 32 bits. - if (_BitScanReverse(&where, static_cast(mask >> 32))) + if (_BitScanReverse(&where, static_cast(__x >> 32))) return 63 - (where + 32); // Create a bit offset from the MSB. // Scan the low 32 bits. - if (_BitScanReverse(&where, static_cast(mask))) + if (_BitScanReverse(&where, static_cast(__x))) return 63 - where; #endif return 64; // Undefined Behavior. @@ -3210,28 +3210,28 @@ template _LIBCPP_INLINE_VISIBILITY _SampleIterator __sample(_PopulationIterator __first, - _PopulationIterator __last, _SampleIterator __output, + _PopulationIterator __last, _SampleIterator __output_iter, _Distance __n, _UniformRandomNumberGenerator & __g, input_iterator_tag) { _Distance __k = 0; for (; __first != __last && __k < __n; ++__first, (void)++__k) - __output[__k] = *__first; + __output_iter[__k] = *__first; _Distance __sz = __k; for (; __first != __last; ++__first, (void)++__k) { _Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, __k)(__g); if (__r < __sz) - __output[__r] = *__first; + __output_iter[__r] = *__first; } - return __output + _VSTD::min(__n, __k); + return __output_iter + _VSTD::min(__n, __k); } template _LIBCPP_INLINE_VISIBILITY _SampleIterator __sample(_PopulationIterator __first, - _PopulationIterator __last, _SampleIterator __output, + _PopulationIterator __last, _SampleIterator __output_iter, _Distance __n, _UniformRandomNumberGenerator& __g, forward_iterator_tag) { @@ -3240,18 +3240,18 @@ _SampleIterator __sample(_PopulationIterator __first, _Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g); if (__r < __n) { - *__output++ = *__first; + *__output_iter++ = *__first; --__n; } } - return __output; + return __output_iter; } template _LIBCPP_INLINE_VISIBILITY _SampleIterator __sample(_PopulationIterator __first, - _PopulationIterator __last, _SampleIterator __output, + _PopulationIterator __last, _SampleIterator __output_iter, _Distance __n, _UniformRandomNumberGenerator& __g) { typedef typename iterator_traits<_PopulationIterator>::iterator_category _PopCategory; @@ -3263,7 +3263,7 @@ _SampleIterator __sample(_PopulationIterator __first, typedef typename common_type<_Distance, _Difference>::type _CommonType; _LIBCPP_ASSERT(__n >= 0, "N must be a positive number."); return _VSTD::__sample( - __first, __last, __output, _CommonType(__n), + __first, __last, __output_iter, _CommonType(__n), __g, _PopCategory()); } @@ -3272,9 +3272,9 @@ template inline _LIBCPP_INLINE_VISIBILITY _SampleIterator sample(_PopulationIterator __first, - _PopulationIterator __last, _SampleIterator __output, + _PopulationIterator __last, _SampleIterator __output_iter, _Distance __n, _UniformRandomNumberGenerator&& __g) { - return _VSTD::__sample(__first, __last, __output, __n, __g); + return _VSTD::__sample(__first, __last, __output_iter, __n, __g); } #endif // _LIBCPP_STD_VER > 14 @@ -4568,7 +4568,7 @@ __buffered_inplace_merge(_BidirectionalIterator __firs typedef reverse_iterator _Rv; __half_inplace_merge(_Rv(__p), _Rv(__buff), _RBi(__middle), _RBi(__first), - _RBi(__last), __negate<_Compare>(__comp)); + _RBi(__last), __invert<_Compare>(__comp)); } } @@ -5547,9 +5547,9 @@ __set_union(_InputIterator1 __first1, _InputIterator1 } else { - *__result = *__first1; if (!__comp(*__first1, *__first2)) ++__first2; + *__result = *__first1; ++__first1; } } Modified: projects/clang600-import/contrib/libc++/include/array ============================================================================== --- projects/clang600-import/contrib/libc++/include/array Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/array Wed Dec 20 19:16:11 2017 (r327039) @@ -183,7 +183,7 @@ struct _LIBCPP_TEMPLATE_VIS array _LIBCPP_CONSTEXPR size_type size() const _NOEXCEPT {return _Size;} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR size_type max_size() const _NOEXCEPT {return _Size;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bool empty() const _NOEXCEPT {return _Size == 0;} // element access: Modified: projects/clang600-import/contrib/libc++/include/bitset ============================================================================== --- projects/clang600-import/contrib/libc++/include/bitset Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/bitset Wed Dec 20 19:16:11 2017 (r327039) @@ -235,8 +235,13 @@ void __bitset<_N_words, _Size>::__init(unsigned long long __v, false_type) _NOEXCEPT { __storage_type __t[sizeof(unsigned long long) / sizeof(__storage_type)]; - for (size_t __i = 0; __i < sizeof(__t)/sizeof(__t[0]); ++__i, __v >>= __bits_per_word) - __t[__i] = static_cast<__storage_type>(__v); + size_t __sz = _Size; + for (size_t __i = 0; __i < sizeof(__t)/sizeof(__t[0]); ++__i, __v >>= __bits_per_word, __sz -= __bits_per_word ) + if ( __sz < __bits_per_word) + __t[__i] = static_cast<__storage_type>(__v) & ( 1ULL << __sz ) - 1; + else + __t[__i] = static_cast<__storage_type>(__v); + _VSTD::copy(__t, __t + sizeof(__t)/sizeof(__t[0]), __first_); _VSTD::fill(__first_ + sizeof(__t)/sizeof(__t[0]), __first_ + sizeof(__first_)/sizeof(__first_[0]), __storage_type(0)); @@ -248,6 +253,9 @@ void __bitset<_N_words, _Size>::__init(unsigned long long __v, true_type) _NOEXCEPT { __first_[0] = __v; + if (_Size < __bits_per_word) + __first_[0] &= ( 1ULL << _Size ) - 1; + _VSTD::fill(__first_ + 1, __first_ + sizeof(__first_)/sizeof(__first_[0]), __storage_type(0)); } @@ -261,7 +269,9 @@ __bitset<_N_words, _Size>::__bitset(unsigned long long #if __SIZEOF_SIZE_T__ == 8 : __first_{__v} #elif __SIZEOF_SIZE_T__ == 4 - : __first_{static_cast<__storage_type>(__v), static_cast<__storage_type>(__v >> __bits_per_word)} + : __first_{static_cast<__storage_type>(__v), + _Size >= 2 * __bits_per_word ? static_cast<__storage_type>(__v >> __bits_per_word) + : static_cast<__storage_type>((__v >> __bits_per_word) & (__storage_type(1) << (_Size - __bits_per_word)) - 1)} #else #error This constructor has not been ported to this platform #endif @@ -503,7 +513,10 @@ template inline _LIBCPP_CONSTEXPR __bitset<1, _Size>::__bitset(unsigned long long __v) _NOEXCEPT - : __first_(static_cast<__storage_type>(__v)) + : __first_( + _Size == __bits_per_word ? static_cast<__storage_type>(__v) + : static_cast<__storage_type>(__v) & ((__storage_type(1) << _Size) - 1) + ) { } Modified: projects/clang600-import/contrib/libc++/include/chrono ============================================================================== --- projects/clang600-import/contrib/libc++/include/chrono Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/chrono Wed Dec 20 19:16:11 2017 (r327039) @@ -283,18 +283,18 @@ typedef steady_clock high_resolution_clock; } // chrono -constexpr chrono::hours operator "" h(unsigned long long); // C++14 -constexpr chrono::duration> operator "" h(long double); // C++14 -constexpr chrono::minutes operator "" min(unsigned long long); // C++14 -constexpr chrono::duration> operator "" min(long double); // C++14 -constexpr chrono::seconds operator "" s(unsigned long long); // C++14 -constexpr chrono::duration operator "" s(long double); // C++14 -constexpr chrono::milliseconds operator "" ms(unsigned long long); // C++14 -constexpr chrono::duration operator "" ms(long double); // C++14 -constexpr chrono::microseconds operator "" us(unsigned long long); // C++14 -constexpr chrono::duration operator "" us(long double); // C++14 -constexpr chrono::nanoseconds operator "" ns(unsigned long long); // C++14 -constexpr chrono::duration operator "" ns(long double); // C++14 +constexpr chrono::hours operator ""h(unsigned long long); // C++14 +constexpr chrono::duration> operator ""h(long double); // C++14 +constexpr chrono::minutes operator ""min(unsigned long long); // C++14 +constexpr chrono::duration> operator ""min(long double); // C++14 +constexpr chrono::seconds operator ""s(unsigned long long); // C++14 +constexpr chrono::duration operator ""s(long double); // C++14 +constexpr chrono::milliseconds operator ""ms(unsigned long long); // C++14 +constexpr chrono::duration operator ""ms(long double); // C++14 +constexpr chrono::microseconds operator ""us(unsigned long long); // C++14 +constexpr chrono::duration operator ""us(long double); // C++14 +constexpr chrono::nanoseconds operator ""ns(unsigned long long); // C++14 +constexpr chrono::duration operator ""ns(long double); // C++14 } // std */ @@ -1087,67 +1087,67 @@ inline namespace literals inline namespace chrono_literals { - constexpr chrono::hours operator"" h(unsigned long long __h) + constexpr chrono::hours operator""h(unsigned long long __h) { return chrono::hours(static_cast(__h)); } - constexpr chrono::duration> operator"" h(long double __h) + constexpr chrono::duration> operator""h(long double __h) { return chrono::duration>(__h); } - constexpr chrono::minutes operator"" min(unsigned long long __m) + constexpr chrono::minutes operator""min(unsigned long long __m) { return chrono::minutes(static_cast(__m)); } - constexpr chrono::duration> operator"" min(long double __m) + constexpr chrono::duration> operator""min(long double __m) { return chrono::duration> (__m); } - constexpr chrono::seconds operator"" s(unsigned long long __s) + constexpr chrono::seconds operator""s(unsigned long long __s) { return chrono::seconds(static_cast(__s)); } - constexpr chrono::duration operator"" s(long double __s) + constexpr chrono::duration operator""s(long double __s) { return chrono::duration (__s); } - constexpr chrono::milliseconds operator"" ms(unsigned long long __ms) + constexpr chrono::milliseconds operator""ms(unsigned long long __ms) { return chrono::milliseconds(static_cast(__ms)); } - constexpr chrono::duration operator"" ms(long double __ms) + constexpr chrono::duration operator""ms(long double __ms) { return chrono::duration(__ms); } - constexpr chrono::microseconds operator"" us(unsigned long long __us) + constexpr chrono::microseconds operator""us(unsigned long long __us) { return chrono::microseconds(static_cast(__us)); } - constexpr chrono::duration operator"" us(long double __us) + constexpr chrono::duration operator""us(long double __us) { return chrono::duration (__us); } - constexpr chrono::nanoseconds operator"" ns(unsigned long long __ns) + constexpr chrono::nanoseconds operator""ns(unsigned long long __ns) { return chrono::nanoseconds(static_cast(__ns)); } - constexpr chrono::duration operator"" ns(long double __ns) + constexpr chrono::duration operator""ns(long double __ns) { return chrono::duration (__ns); } Modified: projects/clang600-import/contrib/libc++/include/cstddef ============================================================================== --- projects/clang600-import/contrib/libc++/include/cstddef Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/cstddef Wed Dec 20 19:16:11 2017 (r327039) @@ -64,23 +64,46 @@ namespace std // purposefully not versioned { enum class byte : unsigned char {}; -constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept -{ return __lhs = byte(static_cast(__lhs) | static_cast(__rhs)); } constexpr byte operator| (byte __lhs, byte __rhs) noexcept -{ return byte(static_cast(__lhs) | static_cast(__rhs)); } +{ + return static_cast( + static_cast( + static_cast(__lhs) | static_cast(__rhs) + )); +} -constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept -{ return __lhs = byte(static_cast(__lhs) & static_cast(__rhs)); } +constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept +{ return __lhs = __lhs | __rhs; } + constexpr byte operator& (byte __lhs, byte __rhs) noexcept -{ return byte(static_cast(__lhs) & static_cast(__rhs)); } +{ + return static_cast( + static_cast( + static_cast(__lhs) & static_cast(__rhs) + )); +} -constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept -{ return __lhs = byte(static_cast(__lhs) ^ static_cast(__rhs)); } +constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept +{ return __lhs = __lhs & __rhs; } + constexpr byte operator^ (byte __lhs, byte __rhs) noexcept -{ return byte(static_cast(__lhs) ^ static_cast(__rhs)); } +{ + return static_cast( + static_cast( + static_cast(__lhs) ^ static_cast(__rhs) + )); +} +constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept +{ return __lhs = __lhs ^ __rhs; } + constexpr byte operator~ (byte __b) noexcept -{ return byte(~static_cast(__b)); } +{ + return static_cast( + static_cast( + ~static_cast(__b) + )); +} } Modified: projects/clang600-import/contrib/libc++/include/deque ============================================================================== --- projects/clang600-import/contrib/libc++/include/deque Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/deque Wed Dec 20 19:16:11 2017 (r327039) @@ -1314,7 +1314,7 @@ class _LIBCPP_TEMPLATE_VIS deque (public) void resize(size_type __n); void resize(size_type __n, const value_type& __v); void shrink_to_fit() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY bool empty() const _NOEXCEPT {return __base::size() == 0;} // element access: Modified: projects/clang600-import/contrib/libc++/include/exception ============================================================================== --- projects/clang600-import/contrib/libc++/include/exception Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/exception Wed Dec 20 19:16:11 2017 (r327039) @@ -82,7 +82,7 @@ template void rethrow_if_nested(const E& e); #include #include -#if defined(_LIBCPP_ABI_MICROSOFT) +#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME) #include #endif @@ -93,7 +93,7 @@ template void rethrow_if_nested(const E& e); namespace std // purposefully not using versioning namespace { -#if !defined(_LIBCPP_ABI_MICROSOFT) +#if !defined(_LIBCPP_ABI_MICROSOFT) || defined(_LIBCPP_NO_VCRUNTIME) class _LIBCPP_EXCEPTION_ABI exception { public: @@ -110,7 +110,7 @@ class _LIBCPP_EXCEPTION_ABI bad_exception (public) virtual ~bad_exception() _NOEXCEPT; virtual const char* what() const _NOEXCEPT; }; -#endif // !_LIBCPP_ABI_MICROSOFT +#endif // !_LIBCPP_ABI_MICROSOFT || _LIBCPP_NO_VCRUNTIME #if _LIBCPP_STD_VER <= 14 \ || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS) \ Modified: projects/clang600-import/contrib/libc++/include/experimental/algorithm ============================================================================== --- projects/clang600-import/contrib/libc++/include/experimental/algorithm Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/experimental/algorithm Wed Dec 20 19:16:11 2017 (r327039) @@ -61,9 +61,9 @@ template inline _LIBCPP_INLINE_VISIBILITY _SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last, - _SampleIterator __output, _Distance __n, + _SampleIterator __output_iter, _Distance __n, _UniformRandomNumberGenerator &&__g) { - return _VSTD::__sample(__first, __last, __output, __n, __g); + return _VSTD::__sample(__first, __last, __output_iter, __n, __g); } _LIBCPP_END_NAMESPACE_LFTS Modified: projects/clang600-import/contrib/libc++/include/experimental/filesystem ============================================================================== --- projects/clang600-import/contrib/libc++/include/experimental/filesystem Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/experimental/filesystem Wed Dec 20 19:16:11 2017 (r327039) @@ -81,10 +81,10 @@ path canonical(const path& p, const path& base, error_code& ec); void copy(const path& from, const path& to); - void copy(const path& from, const path& to, error_code& ec) _NOEXCEPT; + void copy(const path& from, const path& to, error_code& ec); void copy(const path& from, const path& to, copy_options options); void copy(const path& from, const path& to, copy_options options, - error_code& ec) _NOEXCEPT; + error_code& ec); bool copy_file(const path& from, const path& to); bool copy_file(const path& from, const path& to, error_code& ec) _NOEXCEPT; @@ -972,7 +972,8 @@ class _LIBCPP_TYPE_VIS path (public) _LIBCPP_INLINE_VISIBILITY path extension() const { return string_type(__extension()); } // query - _LIBCPP_INLINE_VISIBILITY bool empty() const _NOEXCEPT { return __pn_.empty(); } + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY + bool empty() const _NOEXCEPT { return __pn_.empty(); } _LIBCPP_INLINE_VISIBILITY bool has_root_name() const { return !__root_name().empty(); } _LIBCPP_INLINE_VISIBILITY bool has_root_directory() const { return !__root_directory().empty(); } @@ -1351,7 +1352,7 @@ void copy(const path& __from, const path& __to) { } inline _LIBCPP_INLINE_VISIBILITY -void copy(const path& __from, const path& __to, error_code& __ec) _NOEXCEPT { +void copy(const path& __from, const path& __to, error_code& __ec) { __copy(__from, __to, copy_options::none, &__ec); } @@ -1362,7 +1363,7 @@ void copy(const path& __from, const path& __to, copy_o inline _LIBCPP_INLINE_VISIBILITY void copy(const path& __from, const path& __to, - copy_options __opt, error_code& __ec) _NOEXCEPT { + copy_options __opt, error_code& __ec) { __copy(__from, __to, __opt, &__ec); } @@ -1561,7 +1562,7 @@ bool is_empty(const path& __p) { } inline _LIBCPP_INLINE_VISIBILITY -bool is_empty(const path& __p, error_code& __ec) _NOEXCEPT { +bool is_empty(const path& __p, error_code& __ec) { return __fs_is_empty(__p, &__ec); } @@ -1903,12 +1904,12 @@ class directory_iterator (public) : directory_iterator(__p, nullptr, __opts) { } - directory_iterator(const path& __p, error_code& __ec) _NOEXCEPT + directory_iterator(const path& __p, error_code& __ec) : directory_iterator(__p, &__ec) { } directory_iterator(const path& __p, directory_options __opts, - error_code& __ec) _NOEXCEPT + error_code& __ec) : directory_iterator(__p, &__ec, __opts) { } @@ -1943,7 +1944,7 @@ class directory_iterator (public) return __p; } - directory_iterator& increment(error_code& __ec) _NOEXCEPT + directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } private: @@ -2013,12 +2014,12 @@ class recursive_directory_iterator { (public) _LIBCPP_INLINE_VISIBILITY recursive_directory_iterator(const path& __p, - directory_options __xoptions, error_code& __ec) _NOEXCEPT + directory_options __xoptions, error_code& __ec) : recursive_directory_iterator(__p, __xoptions, &__ec) { } _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator(const path& __p, error_code& __ec) _NOEXCEPT + recursive_directory_iterator(const path& __p, error_code& __ec) : recursive_directory_iterator(__p, directory_options::none, &__ec) { } @@ -2060,7 +2061,7 @@ class recursive_directory_iterator { (public) } _LIBCPP_INLINE_VISIBILITY - recursive_directory_iterator& increment(error_code& __ec) _NOEXCEPT + recursive_directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } _LIBCPP_FUNC_VIS directory_options options() const; Modified: projects/clang600-import/contrib/libc++/include/experimental/iterator ============================================================================== --- projects/clang600-import/contrib/libc++/include/experimental/iterator Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/experimental/iterator Wed Dec 20 19:16:11 2017 (r327039) @@ -75,19 +75,19 @@ class ostream_joiner { (public) typedef void reference; ostream_joiner(ostream_type& __os, _Delim&& __d) - : __output(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {} + : __output_iter(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {} ostream_joiner(ostream_type& __os, const _Delim& __d) - : __output(_VSTD::addressof(__os)), __delim(__d), __first(true) {} + : __output_iter(_VSTD::addressof(__os)), __delim(__d), __first(true) {} template ostream_joiner& operator=(const _Tp& __v) { if (!__first) - *__output << __delim; + *__output_iter << __delim; __first = false; - *__output << __v; + *__output_iter << __v; return *this; } @@ -96,7 +96,7 @@ class ostream_joiner { (public) ostream_joiner& operator++(int) _NOEXCEPT { return *this; } private: - ostream_type* __output; + ostream_type* __output_iter; _Delim __delim; bool __first; }; Modified: projects/clang600-import/contrib/libc++/include/forward_list ============================================================================== --- projects/clang600-import/contrib/libc++/include/forward_list Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/forward_list Wed Dec 20 19:16:11 2017 (r327039) @@ -728,7 +728,7 @@ class _LIBCPP_TEMPLATE_VIS forward_list (public) const_iterator cbefore_begin() const _NOEXCEPT {return const_iterator(base::__before_begin());} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY bool empty() const _NOEXCEPT {return base::__before_begin()->__next_ == nullptr;} _LIBCPP_INLINE_VISIBILITY Modified: projects/clang600-import/contrib/libc++/include/fstream ============================================================================== --- projects/clang600-import/contrib/libc++/include/fstream Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/fstream Wed Dec 20 19:16:11 2017 (r327039) @@ -315,7 +315,7 @@ basic_filebuf<_CharT, _Traits>::basic_filebuf(basic_fi else this->setp((char_type*)__extbuf_, (char_type*)__extbuf_ + (__rhs. epptr() - __rhs.pbase())); - this->pbump(__rhs. pptr() - __rhs.pbase()); + this->__pbump(__rhs. pptr() - __rhs.pbase()); } else if (__rhs.eback()) { @@ -434,7 +434,7 @@ basic_filebuf<_CharT, _Traits>::swap(basic_filebuf& __ ptrdiff_t __e = this->epptr() - this->pbase(); this->setp((char_type*)__extbuf_min_, (char_type*)__extbuf_min_ + __e); - this->pbump(__n); + this->__pbump(__n); } if (__rhs.eback() == (char_type*)__extbuf_min_) { @@ -450,7 +450,7 @@ basic_filebuf<_CharT, _Traits>::swap(basic_filebuf& __ ptrdiff_t __e = __rhs.epptr() - __rhs.pbase(); __rhs.setp((char_type*)__rhs.__extbuf_min_, (char_type*)__rhs.__extbuf_min_ + __e); - __rhs.pbump(__n); + __rhs.__pbump(__n); } } @@ -724,7 +724,7 @@ basic_filebuf<_CharT, _Traits>::overflow(int_type __c) if (__r == codecvt_base::partial) { this->setp(const_cast(__e), this->pptr()); - this->pbump(this->epptr() - this->pbase()); + this->__pbump(this->epptr() - this->pbase()); } } else Modified: projects/clang600-import/contrib/libc++/include/future ============================================================================== --- projects/clang600-import/contrib/libc++/include/future Wed Dec 20 19:14:20 2017 (r327038) +++ projects/clang600-import/contrib/libc++/include/future Wed Dec 20 19:16:11 2017 (r327039) @@ -2335,6 +2335,7 @@ inline _LIBCPP_INLINE_VISIBILITY bool __does_policy_co { return (int(__policy) & int(__value)) != 0; } template *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***