[PATCH 1/8] Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1
From: Jonathan Wakely By adding fallback definitions of std::intmax_t and std::uintmax_t it's possible to define without _GLIBCXX_USE_C99_STDINT_TR1. This in turn allows most of to be defined, which removes the dependency on _GLIBCXX_USE_C99_STDINT_TR1 for all of the C++11 concurrency features. The compiler defines __INTMAX_TYPE__ and __UINTMAX_TYPE__ unconditionally so it should be safe to rely on them. * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (__atomic_futex_unsigned_base): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro. * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t) (uintmax_t): Define using predefined macros. * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration) (time_point, system_clock, high_resolution_clock, steady_clock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro. (nanoseconds, microseconds, milliseconds, seconds, minutes, hours): [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or long long when is not usable. * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1] (condition_variable, condition_variable_any): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise) (packaged_task, async): Likewise. * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex) (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock) (once_flag, call_once): Likewise. * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise. * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (shared_mutex, shared_timed_mutex, shared_lock): Likewise. * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread) (this_thread::get_id, this_thread::yield, this_thread::sleep_for) (this_thread::sleep_until): Likewise. * src/c++11/chrono.cc: Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro. * src/c++11/condition_variable.cc: Likewise. * src/c++11/futex.cc: Likewise. * src/c++11/future.cc: Likewise. * src/c++11/mutex.cc: Likewise. * src/c++11/thread.cc: Likewise. * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f0855a6cd91..a3665ee8b6a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,46 @@ +2018-07-26 Jonathan Wakely + + * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (__atomic_futex_unsigned_base): Remove dependency on + _GLIBCXX_USE_C99_STDINT_TR1 macro. + * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. + * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t) + (uintmax_t): Define using predefined macros. + * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration) + (time_point, system_clock, high_resolution_clock, steady_clock): Remove + dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro. + (nanoseconds, microseconds, milliseconds, seconds, minutes, hours): + [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or + long long when is not usable. + * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1] + (condition_variable, condition_variable_any): Remove dependency on + _GLIBCXX_USE_C99_STDINT_TR1. + * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise) + (packaged_task, async): Likewise. + * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex) + (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock) + (once_flag, call_once): Likewise. + * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise. + * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1] + (shared_mutex, shared_timed_mutex, shared_lock): Likewise. + * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread) + (this_thread::get_id, this_thread::yield, this_thread::sleep_for) + (this_thread::sleep_until): Likewise. + * src/c++11/chrono.cc: Remove dependency on + _GLIBCXX_USE_C99_STDINT_TR1 macro. + * src/c++11/condition_variable.cc: L
[PATCH 0/8] Reduce/remove dependencies on _GLIBCXX_USE_C99_STDINT_TR1
From: Jonathan Wakely Currently huge swathes of the library are only enabled conditionally by: #ifdef _GLIBCXX_USE_C99_STDINT_TR1 This macro was created as part of the TR1 implementation, to detect whether the C++98 compiler has access to a working header from C99. In C++11 that header is required, and may even be provided by GCC itself. Having a large portion of the C++11 library depend on a feature that is almost guaranteed to be present for C++11 just complicates and obfuscates the code. There are also a number of places that use features that depend on the macro, but aren't guarded by the macro. This means if the macro were to be undefined for some target, the library wouldn't even build! Several of the dependencies turn out to be unnecessary. For example every instantiation of strings and streams using char16_t was guarded by the macro, because char_traits wants to use std::uint_least16_t (and similarly for char32_t). We can define good-enough char_traits specializations even if the types are not available. Every use of is guarded by the macro, because depends on and that uses std::intmax_t and std::uintmax_t. By defining those two types in even when we don't have a working we can define most of the C++11 concurrency library unconditionally (or to be only conditional on _GLIBCXX_HAS_GTHREADS). The remaining dependencies are related to , which makes heavy use of the types. I haven't tried to do anything about that, but have added some missing checks for the macro, and some missing dg-require-cstdint directives to tests that depend on or . Tested powerpc64le-linux, committed to trunk.
[PATCH 3/8] Modify some library internals to work without
From: Jonathan Wakely std::__detail::__clp2 used uint_fast32_t and uint_fast64_t without checking _GLIBCXX_USE_C99_STDINT_TR1 which was a potential bug. A simpler implementation based on the new std::__ceil2 code performs better and doesn't depend on types. std::align and other C++11 functions in where unnecessarily missing when _GLIBCXX_USE_C99_STDINT_TR1 was not defined. * include/bits/hashtable_policy.h (__detail::__clp2): Use faster implementation that doesn't depend on types. * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use std::size_t when std::uintptr_t is not usable. [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable) (undeclare_reachable, declare_no_pointers, undeclare_no_pointers): Define independent of _GLIBCXX_USE_C99_STDINT_TR1. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 10b1496af81..66ee23d1fc7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,13 @@ 2018-07-26 Jonathan Wakely + * include/bits/hashtable_policy.h (__detail::__clp2): Use faster + implementation that doesn't depend on types. + * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use + std::size_t when std::uintptr_t is not usable. + [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable) + (undeclare_reachable, declare_no_pointers, undeclare_no_pointers): + Define independent of _GLIBCXX_USE_C99_STDINT_TR1. + * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1] (hash, hash): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h index 3ff6b14a90f..d7497711071 100644 --- a/libstdc++-v3/include/bits/hashtable_policy.h +++ b/libstdc++-v3/include/bits/hashtable_policy.h @@ -32,7 +32,7 @@ #define _HASHTABLE_POLICY_H 1 #include// for std::tuple, std::forward_as_tuple -#include // for std::uint_fast64_t +#include // for std::numeric_limits #include // for std::min. namespace std _GLIBCXX_VISIBILITY(default) @@ -504,27 +504,15 @@ namespace __detail { return __num & (__den - 1); } }; - /// Compute closest power of 2. - _GLIBCXX14_CONSTEXPR + /// Compute closest power of 2 not less than __n inline std::size_t __clp2(std::size_t __n) noexcept { -#if __SIZEOF_SIZE_T__ >= 8 -std::uint_fast64_t __x = __n; -#else -std::uint_fast32_t __x = __n; -#endif -// Algorithm from Hacker's Delight, Figure 3-3. -__x = __x - 1; -__x = __x | (__x >> 1); -__x = __x | (__x >> 2); -__x = __x | (__x >> 4); -__x = __x | (__x >> 8); -__x = __x | (__x >>16); -#if __SIZEOF_SIZE_T__ >= 8 -__x = __x | (__x >>32); -#endif -return __x + 1; +// Equivalent to return __n ? std::ceil2(__n) : 0; +if (__n < 2) + return __n; +return 1ul << (numeric_limits::digits + - __builtin_clzl(__n - 1ul)); } /// Rehash policy providing power of 2 bucket numbers. Avoids modulo diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory index f3559a91327..9689540fb81 100644 --- a/libstdc++-v3/include/std/memory +++ b/libstdc++-v3/include/std/memory @@ -88,8 +88,7 @@ #endif #if __cplusplus >= 201103L -# include -# ifdef _GLIBCXX_USE_C99_STDINT_TR1 +#include namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -113,7 +112,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline void* align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept { +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 const auto __intptr = reinterpret_cast(__ptr); +#else + // Cannot use std::uintptr_t so assume that std::size_t can be used instead. + static_assert(sizeof(size_t) >= sizeof(void*), + "std::size_t must be a suitable substitute for std::uintptr_t"); + const auto __intptr = reinterpret_cast(__ptr); +#endif const auto __aligned = (__intptr - 1u + __align) & -__align; const auto __diff = __aligned - __intptr; if ((__size + __diff) > __space) @@ -147,7 +153,6 @@ get_pointer_safety() noexcept { return pointer_safety::relaxed; } _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#endif // _GLIBCXX_USE_C99_STDINT_TR1 #endif // C++11 #endif /* _GLIBCXX_MEMORY */ -- 2.14.4
[PATCH 2/8] Remove char16_t and char32_t dependency on
From: Jonathan Wakely The char16_t and char32_t types are automatically defined by the compiler and do not depend on support in . The char_traits specializations depend on uint_leastNN_t but can be made to work anyway by using the predefined macros, or as a last resort make_unsigned. * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1] (hash, hash): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1] (char_traits, char_traits): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and __UINT_LEAST32_TYPE__ or make_unsigned when is not usable. * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt) (codecvt) (codecvt_byname) (codecvt_byname): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1] (_GLIBCXX_NUM_UNICODE_FACETS): Likewise. * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1] (char_traits, char_traits) (basic_string, basic_string): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1. * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1] (u16string_view, u32string_view, hash) (hash, operator""sv(const char16_t, size_t)) (operator""sv(const char32_t, size_t)): Likewise. * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1] (hash<__u16vstring>, hash<__u32vstring>): Likewise. * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1] (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring) (__u32sso_string, __u32rc_string): Likewise. * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode) (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise. * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1] (u16string_view, u32string_view, hash) (hash, operator""sv(const char16_t, size_t)) (operator""sv(const char32_t, size_t)): Likewise. * src/c++11/codecvt.cc: Likewise. * src/c++98/locale_init.cc: Likewise. * src/c++98/localename.cc: Likewise. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a3665ee8b6a..10b1496af81 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,43 @@ 2018-07-26 Jonathan Wakely + * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (hash, hash): Remove dependency on + _GLIBCXX_USE_C99_STDINT_TR1. + * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (char_traits, char_traits): Remove dependency on + _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and + __UINT_LEAST32_TYPE__ or make_unsigned when is not usable. + * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (codecvt) + (codecvt) + (codecvt_byname) + (codecvt_byname): Remove dependency + on _GLIBCXX_USE_C99_STDINT_TR1. + * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (_GLIBCXX_NUM_UNICODE_FACETS): Likewise. + * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (char_traits, char_traits) + (basic_string, basic_string): Remove dependency + on _GLIBCXX_USE_C99_STDINT_TR1. + * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1] + (u16string_view, u32string_view, hash) + (hash, operator""sv(const char16_t, size_t)) + (operator""sv(const char32_t, size_t)): Likewise. + * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (hash<__u16vstring>, hash<__u32vstring>): Likewise. + * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring) + (__u32sso_string, __u32rc_string): Likewise. + * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode) + (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise. + * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1] + (u16string_view, u32string_view, hash) + (hash, operator""sv(const char16_t, size_t)) + (operator""sv(const char32_t, size_t)): Likewise. + * src/c++11/codecvt.cc: Likewise. + * src/c++98/locale_init.cc: Likewise. + * src/c++98/localename.cc: Likewise. + * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (__atomic_futex_unsigned_base): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro. diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 2d1b9dc6c29..c9463989ddc 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -6662,7 +6662,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif #endif /* _GLIBCXX_COMPATIBILITY_CXX0X */ -#ifdef _GLIBCXX_USE_C99_STDIN
[PATCH 4/8] Add missing checks for _GLIBCXX_USE_C99_STDINT_TR1
From: Jonathan Wakely The throw_allocator extension depends on which depends on _GLIBCXX_USE_C99_STDINT_TR1. The Transactional Memory support uses fixed-width integer types from . * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1] (random_condition, throw_value_random, throw_allocator_random) (std::hash): Do not define when is not usable. * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not define transactional memory support when is not usable. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 66ee23d1fc7..285ea6b7dca 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 2018-07-26 Jonathan Wakely + * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1] + (random_condition, throw_value_random, throw_allocator_random) + (std::hash): Do not define when is + not usable. + * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not + define transactional memory support when is not usable. + * include/bits/hashtable_policy.h (__detail::__clp2): Use faster implementation that doesn't depend on types. * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use diff --git a/libstdc++-v3/include/ext/throw_allocator.h b/libstdc++-v3/include/ext/throw_allocator.h index 7fd2ca149a0..dd7c69e 100644 --- a/libstdc++-v3/include/ext/throw_allocator.h +++ b/libstdc++-v3/include/ext/throw_allocator.h @@ -482,7 +482,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } }; - +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 /** * @brief Base class for random probability control and throw. */ @@ -596,7 +596,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return _S_e; } }; - +#endif // _GLIBCXX_USE_C99_STDINT_TR1 /** * @brief Class with exception generation control. Intended to be @@ -752,6 +752,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif }; +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 /// Type throwing via random condition. struct throw_value_random : public throw_value_base { @@ -782,7 +783,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION operator=(throw_value_random&&) = default; #endif }; - +#endif // _GLIBCXX_USE_C99_STDINT_TR1 /** * @brief Allocator class with logging and exception generation control. @@ -920,6 +921,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ~throw_allocator_limit() _GLIBCXX_USE_NOEXCEPT { } }; +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 /// Allocator throwing via random condition. template struct throw_allocator_random @@ -940,6 +942,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ~throw_allocator_random() _GLIBCXX_USE_NOEXCEPT { } }; +#endif // _GLIBCXX_USE_C99_STDINT_TR1 _GLIBCXX_END_NAMESPACE_VERSION } // namespace @@ -965,6 +968,7 @@ namespace std _GLIBCXX_VISIBILITY(default) } }; +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 /// Explicit specialization of std::hash for __gnu_cxx::throw_value_random. template<> struct hash<__gnu_cxx::throw_value_random> @@ -979,6 +983,7 @@ namespace std _GLIBCXX_VISIBILITY(default) return __result; } }; +#endif } // end namespace std #endif diff --git a/libstdc++-v3/src/c++11/cow-stdexcept.cc b/libstdc++-v3/src/c++11/cow-stdexcept.cc index a2df7892fd4..54859d58820 100644 --- a/libstdc++-v3/src/c++11/cow-stdexcept.cc +++ b/libstdc++-v3/src/c++11/cow-stdexcept.cc @@ -198,6 +198,7 @@ _GLIBCXX_END_NAMESPACE_VERSION // declared transaction-safe, so we just don't provide transactional clones // in this case. #if _GLIBCXX_USE_WEAK_REF +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 extern "C" { @@ -456,4 +457,5 @@ CTORDTOR(15underflow_error, std::underflow_error, runtime_error) } +#endif // _GLIBCXX_USE_C99_STDINT_TR1 #endif // _GLIBCXX_USE_WEAK_REF -- 2.14.4
[PATCH 6/8] Remove dg-require-cstdint directive from tests
From: Jonathan Wakely Tests for components which are no longer dependent on _GLIBCXX_USE_C99_STDINT_TR1 do not need to require . * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint directive. * testsuite/30_threads/async/49668.cc: Likewise. * testsuite/30_threads/async/54297.cc: Likewise. * testsuite/30_threads/async/84532.cc: Likewise. * testsuite/30_threads/async/any.cc: Likewise. * testsuite/30_threads/async/async.cc: Likewise. * testsuite/30_threads/async/except.cc: Likewise. * testsuite/30_threads/async/forced_unwind.cc: Likewise. * testsuite/30_threads/async/launch.cc: Likewise. * testsuite/30_threads/async/lwg2021.cc: Likewise. * testsuite/30_threads/async/sync.cc: Likewise. * testsuite/30_threads/call_once/39909.cc: Likewise. * testsuite/30_threads/call_once/49668.cc: Likewise. * testsuite/30_threads/call_once/60497.cc: Likewise. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/call_once/constexpr.cc: Likewise. * testsuite/30_threads/call_once/dr2442.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: Likewise. * testsuite/30_threads/condition_variable/54185.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable/members/1.cc: Likewise. * testsuite/30_threads/condition_variable/members/2.cc: Likewise. * testsuite/30_threads/condition_variable/members/3.cc: Likewise. * testsuite/30_threads/condition_variable/members/53841.cc: Likewise. * testsuite/30_threads/condition_variable/members/68519.cc: Likewise. * testsuite/30_threads/condition_variable/native_handle/typesizes.cc: Likewise. * testsuite/30_threads/condition_variable/requirements/ standard_layout.cc: Likewise. * testsuite/30_threads/condition_variable/requirements/typedefs.cc: * Likewise. * testsuite/30_threads/condition_variable_any/50862.cc: Likewise. * testsuite/30_threads/condition_variable_any/53830.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise. * testsuite/30_threads/future/cons/assign_neg.cc: Likewise. * testsuite/30_threads/future/cons/constexpr.cc: Likewise. * testsuite/30_threads/future/cons/copy_neg.cc: Likewise. * testsuite/30_threads/future/cons/default.cc: Likewise. * testsuite/30_threads/future/cons/move.cc: Likewise. * testsuite/30_threads/future/cons/move_assign.cc: Likewise. * testsuite/30_threads/future/members/45133.cc: Likewise. * testsuite/30_threads/future/members/get.cc: Likewise. * testsuite/30_threads/future/members/get2.cc: Likewise. * testsuite/30_threads/future/members/share.cc: Likewise. * testsuite/30_threads/future/members/valid.cc: Likewise. * testsuite/30_threads/future/members/wait.cc: Likewise. * testsuite/30_threads/future/members/wait_for.cc: Likewise. * testsuite/30_threads/future/members/wait_until.cc: Likewise. * testsuite/30_threads/future/requirements/explicit_instantiation.cc: Likewise. * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/lock/1.cc: Likewise. * testsuite/30_threads/lock/2.cc: Likewise. * testsuite/30_threads/lock/3.cc: Likewise. * testsuite/30_threads/lock/4.cc: Likewise. * testsuite/30_threads/lock_guard/cons/1.cc: Likewise. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * tes
[PATCH 5/8] Remove dg-require-cstdint directive from tests
From: Jonathan Wakely Tests for components which are no longer dependent on _GLIBCXX_USE_C99_STDINT_TR1 do not need to require . * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names from namespace std. * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive. * testsuite/20_util/duration/arithmetic/1.cc: Likewise. * testsuite/20_util/duration/arithmetic/2.cc: Likewise. * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise. * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise. * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise. * testsuite/20_util/duration/comparison_operators/1.cc: Likewise. * testsuite/20_util/duration/cons/1.cc: Likewise. * testsuite/20_util/duration/cons/1_neg.cc: Likewise. * testsuite/20_util/duration/cons/2.cc: Likewise. * testsuite/20_util/duration/cons/54025.cc: Likewise. * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise. * testsuite/20_util/duration/requirements/explicit_instantiation/ explicit_instantiation.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise. * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise. * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise. * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise. * testsuite/20_util/ratio/cons/cons1.cc: Likewise. * testsuite/20_util/ratio/operations/45866.cc: Likewise. * testsuite/20_util/ratio/operations/47913.cc: Likewise. * testsuite/20_util/ratio/operations/53840.cc: Likewise. * testsuite/20_util/ratio/operations/ops1.cc: Likewise. * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise. * testsuite/20_util/system_clock/1.cc: Likewise. * testsuite/20_util/time_point/1.cc: Likewise. * testsuite/20_util/time_point/2.cc: Likewise. * testsuite/20_util/time_point/3.cc: Likewise. * testsuite/20_util/time_point/requirements/explicit_instantiation/ explicit_instantiation.cc: Likewise. * testsuite/21_strings/basic_string/requirements/ explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/ explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/ explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/ explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/21_strings/char_traits/requirements/ explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/21_strings/char_traits/requirements/ explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise. * testsuite/22_locale/codecvt/char16_t.cc: Likewise. * testsuite/22_locale/codecvt/char32_t.cc: Likewise. * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc: Likewise. * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc: Likewise. * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc: Likewise. * testsuite/22_locale/codecvt/utf8.cc: Likewise. * testsuite/23_containers/vector/bool/72847.cc: Likewise. * testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise. * testsuite/experimental/string_view/requirements/ explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/experimental/string_view/requirements/ explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/ 1.cc: Likewise. * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/ 1.cc: Likewise. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 285ea6b7dca..028f269e6f4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,74 @@ 2018-07-26 Jonathan Wakely + * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names + from namespace std. + * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive. + * testsuite/20_util/duration/arithmetic/1.cc: Likewise. + * testsuite/20_util/duration/arithmetic/2.cc: Likewise. + * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise. + * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise. + * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise. + * testsuite/20_util/duration/comparison_operators/1.cc: Likewise. + * t
[PATCH 8/8] Add missing dg-require-cstdint directives to tests
From: Jonathan Wakely * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add dg-require-cstdint directive. * testsuite/20_util/allocator/overaligned.cc: Likewise. * testsuite/20_util/any/cons/aligned.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise. * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Likewise. * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise. * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise. * testsuite/23_containers/set/allocator/move_assign.cc: Likewise. * testsuite/25_algorithms/make_heap/complexity.cc: Likewise. * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and random_device effective-target. * testsuite/25_algorithms/push_heap/complexity.cc: Likewise. * testsuite/25_algorithms/sample/1.cc: Require cstdint. * testsuite/25_algorithms/sample/2.cc: Likewise. * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint and random_device. * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require cstdint. * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: Likewise. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_data.cc: Likewise. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/independent_bits_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_data.cc: Likewise. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_data.cc: Likewise. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/pr60037-neg.cc: Likewise. * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_data.cc: Add dg-require-cstdint directive. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_data.cc: Likewise. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_functions.cc: Likewise. * testsuite/26_numerics/random/uniform_real_distribution/operators/ 64351.cc: Likewise. * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise. * testsuite/experimental/algorithm/sample-2.cc: Likewise. * testsuite/experimental/algorithm/sample.cc: Likewise. * testsuite/experimental/algorithm/search.cc: Likewise. * testsuite/experimental/algorithm/shuffle.cc: Likewise. * testsuite/experimental/any/cons/aligned.cc: Likewise. * testsuite/experimental/memory_resource/new_delete_resource.cc: Likewise. * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise. * testsuite/experimental/random/randint.cc: Likewise. * testsuite/experimental/source_location/1.cc: Likewise. * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise. * testsuite/ext/malloc_allocator/overaligned.cc: Likewise. * testsuite/ext/mt_allocator/overaligned.cc: Likewise. * testsuite/ext/new_allocator/overaligned.cc: Likewise. * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise. * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise. * testsuite/ext/pool_allocator/overaligned.cc: Likewise. * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise. * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise. * testsuite/ext/throw_allocator/check_delete.cc: Likewise. * testsuite/ext/throw_allocator/check_new.cc: Likewise. * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise. * testsuite/ext/throw_allocator
[PATCH 7/8] Remove dg-require-cstdint directive from tests
From: Jonathan Wakely Tests for components which are no longer dependent on _GLIBCXX_USE_C99_STDINT_TR1 do not need to require . * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/ destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise. * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise. * testsuite/30_threads/scoped_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/shared_future/cons/assign.cc: Likewise. * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise. * testsuite/30_threads/shared_future/cons/copy.cc: Likewise. * testsuite/30_threads/shared_future/cons/default.cc: Likewise. * testsuite/30_threads/shared_future/cons/move.cc: Likewise. * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise. * testsuite/30_threads/shared_future/members/45133.cc: Likewise. * testsuite/30_threads/shared_future/members/get.cc: Likewise. * testsuite/30_threads/shared_future/members/get2.cc: Likewise. * testsuite/30_threads/shared_future/members/valid.cc: Likewise. * testsuite/30_threads/shared_future/members/wait.cc: Likewise. * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise. * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise. * testsuite/30_threads/shared_future/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/shared_lock/cons/1.cc: Likewise. * testsuite/30_threads/shared_lock/cons/2.cc: Likewise. * testsuite/30_threads/shared_lock/cons/3.cc: Likewise. * testsuite/30_threads/shared_lock/cons/4.cc: Likewise. * testsuite/30_threads/shared_lock/cons/5.cc: Likewise. * testsuite/30_threads/shared_lock/cons/6.cc: Likewise. * testsuite/30_threads/shared_lock/locking/1.cc: Likewise. * testsuite/30_threads/shared_lock/locking/2.cc: Likewise. * testsuite/30_threads/shared_lock/locking/3.cc: Likewise. * testsuite/30_threads/shared_lock/locking/4.cc: Likewise. * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/shared_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise. * tests