svn commit: r317287 - in projects/clang500-import: contrib/libc++ contrib/libc++/include contrib/libc++/include/experimental contrib/libc++/include/ext contrib/libc++/src contrib/libc++/src/experim...
Dimitry Andric
dim at FreeBSD.org
Sat Apr 22 18:59:53 UTC 2017
Author: dim
Date: Sat Apr 22 18:59:50 2017
New Revision: 317287
URL: https://svnweb.freebsd.org/changeset/base/317287
Log:
Merge libc++ trunk r300890, and update build glue.
Added:
projects/clang500-import/contrib/libc++/src/functional.cpp
- copied unchanged from r317285, vendor/libc++/dist/src/functional.cpp
projects/clang500-import/contrib/libc++/src/support/
- copied from r317285, vendor/libc++/dist/src/support/
Deleted:
projects/clang500-import/contrib/libc++/src/support/solaris/
projects/clang500-import/contrib/libc++/src/support/win32/
Modified:
projects/clang500-import/contrib/libc++/CREDITS.TXT
projects/clang500-import/contrib/libc++/include/__config
projects/clang500-import/contrib/libc++/include/__debug
projects/clang500-import/contrib/libc++/include/__functional_base
projects/clang500-import/contrib/libc++/include/__hash_table
projects/clang500-import/contrib/libc++/include/__libcpp_version
projects/clang500-import/contrib/libc++/include/__locale
projects/clang500-import/contrib/libc++/include/__mutex_base
projects/clang500-import/contrib/libc++/include/__split_buffer
projects/clang500-import/contrib/libc++/include/__threading_support
projects/clang500-import/contrib/libc++/include/__tree
projects/clang500-import/contrib/libc++/include/__tuple
projects/clang500-import/contrib/libc++/include/__undef_min_max
projects/clang500-import/contrib/libc++/include/algorithm
projects/clang500-import/contrib/libc++/include/any
projects/clang500-import/contrib/libc++/include/array
projects/clang500-import/contrib/libc++/include/atomic
projects/clang500-import/contrib/libc++/include/bitset
projects/clang500-import/contrib/libc++/include/chrono
projects/clang500-import/contrib/libc++/include/cmath
projects/clang500-import/contrib/libc++/include/condition_variable
projects/clang500-import/contrib/libc++/include/cstddef
projects/clang500-import/contrib/libc++/include/cstdio
projects/clang500-import/contrib/libc++/include/cstdlib
projects/clang500-import/contrib/libc++/include/deque
projects/clang500-import/contrib/libc++/include/exception
projects/clang500-import/contrib/libc++/include/experimental/filesystem
projects/clang500-import/contrib/libc++/include/experimental/memory_resource
projects/clang500-import/contrib/libc++/include/experimental/numeric
projects/clang500-import/contrib/libc++/include/ext/hash_map
projects/clang500-import/contrib/libc++/include/ext/hash_set
projects/clang500-import/contrib/libc++/include/forward_list
projects/clang500-import/contrib/libc++/include/fstream
projects/clang500-import/contrib/libc++/include/functional
projects/clang500-import/contrib/libc++/include/future
projects/clang500-import/contrib/libc++/include/initializer_list
projects/clang500-import/contrib/libc++/include/ios
projects/clang500-import/contrib/libc++/include/istream
projects/clang500-import/contrib/libc++/include/iterator
projects/clang500-import/contrib/libc++/include/limits
projects/clang500-import/contrib/libc++/include/list
projects/clang500-import/contrib/libc++/include/locale
projects/clang500-import/contrib/libc++/include/map
projects/clang500-import/contrib/libc++/include/math.h
projects/clang500-import/contrib/libc++/include/memory
projects/clang500-import/contrib/libc++/include/mutex
projects/clang500-import/contrib/libc++/include/new
projects/clang500-import/contrib/libc++/include/numeric
projects/clang500-import/contrib/libc++/include/optional
projects/clang500-import/contrib/libc++/include/ostream
projects/clang500-import/contrib/libc++/include/queue
projects/clang500-import/contrib/libc++/include/random
projects/clang500-import/contrib/libc++/include/regex
projects/clang500-import/contrib/libc++/include/set
projects/clang500-import/contrib/libc++/include/shared_mutex
projects/clang500-import/contrib/libc++/include/sstream
projects/clang500-import/contrib/libc++/include/stack
projects/clang500-import/contrib/libc++/include/stddef.h
projects/clang500-import/contrib/libc++/include/string
projects/clang500-import/contrib/libc++/include/string_view
projects/clang500-import/contrib/libc++/include/strstream
projects/clang500-import/contrib/libc++/include/system_error
projects/clang500-import/contrib/libc++/include/thread
projects/clang500-import/contrib/libc++/include/tuple
projects/clang500-import/contrib/libc++/include/type_traits
projects/clang500-import/contrib/libc++/include/typeinfo
projects/clang500-import/contrib/libc++/include/unordered_map
projects/clang500-import/contrib/libc++/include/unordered_set
projects/clang500-import/contrib/libc++/include/utility
projects/clang500-import/contrib/libc++/include/valarray
projects/clang500-import/contrib/libc++/include/variant
projects/clang500-import/contrib/libc++/include/vector
projects/clang500-import/contrib/libc++/src/condition_variable.cpp
projects/clang500-import/contrib/libc++/src/exception.cpp
projects/clang500-import/contrib/libc++/src/experimental/filesystem/directory_iterator.cpp
projects/clang500-import/contrib/libc++/src/experimental/filesystem/operations.cpp
projects/clang500-import/contrib/libc++/src/experimental/filesystem/path.cpp
projects/clang500-import/contrib/libc++/src/include/atomic_support.h
projects/clang500-import/contrib/libc++/src/iostream.cpp
projects/clang500-import/contrib/libc++/src/locale.cpp
projects/clang500-import/contrib/libc++/src/memory.cpp
projects/clang500-import/contrib/libc++/src/mutex.cpp
projects/clang500-import/contrib/libc++/src/new.cpp
projects/clang500-import/contrib/libc++/src/system_error.cpp
projects/clang500-import/contrib/libc++/src/thread.cpp
projects/clang500-import/contrib/libc++/src/typeinfo.cpp
projects/clang500-import/lib/libc++/Makefile
Directory Properties:
projects/clang500-import/contrib/libc++/ (props changed)
Modified: projects/clang500-import/contrib/libc++/CREDITS.TXT
==============================================================================
--- projects/clang500-import/contrib/libc++/CREDITS.TXT Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/CREDITS.TXT Sat Apr 22 18:59:50 2017 (r317287)
@@ -81,7 +81,7 @@ E: andrew.c.morrow at gmail.com
D: Minor patches and Linux fixes.
N: Michael Park
-E: mpark at apache.org
+E: mcypark at gmail.com
D: Implementation of <variant>.
N: Arvid Picciani
Modified: projects/clang500-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__config Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__config Sat Apr 22 18:59:50 2017 (r317287)
@@ -12,8 +12,10 @@
#define _LIBCPP_CONFIG
#if defined(_MSC_VER) && !defined(__clang__)
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#endif
+#endif
#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#pragma GCC system_header
@@ -23,16 +25,30 @@
#ifdef __GNUC__
#define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__)
+// The _GNUC_VER_NEW macro better represents the new GCC versioning scheme
+// introduced in GCC 5.0.
+#define _GNUC_VER_NEW (_GNUC_VER * 10 + __GNUC_PATCHLEVEL__)
#else
#define _GNUC_VER 0
+#define _GNUC_VER_NEW 0
#endif
-#define _LIBCPP_VERSION 4000
+#define _LIBCPP_VERSION 5000
#ifndef _LIBCPP_ABI_VERSION
#define _LIBCPP_ABI_VERSION 1
#endif
+#if defined(__ELF__)
+#define _LIBCPP_OBJECT_FORMAT_ELF 1
+#elif defined(__MACH__)
+#define _LIBCPP_OBJECT_FORMAT_MACHO 1
+#elif defined(_WIN32)
+#define _LIBCPP_OBJECT_FORMAT_COFF 1
+#else
+#error Unknown object file format
+#endif
+
#if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2
// Change short string representation so that string data starts at offset 0,
// improving its alignment in some cases.
@@ -47,7 +63,6 @@
#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
-#define _LIBCPP_ABI_VARIADIC_LOCK_GUARD
// Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr
// provided under the alternate keyword __nullptr, which changes the mangling
// of nullptr_t. This option is ABI incompatible with GCC in C++03 mode.
@@ -57,10 +72,18 @@
// `pointer_safety` and `get_pointer_safety()` will no longer be available
// in C++03.
#define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE
+// Define a key function for `bad_function_call` in the library, to centralize
+// 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
#elif _LIBCPP_ABI_VERSION == 1
-#if !defined(_WIN32)
-// Enable compiling a definition of error_category() into the libc++ dylib.
-#define _LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR
+#if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
+// Enable compiling copies of now inline methods into the dylib to support
+// applications compiled against older libraries. This is unnecessary with
+// COFF dllexport semantics, since dllexport forces a non-inline definition
+// of inline functions to be emitted anyway. Our own non-inline copy would
+// conflict with the dllexport-emitted copy, so we disable it.
+#define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS
#endif
// Feature macros for disabling pre ABI v1 features. All of these options
// are deprecated.
@@ -100,6 +123,11 @@
#ifndef __is_identifier
#define __is_identifier(__x) 1
#endif
+#ifndef __has_declspec_attribute
+#define __has_declspec_attribute(__x) 0
+#endif
+
+#define __has_keyword(__x) !(__is_identifier(__x))
#if defined(__clang__)
#define _LIBCPP_COMPILER_CLANG
@@ -115,7 +143,7 @@
#endif
#ifndef _LIBCPP_CLANG_VER
-# define _LIBCPP_CLANG_VER 0
+#define _LIBCPP_CLANG_VER 0
#endif
// FIXME: ABI detection should be done via compiler builtin macros. This
@@ -190,7 +218,6 @@
# define _LIBCPP_LITTLE_ENDIAN 1
# define _LIBCPP_BIG_ENDIAN 0
# define _LIBCPP_SHORT_WCHAR 1
-
// If mingw not explicitly detected, assume using MS C runtime only.
# ifndef __MINGW32__
# define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
@@ -198,6 +225,19 @@
# if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__))
# define _LIBCPP_HAS_BITSCAN64
# endif
+# if defined(_LIBCPP_MSVCRT)
+# define _LIBCPP_HAS_QUICK_EXIT
+# endif
+
+// Some CRT APIs are unavailable to store apps
+#if defined(WINAPI_FAMILY)
+#include <winapifamily.h>
+#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \
+ (!defined(WINAPI_PARTITION_SYSTEM) || \
+ !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTEM))
+#define _LIBCPP_WINDOWS_STORE_APP
+#endif
+#endif
#endif // defined(_WIN32)
#ifdef __sun__
@@ -252,7 +292,7 @@
// _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
// _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility.
#if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && \
- !defined(__arm__)) || \
+ (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) || \
defined(_LIBCPP_ALTERNATE_STRING_LAYOUT)
#define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
#endif
@@ -297,7 +337,7 @@ typedef __char32_t char32_t;
#endif
#if !(__has_feature(cxx_nullptr))
-# if __has_extension(cxx_nullptr) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR)
+# if (__has_extension(cxx_nullptr) || __has_keyword(__nullptr)) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR)
# define nullptr __nullptr
# else
# define _LIBCPP_HAS_NO_NULLPTR
@@ -335,7 +375,6 @@ typedef __char32_t char32_t;
#if __has_feature(objc_arc_weak)
#define _LIBCPP_HAS_OBJC_ARC_WEAK
-#define _LIBCPP_HAS_NO_STRONG_ENUMS
#endif
#if !(__has_feature(cxx_constexpr))
@@ -472,14 +511,13 @@ namespace std {
#endif // __GXX_EXPERIMENTAL_CXX0X__
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE {
+#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_NAMESPACE {
#define _LIBCPP_END_NAMESPACE_STD } }
#define _VSTD std::_LIBCPP_NAMESPACE
namespace std {
-namespace _LIBCPP_NAMESPACE {
-}
-using namespace _LIBCPP_NAMESPACE __attribute__((__strong__));
+ inline namespace _LIBCPP_NAMESPACE {
+ }
}
#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__)
@@ -551,14 +589,6 @@ namespace std {
#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM]
-#if defined(__ELF__)
-#define _LIBCPP_OBJECT_FORMAT_ELF 1
-#elif defined(__MACH__)
-#define _LIBCPP_OBJECT_FORMAT_MACHO 1
-#else
-#define _LIBCPP_OBJECT_FORMAT_COFF 1
-#endif
-
#if defined(_LIBCPP_OBJECT_FORMAT_COFF)
#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
# define _LIBCPP_DLL_VIS
@@ -579,8 +609,10 @@ namespace std {
#define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS
+#define _LIBCPP_EXTERN_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS
#define _LIBCPP_HIDDEN
+#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#define _LIBCPP_TEMPLATE_VIS
#define _LIBCPP_FUNC_VIS_ONLY
#define _LIBCPP_ENUM_VIS
@@ -604,6 +636,15 @@ namespace std {
#endif
#endif
+#ifndef _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+// The inline should be removed once PR32114 is resolved
+#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN
+#else
+#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
+#endif
+#endif
+
#ifndef _LIBCPP_FUNC_VIS
#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default")))
@@ -614,24 +655,32 @@ namespace std {
#ifndef _LIBCPP_TYPE_VIS
# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
-# if __has_attribute(__type_visibility__)
-# define _LIBCPP_TYPE_VIS __attribute__ ((__type_visibility__("default")))
-# else
-# define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
-# endif
+# define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
# else
# define _LIBCPP_TYPE_VIS
# endif
#endif
#ifndef _LIBCPP_TEMPLATE_VIS
-# define _LIBCPP_TEMPLATE_VIS _LIBCPP_TYPE_VIS
+# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+# if __has_attribute(__type_visibility__)
+# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__type_visibility__("default")))
+# else
+# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__visibility__("default")))
+# endif
+# else
+# define _LIBCPP_TEMPLATE_VIS
+# endif
#endif
#ifndef _LIBCPP_FUNC_VIS_ONLY
# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS
#endif
+#ifndef _LIBCPP_EXTERN_VIS
+# define _LIBCPP_EXTERN_VIS
+#endif
+
#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS
#endif
@@ -654,7 +703,7 @@ namespace std {
#ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
-# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__type_visibility__("default")))
+# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default")))
# else
# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
# endif
@@ -739,7 +788,7 @@ template <unsigned> struct __static_asse
#ifdef _LIBCPP_HAS_NO_DECLTYPE
// GCC 4.6 provides __decltype in all standard modes.
-#if !__is_identifier(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= 406
+#if __has_keyword(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= 406
# define decltype(__x) __decltype(__x)
#else
# define decltype(__x) __typeof__(__x)
@@ -802,7 +851,14 @@ template <unsigned> struct __static_asse
# else
# error Supported values for _LIBCPP_DEBUG are 0 and 1
# endif
+# if !defined(_LIBCPP_BUILDING_LIBRARY)
# define _LIBCPP_EXTERN_TEMPLATE(...)
+# endif
+#endif
+
+#ifdef _LIBCPP_DISABLE_EXTERN_TEMPLATE
+#define _LIBCPP_EXTERN_TEMPLATE(...)
+#define _LIBCPP_EXTERN_TEMPLATE2(...)
#endif
#ifndef _LIBCPP_EXTERN_TEMPLATE
@@ -912,7 +968,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
# if defined(__GNUC__) && ((__GNUC__ >= 5) || (__GNUC__ == 4 && \
(__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && !defined(__GXX_RTTI)
# define _LIBCPP_NO_RTTI
-# elif (defined(_MSC_VER) && !defined(__clang__)) && !defined(_CPPRTTI)
+# elif defined(_LIBCPP_MSVC) && !defined(_CPPRTTI)
# define _LIBCPP_NO_RTTI
# endif
#endif
@@ -923,7 +979,8 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
// Thread API
#if !defined(_LIBCPP_HAS_NO_THREADS) && \
- !defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
+ !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \
+ !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
# if defined(__FreeBSD__) || \
defined(__Fuchsia__) || \
defined(__NetBSD__) || \
@@ -945,7 +1002,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#endif
#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
-# error _LIBCPP_HAS_EXTERNAL_THREAD_API may not be defined when \
+# error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \
_LIBCPP_HAS_NO_THREADS is defined.
#endif
@@ -970,7 +1027,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#endif
#if defined(__BIONIC__) || defined(__CloudABI__) || \
- defined(_LIBCPP_HAS_MUSL_LIBC)
+ defined(__Fuchsia__) || defined(_LIBCPP_HAS_MUSL_LIBC)
#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
#endif
@@ -980,7 +1037,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
#endif
-#if __has_feature(cxx_atomic) || __has_extension(c_atomic)
+#if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic)
#define _LIBCPP_HAS_C_ATOMIC_IMP
#elif _GNUC_VER > 407
#define _LIBCPP_HAS_GCC_ATOMIC_IMP
@@ -995,10 +1052,16 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
#endif
-#if (defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) && defined(__clang__) \
- && __has_attribute(acquire_capability))
+#if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS)
+#if defined(__clang__) && __has_attribute(acquire_capability)
+// Work around the attribute handling in clang. When both __declspec and
+// __attribute__ are present, the processing goes awry preventing the definition
+// of the types.
+#if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
#define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
#endif
+#endif
+#endif
#if __has_attribute(require_constant_initialization)
#define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__))
@@ -1007,7 +1070,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#endif
#if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700
-#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
+# define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
#endif
#if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS)
@@ -1016,6 +1079,38 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
#endif
#endif
+#if __has_attribute(diagnose_if) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS)
+# define _LIBCPP_DIAGNOSE_WARNING(...) \
+ __attribute__((diagnose_if(__VA_ARGS__, "warning")))
+# define _LIBCPP_DIAGNOSE_ERROR(...) \
+ __attribute__((diagnose_if(__VA_ARGS__, "error")))
+#else
+# define _LIBCPP_DIAGNOSE_WARNING(...)
+# define _LIBCPP_DIAGNOSE_ERROR(...)
+#endif
+
+#if defined(_LIBCPP_ABI_MICROSOFT) && \
+ (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases))
+# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
+#else
+# define _LIBCPP_DECLSPEC_EMPTY_BASES
+#endif
+
+#if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES)
+# define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR
+# define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS
+# define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE
+# define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS
+#endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES
+
+#if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611
+# define _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#endif
+
+#if !__has_keyword(__is_aggregate) && (_GNUC_VER_NEW < 7001)
+# define _LIBCPP_HAS_NO_IS_AGGREGATE
+#endif
+
#endif // __cplusplus
#endif // _LIBCPP_CONFIG
Modified: projects/clang500-import/contrib/libc++/include/__debug
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__debug Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__debug Sat Apr 22 18:59:50 2017 (r317287)
@@ -74,7 +74,7 @@ typedef void(*__libcpp_debug_function_ty
/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
/// fails.
-extern __libcpp_debug_function_type __libcpp_debug_function;
+extern _LIBCPP_EXTERN_VIS __libcpp_debug_function_type __libcpp_debug_function;
/// __libcpp_abort_debug_function - A debug handler that aborts when called.
_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
Modified: projects/clang500-import/contrib/libc++/include/__functional_base
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__functional_base Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__functional_base Sat Apr 22 18:59:50 2017 (r317287)
@@ -16,6 +16,7 @@
#include <typeinfo>
#include <exception>
#include <new>
+#include <utility>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
@@ -23,13 +24,6 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-template <class _Arg, class _Result>
-struct _LIBCPP_TEMPLATE_VIS unary_function
-{
- typedef _Arg argument_type;
- typedef _Result result_type;
-};
-
template <class _Arg1, class _Arg2, class _Result>
struct _LIBCPP_TEMPLATE_VIS binary_function
{
@@ -257,7 +251,7 @@ struct __weak_result_type<_Rp (_Cp::*)(_
};
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+#ifndef _LIBCPP_CXX03_LANG
// 3 or more arguments
template <class _Rp, class _A1, class _A2, class _A3, class ..._A4>
@@ -302,10 +296,6 @@ struct __weak_result_type<_Rp (_Cp::*)(_
typedef _Rp result_type;
};
-#endif // _LIBCPP_HAS_NO_VARIADICS
-
-#ifndef _LIBCPP_CXX03_LANG
-
template <class _Tp, class ..._Args>
struct __invoke_return
{
@@ -322,7 +312,7 @@ struct __invoke_return
template <class _Ret>
struct __invoke_void_return_wrapper
{
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+#ifndef _LIBCPP_CXX03_LANG
template <class ..._Args>
static _Ret __call(_Args&&... __args) {
return __invoke(_VSTD::forward<_Args>(__args)...);
@@ -353,7 +343,7 @@ struct __invoke_void_return_wrapper
template <>
struct __invoke_void_return_wrapper<void>
{
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+#ifndef _LIBCPP_CXX03_LANG
template <class ..._Args>
static void __call(_Args&&... __args) {
__invoke(_VSTD::forward<_Args>(__args)...);
@@ -395,7 +385,7 @@ public:
// construct/copy/destroy
_LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) _NOEXCEPT
: __f_(_VSTD::addressof(__f)) {}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
private: reference_wrapper(type&&); public: // = delete; // do not bind to temps
#endif
@@ -403,7 +393,7 @@ public:
_LIBCPP_INLINE_VISIBILITY operator type& () const _NOEXCEPT {return *__f_;}
_LIBCPP_INLINE_VISIBILITY type& get() const _NOEXCEPT {return *__f_;}
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+#ifndef _LIBCPP_CXX03_LANG
// invoke
template <class... _ArgTypes>
_LIBCPP_INLINE_VISIBILITY
@@ -516,7 +506,7 @@ public:
operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const {
return __invoke(get(), __a0, __a1, __a2);
}
-#endif // _LIBCPP_HAS_NO_VARIADICS
+#endif // _LIBCPP_CXX03_LANG
};
@@ -574,7 +564,7 @@ public:
struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { };
-#if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY)
+#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_MEMORY)
extern const allocator_arg_t allocator_arg;
#else
constexpr allocator_arg_t allocator_arg = allocator_arg_t();
@@ -617,7 +607,7 @@ template <class _Tp, class _Alloc>
constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value;
#endif
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+#ifndef _LIBCPP_CXX03_LANG
// allocator construction
@@ -669,7 +659,7 @@ void __user_alloc_construct (_Tp *__stor
__storage, __a, _VSTD::forward<_Args>(__args)...
);
}
-#endif // _LIBCPP_HAS_NO_VARIADICS
+#endif // _LIBCPP_CXX03_LANG
_LIBCPP_END_NAMESPACE_STD
Modified: projects/clang500-import/contrib/libc++/include/__hash_table
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__hash_table Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__hash_table Sat Apr 22 18:59:50 2017 (r317287)
@@ -18,6 +18,7 @@
#include <algorithm>
#include <cmath>
#include <utility>
+#include <type_traits>
#include <__undef_min_max>
@@ -38,6 +39,15 @@ template <class _Key, class _Tp>
struct __hash_value_type;
#endif
+template <class _Key, class _Cp, class _Hash,
+ bool = is_empty<_Hash>::value && !__libcpp_is_final<_Hash>::value>
+class __unordered_map_hasher;
+
+template <class _Key, class _Cp, class _Pred,
+ bool = is_empty<_Pred>::value && !__libcpp_is_final<_Pred>::value
+ >
+class __unordered_map_equal;
+
#ifndef _LIBCPP_CXX03_LANG
template <class _Tp>
struct __is_hash_value_type_imp : false_type {};
@@ -788,8 +798,7 @@ public:
_NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
: __data_(__size, __a) {}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
+#ifndef _LIBCPP_CXX03_LANG
_LIBCPP_INLINE_VISIBILITY
__bucket_list_deallocator(__bucket_list_deallocator&& __x)
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
@@ -797,8 +806,7 @@ public:
{
__x.size() = 0;
}
-
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif
_LIBCPP_INLINE_VISIBILITY
size_type& size() _NOEXCEPT {return __data_.first();}
@@ -856,6 +864,37 @@ public:
template <class> friend class __hash_map_node_destructor;
};
+
+#ifndef _LIBCPP_CXX03_LANG
+template <class _Key, class _Hash, class _Equal, class _Alloc>
+struct __diagnose_hash_table_helper {
+ static constexpr bool __trigger_diagnostics()
+ _LIBCPP_DIAGNOSE_WARNING(__check_hash_requirements<_Key, _Hash>::value
+ && !__invokable<_Hash const&, _Key const&>::value,
+ "the specified hash functor does not provide a const call operator")
+ _LIBCPP_DIAGNOSE_WARNING(is_copy_constructible<_Equal>::value
+ && !__invokable<_Equal const&, _Key const&, _Key const&>::value,
+ "the specified comparator type does not provide a const call operator")
+ {
+ static_assert(__check_hash_requirements<_Key, _Hash>::value,
+ "the specified hash does not meet the Hash requirements");
+ static_assert(is_copy_constructible<_Equal>::value,
+ "the specified comparator is required to be copy constructible");
+ return true;
+ }
+};
+
+template <class _Key, class _Value, class _Hash, class _Equal, class _Alloc>
+struct __diagnose_hash_table_helper<
+ __hash_value_type<_Key, _Value>,
+ __unordered_map_hasher<_Key, __hash_value_type<_Key, _Value>, _Hash>,
+ __unordered_map_equal<_Key, __hash_value_type<_Key, _Value>, _Equal>,
+ _Alloc>
+: __diagnose_hash_table_helper<_Key, _Hash, _Equal, _Alloc>
+{
+};
+#endif // _LIBCPP_CXX03_LANG
+
template <class _Tp, class _Hash, class _Equal, class _Alloc>
class __hash_table
{
@@ -918,6 +957,10 @@ private:
typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits;
typedef typename __bucket_list_deleter::pointer __node_pointer_pointer;
+#ifndef _LIBCPP_CXX03_LANG
+ static_assert(__diagnose_hash_table_helper<_Tp, _Hash, _Equal, _Alloc>::__trigger_diagnostics(), "");
+#endif
+
// --- Member data begin ---
__bucket_list __bucket_list_;
__compressed_pair<__first_node, __node_allocator> __p1_;
@@ -1357,7 +1400,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
const key_equal& __eql,
const allocator_type& __a)
: __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)),
- __p1_(__node_allocator(__a)),
+ __p1_(__second_tag(), __node_allocator(__a)),
__p2_(0, __hf),
__p3_(1.0f, __eql)
{
@@ -1366,7 +1409,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
template <class _Tp, class _Hash, class _Equal, class _Alloc>
__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const allocator_type& __a)
: __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)),
- __p1_(__node_allocator(__a)),
+ __p1_(__second_tag(), __node_allocator(__a)),
__p2_(0),
__p3_(1.0f)
{
@@ -1378,7 +1421,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
__bucket_list_deleter(allocator_traits<__pointer_allocator>::
select_on_container_copy_construction(
__u.__bucket_list_.get_deleter().__alloc()), 0)),
- __p1_(allocator_traits<__node_allocator>::
+ __p1_(__second_tag(), allocator_traits<__node_allocator>::
select_on_container_copy_construction(__u.__node_alloc())),
__p2_(0, __u.hash_function()),
__p3_(__u.__p3_)
@@ -1389,7 +1432,7 @@ template <class _Tp, class _Hash, class
__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u,
const allocator_type& __a)
: __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)),
- __p1_(__node_allocator(__a)),
+ __p1_(__second_tag(), __node_allocator(__a)),
__p2_(0, __u.hash_function()),
__p3_(__u.__p3_)
{
@@ -1423,7 +1466,7 @@ template <class _Tp, class _Hash, class
__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u,
const allocator_type& __a)
: __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)),
- __p1_(__node_allocator(__a)),
+ __p1_(__second_tag(), __node_allocator(__a)),
__p2_(0, _VSTD::move(__u.hash_function())),
__p3_(_VSTD::move(__u.__p3_))
{
@@ -1449,10 +1492,13 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
template <class _Tp, class _Hash, class _Equal, class _Alloc>
__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table()
{
+#if defined(_LIBCPP_CXX03_LANG)
static_assert((is_copy_constructible<key_equal>::value),
"Predicate must be copy-constructible.");
static_assert((is_copy_constructible<hasher>::value),
"Hasher must be copy-constructible.");
+#endif
+
__deallocate_node(__p1_.first().__next_);
#if _LIBCPP_DEBUG_LEVEL >= 2
__get_db()->__erase_c(this);
Modified: projects/clang500-import/contrib/libc++/include/__libcpp_version
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__libcpp_version Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__libcpp_version Sat Apr 22 18:59:50 2017 (r317287)
@@ -1 +1 @@
-4000
\ No newline at end of file
+5000
Modified: projects/clang500-import/contrib/libc++/include/__locale
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__locale Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__locale Sat Apr 22 18:59:50 2017 (r317287)
@@ -37,9 +37,11 @@
#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \
|| defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
# include <xlocale.h>
+#elif defined(__Fuchsia__)
+# include <support/fuchsia/xlocale.h>
#elif defined(_LIBCPP_HAS_MUSL_LIBC)
# include <support/musl/xlocale.h>
-#endif // __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__
+#endif
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
@@ -92,13 +94,16 @@ public:
const locale& operator=(const locale&) _NOEXCEPT;
- template <class _Facet> locale combine(const locale&) const;
+ template <class _Facet>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
+ locale combine(const locale&) const;
// locale operations:
string name() const;
bool operator==(const locale&) const;
bool operator!=(const locale& __y) const {return !(*this == __y);}
template <class _CharT, class _Traits, class _Allocator>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
bool operator()(const basic_string<_CharT, _Traits, _Allocator>&,
const basic_string<_CharT, _Traits, _Allocator>&) const;
Modified: projects/clang500-import/contrib/libc++/include/__mutex_base
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__mutex_base Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__mutex_base Sat Apr 22 18:59:50 2017 (r317287)
@@ -34,7 +34,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("mutex")) mutex
{
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#ifndef _LIBCPP_CXX03_LANG
__libcpp_mutex_t __m_ = _LIBCPP_MUTEX_INITIALIZER;
#else
__libcpp_mutex_t __m_;
@@ -42,7 +42,7 @@ class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SA
public:
_LIBCPP_INLINE_VISIBILITY
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#ifndef _LIBCPP_CXX03_LANG
constexpr mutex() _NOEXCEPT = default;
#else
mutex() _NOEXCEPT {__m_ = (__libcpp_mutex_t)_LIBCPP_MUTEX_INITIALIZER;}
@@ -66,7 +66,7 @@ struct _LIBCPP_TYPE_VIS defer_lock_t {};
struct _LIBCPP_TYPE_VIS try_to_lock_t {};
struct _LIBCPP_TYPE_VIS adopt_lock_t {};
-#if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MUTEX)
+#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_MUTEX)
extern const defer_lock_t defer_lock;
extern const try_to_lock_t try_to_lock;
@@ -80,21 +80,9 @@ constexpr adopt_lock_t adopt_lock = ad
#endif
-
-// Forward declare lock_guard as a variadic template even in C++03 to keep
-// the mangling consistent between dialects.
-#if defined(_LIBCPP_ABI_VARIADIC_LOCK_GUARD)
-template <class ..._Mutexes>
-class _LIBCPP_TEMPLATE_VIS lock_guard;
-#endif
-
template <class _Mutex>
class _LIBCPP_TEMPLATE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable)
-#if !defined(_LIBCPP_ABI_VARIADIC_LOCK_GUARD)
lock_guard
-#else
-lock_guard<_Mutex>
-#endif
{
public:
typedef _Mutex mutex_type;
@@ -162,7 +150,7 @@ private:
unique_lock& operator=(unique_lock const&); // = delete;
public:
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
_LIBCPP_INLINE_VISIBILITY
unique_lock(unique_lock&& __u) _NOEXCEPT
: __m_(__u.__m_), __owns_(__u.__owns_)
@@ -179,7 +167,7 @@ public:
return *this;
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif // _LIBCPP_CXX03_LANG
void lock();
bool try_lock();
@@ -291,7 +279,7 @@ _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_st
class _LIBCPP_TYPE_VIS condition_variable
{
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#ifndef _LIBCPP_CXX03_LANG
__libcpp_condvar_t __cv_ = _LIBCPP_CONDVAR_INITIALIZER;
#else
__libcpp_condvar_t __cv_;
@@ -299,7 +287,7 @@ class _LIBCPP_TYPE_VIS condition_variabl
public:
_LIBCPP_INLINE_VISIBILITY
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#ifndef _LIBCPP_CXX03_LANG
constexpr condition_variable() _NOEXCEPT = default;
#else
condition_variable() _NOEXCEPT {__cv_ = (__libcpp_condvar_t)_LIBCPP_CONDVAR_INITIALIZER;}
@@ -316,20 +304,24 @@ public:
void wait(unique_lock<mutex>& __lk) _NOEXCEPT;
template <class _Predicate>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
void wait(unique_lock<mutex>& __lk, _Predicate __pred);
template <class _Clock, class _Duration>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
cv_status
wait_until(unique_lock<mutex>& __lk,
const chrono::time_point<_Clock, _Duration>& __t);
template <class _Clock, class _Duration, class _Predicate>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
bool
wait_until(unique_lock<mutex>& __lk,
const chrono::time_point<_Clock, _Duration>& __t,
_Predicate __pred);
template <class _Rep, class _Period>
+ _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
cv_status
wait_for(unique_lock<mutex>& __lk,
const chrono::duration<_Rep, _Period>& __d);
Modified: projects/clang500-import/contrib/libc++/include/__split_buffer
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__split_buffer Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__split_buffer Sat Apr 22 18:59:50 2017 (r317287)
@@ -66,7 +66,7 @@ public:
__split_buffer(size_type __cap, size_type __start, __alloc_rr& __a);
~__split_buffer();
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
__split_buffer(__split_buffer&& __c)
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
__split_buffer(__split_buffer&& __c, const __alloc_rr& __a);
@@ -74,7 +74,7 @@ public:
_NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value &&
is_nothrow_move_assignable<allocator_type>::value) ||
!__alloc_traits::propagate_on_container_move_assignment::value);
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif // _LIBCPP_CXX03_LANG
_LIBCPP_INLINE_VISIBILITY iterator begin() _NOEXCEPT {return __begin_;}
_LIBCPP_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT {return __begin_;}
@@ -99,14 +99,12 @@ public:
void shrink_to_fit() _NOEXCEPT;
void push_front(const_reference __x);
_LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);
-#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+#ifndef _LIBCPP_CXX03_LANG
void push_front(value_type&& __x);
void push_back(value_type&& __x);
-#if !defined(_LIBCPP_HAS_NO_VARIADICS)
template <class... _Args>
void emplace_back(_Args&&... __args);
-#endif // !defined(_LIBCPP_HAS_NO_VARIADICS)
-#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+#endif // !defined(_LIBCPP_CXX03_LANG)
_LIBCPP_INLINE_VISIBILITY void pop_front() {__destruct_at_begin(__begin_+1);}
_LIBCPP_INLINE_VISIBILITY void pop_back() {__destruct_at_end(__end_-1);}
@@ -343,7 +341,7 @@ __split_buffer<_Tp, _Allocator>::~__spli
__alloc_traits::deallocate(__alloc(), __first_, capacity());
}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c)
@@ -361,7 +359,7 @@ __split_buffer<_Tp, _Allocator>::__split
template <class _Tp, class _Allocator>
__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c, const __alloc_rr& __a)
- : __end_cap_(__a)
+ : __end_cap_(__second_tag(), __a)
{
if (__a == __c.__alloc())
{
@@ -405,7 +403,7 @@ __split_buffer<_Tp, _Allocator>::operato
return *this;
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
void
@@ -492,7 +490,7 @@ __split_buffer<_Tp, _Allocator>::push_fr
--__begin_;
}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
void
@@ -524,7 +522,7 @@ __split_buffer<_Tp, _Allocator>::push_fr
--__begin_;
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
@@ -556,7 +554,7 @@ __split_buffer<_Tp, _Allocator>::push_ba
++__end_;
}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#ifndef _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
void
@@ -588,8 +586,6 @@ __split_buffer<_Tp, _Allocator>::push_ba
++__end_;
}
-#ifndef _LIBCPP_HAS_NO_VARIADICS
-
template <class _Tp, class _Allocator>
template <class... _Args>
void
@@ -621,9 +617,7 @@ __split_buffer<_Tp, _Allocator>::emplace
++__end_;
}
-#endif // _LIBCPP_HAS_NO_VARIADICS
-
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+#endif // _LIBCPP_CXX03_LANG
template <class _Tp, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
Modified: projects/clang500-import/contrib/libc++/include/__threading_support
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__threading_support Sat Apr 22 18:55:25 2017 (r317286)
+++ projects/clang500-import/contrib/libc++/include/__threading_support Sat Apr 22 18:59:50 2017 (r317287)
@@ -12,6 +12,8 @@
#define _LIBCPP_THREADING_SUPPORT
#include <__config>
+#include <chrono>
+#include <errno.h>
#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
#pragma GCC system_header
@@ -25,12 +27,9 @@
# include <pthread.h>
# include <sched.h>
#elif defined(_LIBCPP_HAS_THREAD_API_WIN32)
-#include <assert.h>
#include <Windows.h>
#include <process.h>
#include <fibersapi.h>
-
-#include <chrono>
#endif
#if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
@@ -67,6 +66,8 @@ typedef pthread_once_t __libcpp_exec_onc
typedef pthread_t __libcpp_thread_id;
// Thread
+#define _LIBCPP_NULL_THREAD 0U
+
typedef pthread_t __libcpp_thread_t;
// Thrad Local Storage
@@ -92,6 +93,8 @@ typedef INIT_ONCE __libcpp_exec_once_fla
typedef DWORD __libcpp_thread_id;
// Thread
+#define _LIBCPP_NULL_THREAD 0U
+
typedef HANDLE __libcpp_thread_t;
// Thread Local Storage
@@ -108,7 +111,7 @@ _LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO
int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m);
_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
-int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m);
+bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m);
_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS
int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list