Date: Wed, 26 Apr 2017 19:24:31 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317451 - in vendor/libc++/dist: . include test/libcxx/atomics test/libcxx/language.support/support.dynamic test/libcxx/localization/locales/locale.convenience/conversions/conversions.s... Message-ID: <201704261924.v3QJOVgJ030479@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Wed Apr 26 19:24:31 2017 New Revision: 317451 URL: https://svnweb.freebsd.org/changeset/base/317451 Log: Vendor import of libc++ trunk r301441: https://llvm.org/svn/llvm-project/libcxx/trunk@301441 Modified: vendor/libc++/dist/CMakeLists.txt vendor/libc++/dist/include/atomic vendor/libc++/dist/include/math.h vendor/libc++/dist/include/mutex vendor/libc++/dist/test/libcxx/atomics/diagnose_invalid_memory_order.fail.cpp vendor/libc++/dist/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp vendor/libc++/dist/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp vendor/libc++/dist/test/libcxx/modules/cinttypes_exports.sh.cpp vendor/libc++/dist/test/libcxx/modules/clocale_exports.sh.cpp vendor/libc++/dist/test/libcxx/modules/cstdint_exports.sh.cpp vendor/libc++/dist/test/libcxx/modules/inttypes_h_exports.sh.cpp vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception.pass.cpp vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_guard.pass.cpp vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_unlock.pass.cpp vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_missing_unlock.fail.cpp vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_requires_capability.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/assign.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/propagation/current_exception.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp vendor/libc++/dist/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp vendor/libc++/dist/test/std/numerics/c.math/cmath.pass.cpp vendor/libc++/dist/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp vendor/libc++/dist/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp vendor/libc++/dist/utils/libcxx/test/config.py Modified: vendor/libc++/dist/CMakeLists.txt ============================================================================== --- vendor/libc++/dist/CMakeLists.txt Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/CMakeLists.txt Wed Apr 26 19:24:31 2017 (r317451) @@ -120,21 +120,19 @@ if (LIBCXX_CXX_ABI STREQUAL "default") ${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi/include NO_DEFAULT_PATH ) - if ((NOT LIBCXX_STANDALONE_BUILD OR HAVE_LIBCXXABI) AND - IS_DIRECTORY "${LIBCXX_LIBCXXABI_INCLUDES_INTERNAL}") + if (LIBCXX_TARGETING_MSVC) + # FIXME: Figure out how to configure the ABI library on Windows. + set(LIBCXX_CXX_ABI_LIBNAME "vcruntime") + elseif ((NOT LIBCXX_STANDALONE_BUILD OR HAVE_LIBCXXABI) AND + IS_DIRECTORY "${LIBCXX_LIBCXXABI_INCLUDES_INTERNAL}") set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi") set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${LIBCXX_LIBCXXABI_INCLUDES_INTERNAL}") set(LIBCXX_CXX_ABI_INTREE 1) + elseif (APPLE) + set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi") + set(LIBCXX_CXX_ABI_SYSTEM 1) else() - if (LIBCXX_TARGETING_MSVC) - # FIXME: Figure out how to configure the ABI library on Windows. - set(LIBCXX_CXX_ABI_LIBNAME "vcruntime") - elseif(APPLE) - set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi") - set(LIBCXX_CXX_ABI_SYSTEM 1) - else() - set(LIBCXX_CXX_ABI_LIBNAME "default") - endif() + set(LIBCXX_CXX_ABI_LIBNAME "default") endif() else() set(LIBCXX_CXX_ABI_LIBNAME "${LIBCXX_CXX_ABI}") Modified: vendor/libc++/dist/include/atomic ============================================================================== --- vendor/libc++/dist/include/atomic Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/include/atomic Wed Apr 26 19:24:31 2017 (r317451) @@ -861,16 +861,29 @@ kill_dependency(_Tp __y) _NOEXCEPT return __y; } -#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE -#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE -#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE -#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE -#define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE -#define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE -#define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE -#define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE -#define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE -#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE +#if defined(__CLANG_ATOMIC_BOOL_LOCK_FREE) +# define ATOMIC_BOOL_LOCK_FREE __CLANG_ATOMIC_BOOL_LOCK_FREE +# define ATOMIC_CHAR_LOCK_FREE __CLANG_ATOMIC_CHAR_LOCK_FREE +# define ATOMIC_CHAR16_T_LOCK_FREE __CLANG_ATOMIC_CHAR16_T_LOCK_FREE +# define ATOMIC_CHAR32_T_LOCK_FREE __CLANG_ATOMIC_CHAR32_T_LOCK_FREE +# define ATOMIC_WCHAR_T_LOCK_FREE __CLANG_ATOMIC_WCHAR_T_LOCK_FREE +# define ATOMIC_SHORT_LOCK_FREE __CLANG_ATOMIC_SHORT_LOCK_FREE +# define ATOMIC_INT_LOCK_FREE __CLANG_ATOMIC_INT_LOCK_FREE +# define ATOMIC_LONG_LOCK_FREE __CLANG_ATOMIC_LONG_LOCK_FREE +# define ATOMIC_LLONG_LOCK_FREE __CLANG_ATOMIC_LLONG_LOCK_FREE +# define ATOMIC_POINTER_LOCK_FREE __CLANG_ATOMIC_POINTER_LOCK_FREE +#else +# define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE +# define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE +# define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE +# define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE +# define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE +# define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +# define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +# define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +# define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +# define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE +#endif // general atomic<T> Modified: vendor/libc++/dist/include/math.h ============================================================================== --- vendor/libc++/dist/include/math.h Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/include/math.h Wed Apr 26 19:24:31 2017 (r317451) @@ -307,6 +307,7 @@ long double truncl(long double x); extern "C++" { #include <type_traits> +#include <limits> // signbit @@ -324,22 +325,50 @@ __libcpp_signbit(_A1 __lcpp_x) _NOEXCEPT template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type signbit(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_signbit((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_integral<_A1>::value && std::is_signed<_A1>::value, bool>::type +signbit(_A1 __lcpp_x) _NOEXCEPT +{ return __lcpp_x < 0; } + +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_integral<_A1>::value && !std::is_signed<_A1>::value, bool>::type +signbit(_A1) _NOEXCEPT +{ return false; } + #elif defined(_LIBCPP_MSVCRT) template <typename _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type signbit(_A1 __lcpp_x) _NOEXCEPT { return ::signbit(static_cast<typename std::__promote<_A1>::type>(__lcpp_x)); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_integral<_A1>::value && std::is_signed<_A1>::value, bool>::type +signbit(_A1 __lcpp_x) _NOEXCEPT +{ return __lcpp_x < 0; } + +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_integral<_A1>::value && !std::is_signed<_A1>::value, bool>::type +signbit(_A1) _NOEXCEPT +{ return false; } + #endif // signbit // fpclassify @@ -358,22 +387,34 @@ __libcpp_fpclassify(_A1 __lcpp_x) _NOEXC template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, int>::type +typename std::enable_if<std::is_floating_point<_A1>::value, int>::type fpclassify(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_fpclassify((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if<std::is_integral<_A1>::value, int>::type +fpclassify(_A1 __lcpp_x) _NOEXCEPT +{ return __lcpp_x == 0 ? FP_ZERO : FP_NORMAL; } + #elif defined(_LIBCPP_MSVCRT) template <typename _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, int>::type +typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type fpclassify(_A1 __lcpp_x) _NOEXCEPT { return ::fpclassify(static_cast<typename std::__promote<_A1>::type>(__lcpp_x)); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if<std::is_integral<_A1>::value, int>::type +fpclassify(_A1 __lcpp_x) _NOEXCEPT +{ return __lcpp_x == 0 ? FP_ZERO : FP_NORMAL; } + #endif // fpclassify // isfinite @@ -392,12 +433,22 @@ __libcpp_isfinite(_A1 __lcpp_x) _NOEXCEP template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if< + std::is_arithmetic<_A1>::value && std::numeric_limits<_A1>::has_infinity, + bool>::type isfinite(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_isfinite((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_arithmetic<_A1>::value && !std::numeric_limits<_A1>::has_infinity, + bool>::type +isfinite(_A1) _NOEXCEPT +{ return true; } + #endif // isfinite // isinf @@ -416,12 +467,22 @@ __libcpp_isinf(_A1 __lcpp_x) _NOEXCEPT template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if< + std::is_arithmetic<_A1>::value && std::numeric_limits<_A1>::has_infinity, + bool>::type isinf(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_isinf((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if< + std::is_arithmetic<_A1>::value && !std::numeric_limits<_A1>::has_infinity, + bool>::type +isinf(_A1) _NOEXCEPT +{ return false; } + #endif // isinf // isnan @@ -440,12 +501,18 @@ __libcpp_isnan(_A1 __lcpp_x) _NOEXCEPT template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type isnan(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_isnan((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if<std::is_integral<_A1>::value, bool>::type +isnan(_A1) _NOEXCEPT +{ return false; } + #endif // isnan // isnormal @@ -464,12 +531,18 @@ __libcpp_isnormal(_A1 __lcpp_x) _NOEXCEP template <class _A1> inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type +typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type isnormal(_A1 __lcpp_x) _NOEXCEPT { return __libcpp_isnormal((typename std::__promote<_A1>::type)__lcpp_x); } +template <class _A1> +inline _LIBCPP_INLINE_VISIBILITY +typename std::enable_if<std::is_integral<_A1>::value, bool>::type +isnormal(_A1 __lcpp_x) _NOEXCEPT +{ return __lcpp_x != 0; } + #endif // isnormal // isgreater Modified: vendor/libc++/dist/include/mutex ============================================================================== --- vendor/libc++/dist/include/mutex Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/include/mutex Wed Apr 26 19:24:31 2017 (r317451) @@ -685,7 +685,7 @@ inline _LIBCPP_INLINE_VISIBILITY void call_once(once_flag& __flag, const _Callable& __func) { - if (__flag.__state_ != ~0ul) + if (__libcpp_acquire_load(&__flag.__state_) != ~0ul) { __call_once_param<const _Callable> __p(__func); __call_once(__flag.__state_, &__p, &__call_once_proxy<const _Callable>); Modified: vendor/libc++/dist/test/libcxx/atomics/diagnose_invalid_memory_order.fail.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/atomics/diagnose_invalid_memory_order.fail.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/atomics/diagnose_invalid_memory_order.fail.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// This test fails because diagnose_if doesn't emit all of the diagnostics +// when -fdelayed-template-parsing is enabled, like it is on Windows. +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: verify-support, diagnose-if-support // UNSUPPORTED: libcpp-has-no-threads Modified: vendor/libc++/dist/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -10,6 +10,10 @@ // test libc++'s implementation of align_val_t, and the relevent new/delete // overloads in all dialects when -faligned-allocation is present. +// Libc++ defers to the underlying MSVC library to provide the new/delete +// definitions, which does not yet provide aligned allocation +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: -faligned-allocation // RUN: %build -faligned-allocation @@ -74,4 +78,4 @@ int main() { assert(typeid(std::align_val_t).name() == std::string("St11align_val_t")); } #endif -} \ No newline at end of file +} Modified: vendor/libc++/dist/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/localization/locales/locale.convenience/conversions/conversions.string/ctor_move.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// 'do_bytes' throws a std::range_error unexpectedly +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: c++98, c++03 // <locale> Modified: vendor/libc++/dist/test/libcxx/modules/cinttypes_exports.sh.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/modules/cinttypes_exports.sh.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/modules/cinttypes_exports.sh.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// This test fails on Windows because the underlying libc headers on Windows +// are not modular +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: modules-support // Test that <cinttypes> re-exports <cstdint> Modified: vendor/libc++/dist/test/libcxx/modules/clocale_exports.sh.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/modules/clocale_exports.sh.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/modules/clocale_exports.sh.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// This test fails on Windows because the underlying libc headers on Windows +// are not modular +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: modules-support // UNSUPPORTED: c++98, c++03 Modified: vendor/libc++/dist/test/libcxx/modules/cstdint_exports.sh.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/modules/cstdint_exports.sh.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/modules/cstdint_exports.sh.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// This test fails on Windows because the underlying libc headers on Windows +// are not modular +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: modules-support // Test that <cstdint> re-exports <stdint.h> Modified: vendor/libc++/dist/test/libcxx/modules/inttypes_h_exports.sh.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/modules/inttypes_h_exports.sh.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/modules/inttypes_h_exports.sh.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// This test fails on Windows because the underlying libc headers on Windows +// are not modular +// XFAIL: LIBCXX-WINDOWS-FIXME + // REQUIRES: modules-support // Test that intypes.h re-exports stdint.h Modified: vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -8,6 +8,9 @@ //===----------------------------------------------------------------------===// // +// This test depends on std::exception_ptr which has not yet been implemented. +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads // UNSUPPORTED: c++98, c++03 Modified: vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -6,7 +6,9 @@ // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// -// + +// This test depends on std::exception_ptr which has not yet been implemented. +// XFAIL: LIBCXX-WINDOWS-FIXME // UNSUPPORTED: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads Modified: vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_guard.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_guard.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_guard.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// On Windows Clang bugs out when both __declspec and __attribute__ are present, +// the processing goes awry preventing the definition of the types. +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-has-no-threads // REQUIRES: thread-safety Modified: vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_unlock.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_unlock.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_lock_unlock.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// On Windows Clang bugs out when both __declspec and __attribute__ are present, +// the processing goes awry preventing the definition of the types. +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-has-no-threads // REQUIRES: thread-safety Modified: vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_missing_unlock.fail.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_missing_unlock.fail.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_missing_unlock.fail.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// On Windows Clang bugs out when both __declspec and __attribute__ are present, +// the processing goes awry preventing the definition of the types. +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-has-no-threads // REQUIRES: thread-safety Modified: vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_requires_capability.pass.cpp ============================================================================== --- vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_requires_capability.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/libcxx/thread/thread.mutex/thread_safety_requires_capability.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// On Windows Clang bugs out when both __declspec and __attribute__ are present, +// the processing goes awry preventing the definition of the types. +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-has-no-threads // REQUIRES: thread-safety Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/assign.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/assign.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/assign.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // <exception> // class nested_exception; Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // <exception> // class nested_exception; Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // <exception> // class nested_exception; Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> @@ -43,7 +46,7 @@ class C { public: virtual ~C() {} - C * operator&() const { assert(false); } // should not be called + C * operator&() const { assert(false); return nullptr; } // should not be called }; class D : private std::nested_exception {}; Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> Modified: vendor/libc++/dist/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> Modified: vendor/libc++/dist/test/std/language.support/support.exception/propagation/current_exception.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/propagation/current_exception.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/propagation/current_exception.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> Modified: vendor/libc++/dist/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // <exception> // typedef unspecified exception_ptr; Modified: vendor/libc++/dist/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> Modified: vendor/libc++/dist/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// exception_ptr has not been implemented on Windows +// XFAIL: LIBCXX-WINDOWS-FIXME + // UNSUPPORTED: libcpp-no-exceptions // <exception> Modified: vendor/libc++/dist/test/std/numerics/c.math/cmath.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/numerics/c.math/cmath.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/numerics/c.math/cmath.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -10,6 +10,7 @@ // <cmath> #include <cmath> +#include <limits> #include <type_traits> #include <cassert> @@ -551,6 +552,13 @@ void test_signbit() static_assert((std::is_same<decltype(std::signbit((long double)0)), bool>::value), ""); static_assert((std::is_same<decltype(signbit(Ambiguous())), Ambiguous>::value), ""); assert(std::signbit(-1.0) == true); + assert(std::signbit(0u) == false); + assert(std::signbit(std::numeric_limits<unsigned>::max()) == false); + assert(std::signbit(0) == false); + assert(std::signbit(1) == false); + assert(std::signbit(-1) == true); + assert(std::signbit(std::numeric_limits<int>::max()) == false); + assert(std::signbit(std::numeric_limits<int>::min()) == true); } void test_fpclassify() @@ -564,6 +572,11 @@ void test_fpclassify() static_assert((std::is_same<decltype(std::fpclassify((long double)0)), int>::value), ""); static_assert((std::is_same<decltype(fpclassify(Ambiguous())), Ambiguous>::value), ""); assert(std::fpclassify(-1.0) == FP_NORMAL); + assert(std::fpclassify(0) == FP_ZERO); + assert(std::fpclassify(1) == FP_NORMAL); + assert(std::fpclassify(-1) == FP_NORMAL); + assert(std::fpclassify(std::numeric_limits<int>::max()) == FP_NORMAL); + assert(std::fpclassify(std::numeric_limits<int>::min()) == FP_NORMAL); } void test_isfinite() @@ -577,6 +590,11 @@ void test_isfinite() static_assert((std::is_same<decltype(std::isfinite((long double)0)), bool>::value), ""); static_assert((std::is_same<decltype(isfinite(Ambiguous())), Ambiguous>::value), ""); assert(std::isfinite(-1.0) == true); + assert(std::isfinite(0) == true); + assert(std::isfinite(1) == true); + assert(std::isfinite(-1) == true); + assert(std::isfinite(std::numeric_limits<int>::max()) == true); + assert(std::isfinite(std::numeric_limits<int>::min()) == true); } void test_isnormal() @@ -590,6 +608,11 @@ void test_isnormal() static_assert((std::is_same<decltype(std::isnormal((long double)0)), bool>::value), ""); static_assert((std::is_same<decltype(isnormal(Ambiguous())), Ambiguous>::value), ""); assert(std::isnormal(-1.0) == true); + assert(std::isnormal(0) == false); + assert(std::isnormal(1) == true); + assert(std::isnormal(-1) == true); + assert(std::isnormal(std::numeric_limits<int>::max()) == true); + assert(std::isnormal(std::numeric_limits<int>::min()) == true); } void test_isgreater() @@ -651,6 +674,11 @@ void test_isinf() static_assert((std::is_same<decltype(std::isinf(0)), bool>::value), ""); static_assert((std::is_same<decltype(std::isinf((long double)0)), bool>::value), ""); assert(std::isinf(-1.0) == false); + assert(std::isinf(0) == false); + assert(std::isinf(1) == false); + assert(std::isinf(-1) == false); + assert(std::isinf(std::numeric_limits<int>::max()) == false); + assert(std::isinf(std::numeric_limits<int>::min()) == false); } void test_isless() @@ -731,6 +759,11 @@ void test_isnan() static_assert((std::is_same<decltype(std::isnan(0)), bool>::value), ""); static_assert((std::is_same<decltype(std::isnan((long double)0)), bool>::value), ""); assert(std::isnan(-1.0) == false); + assert(std::isnan(0) == false); + assert(std::isnan(1) == false); + assert(std::isnan(-1) == false); + assert(std::isnan(std::numeric_limits<int>::max()) == false); + assert(std::isnan(std::numeric_limits<int>::min()) == false); } void test_isunordered() Modified: vendor/libc++/dist/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -63,7 +63,6 @@ void test(SV sv, unsigned pos, unsigned n, const typename S::allocator_type& a) { typedef typename S::traits_type T; - typedef typename S::allocator_type A; if (pos <= sv.size()) { S s2(sv, pos, n, a); Modified: vendor/libc++/dist/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -44,7 +44,7 @@ void test_emplace_type() { auto &v = a.emplace<Type>(); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assert(Type::count == 1); @@ -60,7 +60,7 @@ void test_emplace_type() { auto &v = a.emplace<Type>(101); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assert(Type::count == 1); @@ -76,7 +76,7 @@ void test_emplace_type() { auto &v = a.emplace<Type>(-1, 42, -1); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assert(Type::count == 1); @@ -97,7 +97,7 @@ void test_emplace_type_tracked() { assert(Tracked::count == 1); auto &v = a.emplace<Type>(); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assertArgsMatch<Type>(a); @@ -107,7 +107,7 @@ void test_emplace_type_tracked() { assert(Tracked::count == 1); auto &v = a.emplace<Type>(-1, 42, -1); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assertArgsMatch<Type, int, int, int>(a); @@ -118,7 +118,7 @@ void test_emplace_type_tracked() { assert(Tracked::count == 1); auto &v = a.emplace<Type>({-1, 42, -1}); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assertArgsMatch<Type, std::initializer_list<int>>(a); @@ -129,7 +129,7 @@ void test_emplace_type_tracked() { assert(Tracked::count == 1); auto &v = a.emplace<Type>({-1, 42, -1}, x); static_assert( std::is_same_v<Type&, decltype(v)>, "" ); - assert(&v == std::any_cast<Type>(&a)); + assert(&v == std::any_cast<Type>(&a)); assert(Tracked::count == 0); assertArgsMatch<Type, std::initializer_list<int>, int&>(a); @@ -159,7 +159,8 @@ void test_emplace_throws() std::any a(small{42}); assert(small::count == 1); try { - a.emplace<Type>(101); + auto &v = a.emplace<Type>(101); + static_assert( std::is_same_v<Type&, decltype(v)>, "" ); assert(false); } catch (int const&) { } @@ -169,7 +170,8 @@ void test_emplace_throws() std::any a(small{42}); assert(small::count == 1); try { - a.emplace<Type>({1, 2, 3}, 101); + auto &v = a.emplace<Type>({1, 2, 3}, 101); + static_assert( std::is_same_v<Type&, decltype(v)>, "" ); assert(false); } catch (int const&) { } @@ -180,7 +182,8 @@ void test_emplace_throws() std::any a(large{42}); assert(large::count == 1); try { - a.emplace<Type>(101); + auto &v = a.emplace<Type>(101); + static_assert( std::is_same_v<Type&, decltype(v)>, "" ); assert(false); } catch (int const&) { } @@ -190,7 +193,8 @@ void test_emplace_throws() std::any a(large{42}); assert(large::count == 1); try { - a.emplace<Type>({1, 2, 3}, 101); + auto &v = a.emplace<Type>({1, 2, 3}, 101); + static_assert( std::is_same_v<Type&, decltype(v)>, "" ); assert(false); } catch (int const&) { } Modified: vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -254,7 +254,9 @@ int main() { assert(static_cast<bool>(opt) == true); assert(Y::dtor_called == false); - opt.emplace(1); + auto &v = opt.emplace(1); + static_assert( std::is_same_v<Y&, decltype(v)>, "" ); + assert(false); } catch (int i) { Modified: vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp Wed Apr 26 19:24:31 2017 (r317451) @@ -11,7 +11,7 @@ // <optional> // template <class U, class... Args> -// void optional<T>::emplace(initializer_list<U> il, Args&&... args); +// T& optional<T>::emplace(initializer_list<U> il, Args&&... args); #include <optional> #include <type_traits> @@ -76,21 +76,27 @@ int main() X x; optional<X> opt(x); assert(X::dtor_called == false); - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<X&, decltype(v)>, "" ); assert(X::dtor_called == true); assert(*opt == X({1, 2})); + assert(&v == &*opt); } { optional<std::vector<int>> opt; - opt.emplace({1, 2, 3}, std::allocator<int>()); + auto &v = opt.emplace({1, 2, 3}, std::allocator<int>()); + static_assert( std::is_same_v<std::vector<int>&, decltype(v)>, "" ); assert(static_cast<bool>(opt) == true); assert(*opt == std::vector<int>({1, 2, 3})); + assert(&v == &*opt); } { optional<Y> opt; - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<Y&, decltype(v)>, "" ); assert(static_cast<bool>(opt) == true); assert(*opt == Y({1, 2})); + assert(&v == &*opt); } #ifndef TEST_HAS_NO_EXCEPTIONS { @@ -100,7 +106,9 @@ int main() { assert(static_cast<bool>(opt) == true); assert(Z::dtor_called == false); - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<Z&, decltype(v)>, "" ); + assert(false); } catch (int i) { Modified: vendor/libc++/dist/utils/libcxx/test/config.py ============================================================================== --- vendor/libc++/dist/utils/libcxx/test/config.py Wed Apr 26 19:24:27 2017 (r317450) +++ vendor/libc++/dist/utils/libcxx/test/config.py Wed Apr 26 19:24:31 2017 (r317451) @@ -311,10 +311,10 @@ class Configuration(object): # NOTE: We do not test for the -verify flag directly because # -verify will always exit with non-zero on an empty file. self.use_clang_verify = self.cxx.isVerifySupported() - if self.use_clang_verify: - self.config.available_features.add('verify-support') self.lit_config.note( "inferred use_clang_verify as: %r" % self.use_clang_verify) + if self.use_clang_verify: + self.config.available_features.add('verify-support') def configure_use_thread_safety(self): '''If set, run clang with -verify on failing tests.''' @@ -418,7 +418,7 @@ class Configuration(object): # initial Windows failures until they can be properly diagnosed # and fixed. This allows easier detection of new test failures # and regressions. Note: New failures should not be suppressed - # using this feature. + # using this feature. (Also see llvm.org/PR32730) self.config.available_features.add('LIBCXX-WINDOWS-FIXME') # Attempt to detect the glibc version by querying for __GLIBC__
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704261924.v3QJOVgJ030479>