summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-09-23 13:00:23 +0100
committerRichard Sandiford <richard.sandiford@linaro.org>2017-09-23 13:00:23 +0100
commitc2f1abac401810096970cf7dd60ca60484195a28 (patch)
tree0f4afaca51d2b39aa13b73b5dd8f23a8e3996830 /libstdc++-v3
parentb9516bee7e9e9a932733dc7d3041e5aaff1b9f52 (diff)
parent3bbc3f795c25bc60de3ef0ee0fc16fb002777c7a (diff)
downloadgcc-c2f1abac401810096970cf7dd60ca60484195a28.tar.gz
Merge trunk into sve
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog213
-rw-r--r--libstdc++-v3/include/bits/basic_string.h2
-rw-r--r--libstdc++-v3/include/bits/c++config7
-rw-r--r--libstdc++-v3/include/bits/functional_hash.h4
-rw-r--r--libstdc++-v3/include/bits/regex_executor.tcc18
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h96
-rw-r--r--libstdc++-v3/include/std/optional20
-rw-r--r--libstdc++-v3/include/std/type_traits45
-rw-r--r--libstdc++-v3/include/std/utility53
-rw-r--r--libstdc++-v3/include/std/variant13
-rw-r--r--libstdc++-v3/libsupc++/exception3
-rw-r--r--libstdc++-v3/libsupc++/exception_ptr.h13
-rw-r--r--libstdc++-v3/testsuite/18_support/byte/global_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/byte/ops.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/byte/requirements.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc1
-rw-r--r--libstdc++-v3/testsuite/18_support/launder/1.cc4
-rw-r--r--libstdc++-v3/testsuite/18_support/launder/requirements.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc6
-rw-r--r--libstdc++-v3/testsuite/20_util/function/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/is_aggregate/value.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc96
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/optional/hash.cc17
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/78939.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/variant/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/void_t/1.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc53
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc53
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc2
-rw-r--r--libstdc++-v3/testsuite/24_iterators/container_access.cc2
-rw-r--r--libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/clamp/1.cc12
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/sample/1.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/sample/2.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/sample/81221.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/search/searcher.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/gcd/1.cc4
-rw-r--r--libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/lcm/1.cc4
-rw-r--r--libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/types/4.cc2
-rw-r--r--libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/28_regex/simple_c++11.cc27
-rw-r--r--libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc2
-rw-r--r--libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc4
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc2
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc4
115 files changed, 712 insertions, 264 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 36a9744fb4a..b2a8653c8b7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,214 @@
+2017-09-21 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and
+ expected results when using predicate defining reverse order.
+ * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
+
+2017-09-20 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/79162
+ * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
+ (basic_string::_If_sv): Remove from the overload set when the
+ argument is derived from basic_string.
+
+ PR libstdc++/79162
+ * include/bits/basic_string.h (basic_string::_If_sv): Remove from the
+ overload set when the argument is derived from basic_string.
+ * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New
+ test.
+ * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
+ New test.
+
+ * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do
+ and dg-options directives. Fix invalid test.
+
+ PR libstdc++/81469
+ * libsupc++/exception (uncaught_exception): Deprecate for C++17.
+ * testsuite/18_support/exception_ptr/62258.cc: Add -Wno-deprecated.
+ * testsuite/18_support/uncaught_exception/14026.cc: Likewise.
+
+ * include/bits/c++config (_GLIBCXX17_DEPRECATED): Define.
+ * include/bits/functional_hash.h (__hash_base::result_type)
+ (__hash_base::argument_type): Add _GLIBCXX17_DEPRECATED.
+ * include/std/optional (hash<optional<T>>::result_type)
+ (hash<optional<T>>::argument_type): Add deprecated attribute.
+ (__is_fast_hash<hash<optional<T>>>): Add partial specialization.
+ * include/std/variant (hash<variant<Types...>>::result_type)
+ (hash<variant<Types...>>::argument_type): Add deprecated attribute.
+ (__is_fast_hash<hash<variant<Types...>>>): Add partial specialization.
+
+ * libsupc++/exception_ptr.h (copy_exception): Remove deprecated
+ non-standard function.
+
+ PR libstdc++/82262
+ * include/std/optional (__optional_hash_call_base): Add template
+ parameter for remove_const_t<_Tp> and use it consistently.
+ * testsuite/20_util/optional/hash.cc: Test optional<const T>.
+
+2017-09-19 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/71500
+ * include/bits/regex_executor.tcc
+ (_Backref_matcher<BidIt, regex_traits<C>>::_M_apply): Use
+ std::__equal4 instead of C++14 4-iterator overloads of std::equal.
+ * include/bits/stl_algobase.h (__equal4): New functions implementing
+ 4-iterator overloads of std::equal for use in C++11.
+ (equal(It1, It1, It2, It2), equal(It1, It1, It2, It2, BinaryPred)):
+ Move function bodies to new __equal4 functions.
+ * testsuite/28_regex/simple_c++11.cc: New.
+
+ PR libstdc++/82254
+ * include/std/type_traits (__is_invocable): Add partial specialization
+ for INVOKE<void> case and remove is_void<R> check from partial
+ specialization for INVOKE<R> case.
+ (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r.
+ (is_nothrow_invocable_r): Use __is_nt_invocable_impl.
+ * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for
+ conversions that can throw or fail to convert. Use static assert
+ strings to explain negative results.
+ * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use
+ is_nothrow_constructible in is_nt_invocable_conv.
+
+2017-09-18 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/81468
+ * testsuite/20_util/duration/cons/dr1177.cc: Fix incorrect test and
+ improve static assertion messages.
+
+ * include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
+ (_Build_index_tuple, make_integer_sequence): Use built-in to generate
+ pack expansion.
+
+ PR libstdc++/71187
+ * include/std/type_traits (__declval): New function to deduce return
+ type of declval.
+ (__declval_protector::_delegate): Remove.
+ (declval): Use __declval instead of add_rvalue_reference and
+ __declval_protector::__delegate.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ lineno.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+
+2017-09-15 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
+ -std=gnu++17 instead of -std=c++1z or -std=gnu++1z. Use c++17 instead
+ of c++1z and c++17_only instead of c++1z_only. Adjust expected
+ diagnostics and comments refering to 1z to 17.
+ * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
+ * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
+ * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
+ * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
+ * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
+ Likewise.
+ * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
+ * testsuite/18_support/launder/1.cc (test02): Likewise.
+ * testsuite/18_support/launder/requirements_neg.cc: Likewise.
+ * testsuite/18_support/launder/requirements.cc: Likewise.
+ * testsuite/18_support/byte/requirements.cc: Likewise.
+ * testsuite/18_support/byte/ops.cc: Likewise.
+ * testsuite/18_support/byte/global_neg.cc: Likewise.
+ * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
+ Likewise.
+ * testsuite/27_io/types/4.cc: Likewise.
+ * testsuite/25_algorithms/sample/81221.cc: Likewise.
+ * testsuite/25_algorithms/sample/1.cc: Likewise.
+ * testsuite/25_algorithms/sample/2.cc: Likewise.
+ * testsuite/25_algorithms/search/searcher.cc: Likewise.
+ * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
+ * testsuite/experimental/filesystem/path/construct/string_view.cc:
+ Likewise.
+ * testsuite/24_iterators/range_access_cpp17.cc: Likewise.
+ * testsuite/24_iterators/container_access.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
+ * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
+ * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
+ * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
+ * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
+ * testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
+ * testsuite/20_util/pair/cons/deduction.cc: Likewise.
+ * testsuite/20_util/variant/deduction.cc: Likewise.
+ * testsuite/20_util/tuple/78939.cc: Likewise.
+ * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
+ * testsuite/20_util/void_t/1.cc: Likewise.
+ * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
+ * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
+ * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
+ * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
+ * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
+ Likewise.
+ * testsuite/20_util/has_unique_object_representations/value.cc:
+ Likewise.
+ * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
+ * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
+ * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
+ * testsuite/20_util/function/cons/deduction.cc: Likewise.
+ * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
+ Likewise.
+ * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
+ Likewise.
+ * testsuite/20_util/is_aggregate/value.cc: Likewise.
+ * testsuite/26_numerics/lcm/1.cc: Likewise.
+ * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
+ * testsuite/26_numerics/gcd/1.cc: Likewise.
+ * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
+ * testsuite/26_numerics/valarray/deduction.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
+ * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/array/cons/deduction.cc: Likewise.
+ * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
+ * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
+ * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/list/cons/deduction.cc: Likewise.
+ * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
+ * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
+ * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
+ Likewise.
+ * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
+ * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
+ * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
+ * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
+ * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
+ * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
+ Likewise.
+
2017-09-13 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/81468
@@ -202,7 +413,7 @@
2017-09-11 Tim Shen <timshen@google.com>
PR libstdc++/71500
- * include/bits/regex_executor.tcc: Support icase in regex_tratis<...>
+ * include/bits/regex_executor.tcc: Support icase in regex_traits<...>
for back reference matches.
* testsuite/28_regex/regression.cc: Test case.
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 0ef139b2c2b..a4b81137571 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -115,6 +115,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
template<typename _Tp, typename _Res>
using _If_sv = enable_if_t<
__and_<is_convertible<const _Tp&, __sv_type>,
+ __not_<is_convertible<const _Tp*, const basic_string*>>,
__not_<is_convertible<const _Tp&, const _CharT*>>>::value,
_Res>;
@@ -3438,6 +3439,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
template<typename _Tp, typename _Res>
using _If_sv = enable_if_t<
__and_<is_convertible<const _Tp&, __sv_type>,
+ __not_<is_convertible<const _Tp*, const basic_string*>>,
__not_<is_convertible<const _Tp&, const _CharT*>>>::value,
_Res>;
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index d5d1d24ee1a..21e3fbb2741 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -77,6 +77,7 @@
// Macros for deprecated attributes.
// _GLIBCXX_USE_DEPRECATED
// _GLIBCXX_DEPRECATED
+// _GLIBCXX17_DEPRECATED
#ifndef _GLIBCXX_USE_DEPRECATED
# define _GLIBCXX_USE_DEPRECATED 1
#endif
@@ -87,6 +88,12 @@
# define _GLIBCXX_DEPRECATED
#endif
+#if defined(__DEPRECATED) && (__cplusplus >= 201703L)
+# define _GLIBCXX17_DEPRECATED [[__deprecated__]]
+#else
+# define _GLIBCXX17_DEPRECATED
+#endif
+
// Macros for ABI tag attributes.
#ifndef _GLIBCXX_ABI_TAG_CXX11
# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
diff --git a/libstdc++-v3/include/bits/functional_hash.h b/libstdc++-v3/include/bits/functional_hash.h
index 38be1724d3f..c0936843ac0 100644
--- a/libstdc++-v3/include/bits/functional_hash.h
+++ b/libstdc++-v3/include/bits/functional_hash.h
@@ -49,8 +49,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Result, typename _Arg>
struct __hash_base
{
- typedef _Result result_type;
- typedef _Arg argument_type;
+ typedef _Result result_type _GLIBCXX17_DEPRECATED;
+ typedef _Arg argument_type _GLIBCXX17_DEPRECATED;
};
/// Primary class template hash.
diff --git a/libstdc++-v3/include/bits/regex_executor.tcc b/libstdc++-v3/include/bits/regex_executor.tcc
index f6149fecf9d..2ceba35e7b8 100644
--- a/libstdc++-v3/include/bits/regex_executor.tcc
+++ b/libstdc++-v3/include/bits/regex_executor.tcc
@@ -366,17 +366,17 @@ namespace __detail
_BiIter __actual_end)
{
if (!_M_icase)
- return std::equal(__expected_begin, __expected_end,
- __actual_begin, __actual_end);
+ return std::__equal4(__expected_begin, __expected_end,
+ __actual_begin, __actual_end);
typedef std::ctype<_CharT> __ctype_type;
const auto& __fctyp = use_facet<__ctype_type>(_M_traits.getloc());
- return std::equal(__expected_begin, __expected_end,
- __actual_begin, __actual_end,
- [this, &__fctyp](_CharT __lhs, _CharT __rhs)
- {
- return __fctyp.tolower(__lhs)
- == __fctyp.tolower(__rhs);
- });
+ return std::__equal4(__expected_begin, __expected_end,
+ __actual_begin, __actual_end,
+ [this, &__fctyp](_CharT __lhs, _CharT __rhs)
+ {
+ return __fctyp.tolower(__lhs)
+ == __fctyp.tolower(__rhs);
+ });
}
bool _M_icase;
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index f68ecb22b82..a80934c4faa 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -1082,6 +1082,60 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
return true;
}
+#if __cplusplus >= 201103L
+ // 4-iterator version of std::equal<It1, It2> for use in C++11.
+ template<typename _II1, typename _II2>
+ inline bool
+ __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
+ {
+ using _RATag = random_access_iterator_tag;
+ using _Cat1 = typename iterator_traits<_II1>::iterator_category;
+ using _Cat2 = typename iterator_traits<_II2>::iterator_category;
+ using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
+ if (_RAIters())
+ {
+ auto __d1 = std::distance(__first1, __last1);
+ auto __d2 = std::distance(__first2, __last2);
+ if (__d1 != __d2)
+ return false;
+ return _GLIBCXX_STD_A::equal(__first1, __last1, __first2);
+ }
+
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, (void)++__first2)
+ if (!(*__first1 == *__first2))
+ return false;
+ return __first1 == __last1 && __first2 == __last2;
+ }
+
+ // 4-iterator version of std::equal<It1, It2, BinaryPred> for use in C++11.
+ template<typename _II1, typename _II2, typename _BinaryPredicate>
+ inline bool
+ __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2,
+ _BinaryPredicate __binary_pred)
+ {
+ using _RATag = random_access_iterator_tag;
+ using _Cat1 = typename iterator_traits<_II1>::iterator_category;
+ using _Cat2 = typename iterator_traits<_II2>::iterator_category;
+ using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
+ if (_RAIters())
+ {
+ auto __d1 = std::distance(__first1, __last1);
+ auto __d2 = std::distance(__first2, __last2);
+ if (__d1 != __d2)
+ return false;
+ return _GLIBCXX_STD_A::equal(__first1, __last1, __first2,
+ __binary_pred);
+ }
+
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, (void)++__first2)
+ if (!bool(__binary_pred(*__first1, *__first2)))
+ return false;
+ return __first1 == __last1 && __first2 == __last2;
+ }
+#endif // C++11
+
#if __cplusplus > 201103L
#define __cpp_lib_robust_nonmodifying_seq_ops 201304
@@ -1112,24 +1166,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
__glibcxx_requires_valid_range(__first1, __last1);
__glibcxx_requires_valid_range(__first2, __last2);
- using _RATag = random_access_iterator_tag;
- using _Cat1 = typename iterator_traits<_II1>::iterator_category;
- using _Cat2 = typename iterator_traits<_II2>::iterator_category;
- using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
- if (_RAIters())
- {
- auto __d1 = std::distance(__first1, __last1);
- auto __d2 = std::distance(__first2, __last2);
- if (__d1 != __d2)
- return false;
- return _GLIBCXX_STD_A::equal(__first1, __last1, __first2);
- }
-
- for (; __first1 != __last1 && __first2 != __last2;
- ++__first1, (void)++__first2)
- if (!(*__first1 == *__first2))
- return false;
- return __first1 == __last1 && __first2 == __last2;
+ return _GLIBCXX_STD_A::__equal4(__first1, __last1, __first2, __last2);
}
/**
@@ -1159,27 +1196,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
__glibcxx_requires_valid_range(__first1, __last1);
__glibcxx_requires_valid_range(__first2, __last2);
- using _RATag = random_access_iterator_tag;
- using _Cat1 = typename iterator_traits<_IIter1>::iterator_category;
- using _Cat2 = typename iterator_traits<_IIter2>::iterator_category;
- using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
- if (_RAIters())
- {
- auto __d1 = std::distance(__first1, __last1);
- auto __d2 = std::distance(__first2, __last2);
- if (__d1 != __d2)
- return false;
- return _GLIBCXX_STD_A::equal(__first1, __last1, __first2,
- __binary_pred);
- }
-
- for (; __first1 != __last1 && __first2 != __last2;
- ++__first1, (void)++__first2)
- if (!bool(__binary_pred(*__first1, *__first2)))
- return false;
- return __first1 == __last1 && __first2 == __last2;
+ return _GLIBCXX_STD_A::__equal4(__first1, __last1, __first2, __last2,
+ __binary_pred);
}
-#endif
+#endif // C++14
/**
* @brief Performs @b dictionary comparison on ranges.
diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index 2743ef963b4..e017eedbde7 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -1005,33 +1005,37 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Hash.
- template<typename _Tp, bool
- = __poison_hash<remove_const_t<_Tp>>::__enable_hash_call>
+ template<typename _Tp, typename _Up = remove_const_t<_Tp>,
+ bool = __poison_hash<_Up>::__enable_hash_call>
struct __optional_hash_call_base
{
size_t
operator()(const optional<_Tp>& __t) const
- noexcept(noexcept(hash<_Tp> {}(*__t)))
+ noexcept(noexcept(hash<_Up>{}(*__t)))
{
// We pick an arbitrary hash for disengaged optionals which hopefully
// usual values of _Tp won't typically hash to.
constexpr size_t __magic_disengaged_hash = static_cast<size_t>(-3333);
- return __t ? hash<_Tp> {}(*__t) : __magic_disengaged_hash;
+ return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash;
}
};
- template<typename _Tp>
- struct __optional_hash_call_base<_Tp, false> {};
+ template<typename _Tp, typename _Up>
+ struct __optional_hash_call_base<_Tp, _Up, false> {};
template<typename _Tp>
struct hash<optional<_Tp>>
: private __poison_hash<remove_const_t<_Tp>>,
public __optional_hash_call_base<_Tp>
{
- using result_type = size_t;
- using argument_type = optional<_Tp>;
+ using result_type [[__deprecated__]] = size_t;
+ using argument_type [[__deprecated__]] = optional<_Tp>;
};
+ template<typename _Tp>
+ struct __is_fast_hash<hash<optional<_Tp>>> : __is_fast_hash<hash<_Tp>>
+ { };
+
/// @}
template <typename _Tp> optional(_Tp) -> optional<_Tp>;
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index f021c42396c..036f7667bd8 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -754,15 +754,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Destructible and constructible type properties.
- template<typename>
- struct add_rvalue_reference;
-
/**
* @brief Utility to simplify expressions used in unevaluated operands
* @ingroup utilities
*/
+
+ template<typename _Tp, typename _Up = _Tp&&>
+ _Up
+ __declval(int);
+
template<typename _Tp>
- typename add_rvalue_reference<_Tp>::type declval() noexcept;
+ _Tp
+ __declval(long);
+
+ template<typename _Tp>
+ auto declval() noexcept -> decltype(__declval<_Tp>(0));
template<typename, unsigned = 0>
struct extent;
@@ -2079,16 +2085,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct __declval_protector
{
static const bool __stop = false;
- static typename add_rvalue_reference<_Tp>::type __delegate();
};
template<typename _Tp>
- inline typename add_rvalue_reference<_Tp>::type
- declval() noexcept
+ auto declval() noexcept -> decltype(__declval<_Tp>(0))
{
static_assert(__declval_protector<_Tp>::__stop,
"declval() must not be used!");
- return __declval_protector<_Tp>::__delegate();
+ return __declval<_Tp>(0);
}
/// result_of
@@ -2588,7 +2592,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Result, typename _Ret>
struct __is_invocable_impl<_Result, _Ret, __void_t<typename _Result::type>>
- : __or_<is_void<_Ret>, is_convertible<typename _Result::type, _Ret>>::type
+ : is_convertible<typename _Result::type, _Ret>::type
+ { };
+
+ template<typename _Result>
+ struct __is_invocable_impl<_Result, void, __void_t<typename _Result::type>>
+ : true_type
{ };
template<typename _Fn, typename... _ArgTypes>
@@ -2687,10 +2696,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__call_is_nothrow_<_Fn, _ArgTypes...>>::type
{ };
+ template<typename _Result, typename _Ret, typename = void>
+ struct __is_nt_invocable_impl : false_type { };
+
+ template<typename _Result, typename _Ret>
+ struct __is_nt_invocable_impl<_Result, _Ret,
+ __void_t<typename _Result::type>>
+ : __and_<is_convertible<typename _Result::type, _Ret>,
+ is_nothrow_constructible<_Ret, typename _Result::type>>
+ { };
+
+ template<typename _Result>
+ struct __is_nt_invocable_impl<_Result, void,
+ __void_t<typename _Result::type>>
+ : true_type
+ { };
+
/// std::is_nothrow_invocable_r
template<typename _Ret, typename _Fn, typename... _ArgTypes>
struct is_nothrow_invocable_r
- : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>,
+ : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>,
__call_is_nothrow_<_Fn, _ArgTypes...>>::type
{ };
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index c18bcb6f72d..29a626004f9 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -267,32 +267,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// extract the elements in a tuple.
template<size_t... _Indexes> struct _Index_tuple { };
- // Concatenates two _Index_tuples.
- template<typename _Itup1, typename _Itup2> struct _Itup_cat;
-
- template<size_t... _Ind1, size_t... _Ind2>
- struct _Itup_cat<_Index_tuple<_Ind1...>, _Index_tuple<_Ind2...>>
- {
- using __type = _Index_tuple<_Ind1..., (_Ind2 + sizeof...(_Ind1))...>;
- };
+#ifdef __has_builtin
+# if __has_builtin(__make_integer_seq)
+# define _GLIBCXX_USE_MAKE_INTEGER_SEQ 1
+# endif
+#endif
// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
template<size_t _Num>
struct _Build_index_tuple
- : _Itup_cat<typename _Build_index_tuple<_Num / 2>::__type,
- typename _Build_index_tuple<_Num - _Num / 2>::__type>
- { };
-
- template<>
- struct _Build_index_tuple<1>
{
- typedef _Index_tuple<0> __type;
- };
+#if _GLIBCXX_USE_MAKE_INTEGER_SEQ
+ template<typename, size_t... _Indices>
+ using _IdxTuple = _Index_tuple<_Indices...>;
- template<>
- struct _Build_index_tuple<0>
- {
- typedef _Index_tuple<> __type;
+ using __type = __make_integer_seq<_IdxTuple, size_t, _Num>;
+#else
+ using __type = _Index_tuple<__integer_pack(_Num)...>;
+#endif
};
#if __cplusplus > 201103L
@@ -307,23 +299,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static constexpr size_t size() { return sizeof...(_Idx); }
};
- template<typename _Tp, _Tp _Num,
- typename _ISeq = typename _Build_index_tuple<_Num>::__type>
- struct _Make_integer_sequence;
-
- template<typename _Tp, _Tp _Num, size_t... _Idx>
- struct _Make_integer_sequence<_Tp, _Num, _Index_tuple<_Idx...>>
- {
- static_assert( _Num >= 0,
- "Cannot make integer sequence of negative length" );
-
- typedef integer_sequence<_Tp, static_cast<_Tp>(_Idx)...> __type;
- };
-
/// Alias template make_integer_sequence
template<typename _Tp, _Tp _Num>
using make_integer_sequence
- = typename _Make_integer_sequence<_Tp, _Num>::__type;
+#if _GLIBCXX_USE_MAKE_INTEGER_SEQ
+ = __make_integer_seq<integer_sequence, _Tp, _Num>;
+#else
+ = integer_sequence<_Tp, __integer_pack(_Num)...>;
+#endif
+
+#undef _GLIBCXX_USE_MAKE_INTEGER_SEQ
/// Alias template index_sequence
template<size_t... _Idx>
diff --git a/libstdc++-v3/include/std/variant b/libstdc++-v3/include/std/variant
index ee2571b7857..8f574f63924 100644
--- a/libstdc++-v3/include/std/variant
+++ b/libstdc++-v3/include/std/variant
@@ -1420,15 +1420,15 @@ namespace __variant
variant<_Types...>, std::index_sequence_for<_Types...>>,
public __variant_hash_call_base<_Types...>
{
- using result_type = size_t;
- using argument_type = variant<_Types...>;
+ using result_type [[__deprecated__]] = size_t;
+ using argument_type [[__deprecated__]] = variant<_Types...>;
};
template<>
struct hash<monostate>
{
- using result_type = size_t;
- using argument_type = monostate;
+ using result_type [[__deprecated__]] = size_t;
+ using argument_type [[__deprecated__]] = monostate;
size_t
operator()(const monostate& __t) const noexcept
@@ -1438,6 +1438,11 @@ namespace __variant
}
};
+ template<typename... _Types>
+ struct __is_fast_hash<hash<variant<_Types...>>>
+ : bool_constant<(__is_fast_hash<_Types>::value && ...)>
+ { };
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception
index e51d31c938b..9b177c7ee8a 100644
--- a/libstdc++-v3/libsupc++/exception
+++ b/libstdc++-v3/libsupc++/exception
@@ -98,9 +98,10 @@ namespace std
* %exception can result in a call of @c terminate()
* (15.5.1).'
*/
+ _GLIBCXX17_DEPRECATED
bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
-#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++98
+#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++17 or gnu++98
#define __cpp_lib_uncaught_exceptions 201411
/// The number of uncaught exceptions.
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h
index 0ece81d8137..dae4ca68fcf 100644
--- a/libstdc++-v3/libsupc++/exception_ptr.h
+++ b/libstdc++-v3/libsupc++/exception_ptr.h
@@ -201,19 +201,6 @@ namespace std
#endif
}
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 1130. copy_exception name misleading
- /// Obtain an exception_ptr pointing to a copy of the supplied object.
- /// This function is deprecated, use std::make_exception_ptr instead.
- template<typename _Ex>
- exception_ptr
- copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT _GLIBCXX_DEPRECATED;
-
- template<typename _Ex>
- exception_ptr
- copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
- { return std::make_exception_ptr<_Ex>(__ex); }
-
// @} group exceptions
} // namespace std
diff --git a/libstdc++-v3/testsuite/18_support/byte/global_neg.cc b/libstdc++-v3/testsuite/18_support/byte/global_neg.cc
index 722f65860f7..36f679095dc 100644
--- a/libstdc++-v3/testsuite/18_support/byte/global_neg.cc
+++ b/libstdc++-v3/testsuite/18_support/byte/global_neg.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <stddef.h>
diff --git a/libstdc++-v3/testsuite/18_support/byte/ops.cc b/libstdc++-v3/testsuite/18_support/byte/ops.cc
index 6573bd9b1e3..59773cbc8c8 100644
--- a/libstdc++-v3/testsuite/18_support/byte/ops.cc
+++ b/libstdc++-v3/testsuite/18_support/byte/ops.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <cstddef>
diff --git a/libstdc++-v3/testsuite/18_support/byte/requirements.cc b/libstdc++-v3/testsuite/18_support/byte/requirements.cc
index da5fc91a12a..4cb05df0405 100644
--- a/libstdc++-v3/testsuite/18_support/byte/requirements.cc
+++ b/libstdc++-v3/testsuite/18_support/byte/requirements.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <cstddef>
diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
index a53b0669b83..635672cc255 100644
--- a/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
+++ b/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
@@ -1,3 +1,4 @@
+// { dg-options "-Wno-deprecated" }
// { dg-do run { target c++11 } }
// Copyright (C) 2015-2017 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/18_support/launder/1.cc b/libstdc++-v3/testsuite/18_support/launder/1.cc
index 022e6cf5839..29c1b4ab333 100644
--- a/libstdc++-v3/testsuite/18_support/launder/1.cc
+++ b/libstdc++-v3/testsuite/18_support/launder/1.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <new>
#include <testsuite_hooks.h>
@@ -36,7 +36,7 @@ test01()
void
test02()
{
- // C++1z 1.8 [intro.object]
+ // C++17 1.8 [intro.object]
struct X { const int n; };
union U { X x; float f; };
diff --git a/libstdc++-v3/testsuite/18_support/launder/requirements.cc b/libstdc++-v3/testsuite/18_support/launder/requirements.cc
index 896a0038016..e89deb20094 100644
--- a/libstdc++-v3/testsuite/18_support/launder/requirements.cc
+++ b/libstdc++-v3/testsuite/18_support/launder/requirements.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// NB: This file is for testing new with NO OTHER INCLUDES.
#include <new>
diff --git a/libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc b/libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
index 38759c061a9..90e1eb63b44 100644
--- a/libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
+++ b/libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <new>
diff --git a/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc b/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
index 78581af5629..8bc4953e028 100644
--- a/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
+++ b/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
@@ -18,6 +18,8 @@
// PR 14026
// 18.6.4 uncaught_exception
+// { dg-options "-Wno-deprecated" }
+
#include <cstdlib>
#include <exception>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc b/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
index 7dcce563f7f..f315792dc7f 100644
--- a/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
+++ b/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
#include <cassert>
#include <exception>
diff --git a/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc b/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
index 51f2fa84739..0138f5b7cfa 100644
--- a/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
@@ -15,8 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
#include <utility>
diff --git a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
index 4e254e89191..17b41a007db 100644
--- a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
@@ -18,7 +18,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-error "static assertion failed" "" { target *-*-* } 2089 }
+// { dg-error "static assertion failed" "" { target *-*-* } 2093 }
#include <utility>
diff --git a/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc b/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
index 2721765ea75..438d50afddf 100644
--- a/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2011-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc b/libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
index 28c881ccc79..d90cd27f482 100644
--- a/libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
@@ -36,6 +36,6 @@ static_assert(is_constructible<duration<int>, duration<long>>{},
static_assert(!is_constructible<duration<int>, duration<int, ratio<2,3>>>{},
"cannot convert duration to one with different period");
static_assert(is_constructible<duration<float>, duration<int, ratio<2,3>>>{},
- "unless it has a floating-point representation");
-static_assert(is_constructible<duration<float>, duration<int, ratio<1,3>>>{},
- "or a period that is an integral multiple of the original");
+ "... unless the result type has a floating-point representation");
+static_assert(is_constructible<duration<int, ratio<1,3>>, duration<int>>{},
+ "... or the original's period is a multiple of the result's period");
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
index a4346e0accd..a3d4ca61134 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <functional>
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
index 823e9e0612c..de2a01d61c5 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
// { dg-do compile }
#include <functional>
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc b/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
index f49fcaa3492..d20334df2b9 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <functional>
diff --git a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
index 28d2512ecff..278f3d38738 100644
--- a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2016-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
index 447343e4c8d..c9fdbe9ca34 100644
--- a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2016-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
index 008d59062ab..8587258a64e 100644
--- a/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
+++ b/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2016-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
index 4c189cdc0c3..b10132174da 100644
--- a/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
index 4b0358ccc90..5a8a383b2b9 100644
--- a/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc b/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
index 6168d9c39c7..1cac59915c6 100644
--- a/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
@@ -1,5 +1,5 @@
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
index 4ccb459e0f5..dfa76aae61c 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
@@ -40,6 +40,10 @@ template<typename R, typename... T>
void test01()
{
+ struct T { T(int) { } };
+ struct NT { NT(int) noexcept { } };
+ struct Ex { explicit Ex(int) noexcept { } };
+
using func_type = void(*)();
static_assert( ! is_nt_invocable< func_type>(), "");
@@ -55,28 +59,46 @@ void test01()
static_assert( ! is_nt_invocable< mem_type, int >(), "");
static_assert( ! is_nt_invocable< mem_type, int& >(), "");
- static_assert( is_nt_invocable< mem_type, X& >(), "");
- static_assert( is_nt_invocable_r< int, mem_type, X& >(), "");
- static_assert( is_nt_invocable_r< int&, mem_type, X& >(), "");
- static_assert( is_nt_invocable_r< long, mem_type, X& >(), "");
- static_assert( is_nt_invocable_r< int&, mem_type, X* >(), "");
+ static_assert( is_nt_invocable< mem_type, X& >(), "");
+ static_assert( is_nt_invocable_r< int, mem_type, X& >(), "");
+ static_assert( is_nt_invocable_r< int&, mem_type, X& >(), "");
+ static_assert( is_nt_invocable_r< long, mem_type, X& >(), "");
+ static_assert( ! is_nt_invocable_r< long&, mem_type, X& >(),
+ "conversion fails, cannot bind long& to int");
+ static_assert( is_nt_invocable_r< int&, mem_type, X* >(), "");
+
+ static_assert( ! is_nt_invocable_r< T, mem_type, X& >(),
+ "conversion throws");
+ static_assert( is_nt_invocable_r< NT, mem_type, X& >(), "");
+ static_assert( ! is_nt_invocable_r< Ex, mem_type, X& >(),
+ "conversion fails, would use explicit constructor");
using memfun_type = int (X::*)();
- static_assert( ! is_nt_invocable< memfun_type >(), "");
- static_assert( ! is_nt_invocable< memfun_type, int >(), "");
- static_assert( ! is_nt_invocable< memfun_type, int& >(), "");
- static_assert( ! is_nt_invocable< memfun_type, X& >(), "");
- static_assert( ! is_nt_invocable< memfun_type, X* >(), "");
+ static_assert( ! is_nt_invocable< memfun_type >(), "no object");
+ static_assert( ! is_nt_invocable< memfun_type, int >(), "no object");
+ static_assert( ! is_nt_invocable< memfun_type, int& >(), "no object");
+ static_assert( ! is_nt_invocable< memfun_type, X& >(), "call throws");
+ static_assert( ! is_nt_invocable< memfun_type, X* >(), "call throws");
+
+ static_assert( ! is_nt_invocable_r< T, memfun_type, X& >(), "call throws");
+ static_assert( ! is_nt_invocable_r< NT, memfun_type, X& >(), "call throws");
+ static_assert( ! is_nt_invocable_r< Ex, memfun_type, X& >(), "call throws");
#if __cpp_noexcept_function_type
using memfun_type_nt = int (X::*)() noexcept;
- static_assert( ! is_nt_invocable< memfun_type_nt >(), "");
- static_assert( ! is_nt_invocable< memfun_type_nt, int >(), "");
- static_assert( ! is_nt_invocable< memfun_type_nt, int& >(), "");
+ static_assert( ! is_nt_invocable< memfun_type_nt >(), "no object");
+ static_assert( ! is_nt_invocable< memfun_type_nt, int >(), "no object");
+ static_assert( ! is_nt_invocable< memfun_type_nt, int& >(), "no object");
static_assert( is_nt_invocable< memfun_type_nt, X& >(), "");
static_assert( is_nt_invocable< memfun_type_nt, X* >(), "");
+
+ static_assert( ! is_nt_invocable_r< T, memfun_type_nt, X& >(),
+ "conversion throws");
+ static_assert( is_nt_invocable_r< NT, memfun_type_nt, X& >(), "");
+ static_assert( ! is_nt_invocable_r< Ex, memfun_type_nt, X& >(),
+ "conversion fails, would use explicit constructor");
#endif
struct F {
@@ -89,12 +111,44 @@ void test01()
};
using CF = const F;
- static_assert( ! is_nt_invocable_r< int&, F >(), "");
- static_assert( is_nt_invocable_r< long&, CF >(), "");
- static_assert( ! is_nt_invocable_r< short&, F, int >(), "" );
- static_assert( is_nt_invocable_r< char&, F&, int >(), "" );
- static_assert( is_nt_invocable_r< char&, CF, int >(), "" );
- static_assert( is_nt_invocable_r< char&, CF&, int >(), "" );
-
- static_assert( ! is_nt_invocable< F, int, int >(), "");
+ static_assert( ! is_nt_invocable< F >(), "call throws");
+ static_assert( is_nt_invocable< CF >(), "");
+
+ static_assert( ! is_nt_invocable_r< int&, F >(), "call throws");
+ static_assert( is_nt_invocable_r< long&, CF >(), "");
+ static_assert( ! is_nt_invocable_r< T, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< NT, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< Ex, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< T, CF >(), "conversion throws");
+ static_assert( is_nt_invocable_r< NT, CF >(), "" );
+ static_assert( ! is_nt_invocable_r< Ex, CF >(), "conversion fails");
+
+ static_assert( ! is_nt_invocable< F, int >(), "call throws");
+ static_assert( is_nt_invocable< F&, int >(), "");
+
+ static_assert( ! is_nt_invocable_r< short&, F, int >(),
+ "call throws" );
+ static_assert( is_nt_invocable_r< char&, F&, int >(), "");
+ static_assert( ! is_nt_invocable_r< T, F&, int >(),
+ "conversion throws");
+ static_assert( is_nt_invocable_r< NT, F&, int >(), "");
+ static_assert( ! is_nt_invocable_r< Ex, F&, int >(),
+ "conversion fails, would use explicit constructor");
+
+ static_assert( is_nt_invocable< CF, int >(), "");
+ static_assert( is_nt_invocable< CF&, int >(), "");
+
+ static_assert( is_nt_invocable_r< char&, CF, int >(), "");
+ static_assert( is_nt_invocable_r< char&, CF&, int >(), "");
+
+ static_assert( ! is_nt_invocable_r< T, CF&, int >(),
+ "conversion throws");
+ static_assert( is_nt_invocable_r< NT, CF&, int >(), "");
+ static_assert( ! is_nt_invocable_r< Ex, CF&, int >(),
+ "conversion fails, would use explicit constructor");
+
+ static_assert( ! is_nt_invocable< F, int, int >(),
+ "would call private member");
+ static_assert( ! is_nt_invocable_r<void, F, int, int >(),
+ "would call private member");
}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
index 7217324e1b3..7fd3d924843 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
@@ -27,7 +27,9 @@ template<typename... T>
constexpr bool is_nt_invocable_conv(std::true_type)
{
using result_type = typename std::__invoke_result<T...>::type;
- return std::is_void<R>::value || std::is_convertible<result_type, R>::value;
+ return std::is_void<R>::value
+ || (std::is_convertible<result_type, R>::value
+ && std::is_nothrow_constructible<R, result_type>::value);
}
template<typename R, typename... T>
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
index e3e80f91979..308155383f0 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
@@ -47,4 +47,4 @@ void test01()
// { dg-error "required from here" "" { target *-*-* } 39 }
// { dg-error "required from here" "" { target *-*-* } 41 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1754 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1760 }
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
index 86b0c2d6da7..412608e5669 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
@@ -47,5 +47,5 @@ void test01()
// { dg-error "required from here" "" { target *-*-* } 39 }
// { dg-error "required from here" "" { target *-*-* } 41 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1650 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1656 }
diff --git a/libstdc++-v3/testsuite/20_util/optional/hash.cc b/libstdc++-v3/testsuite/20_util/optional/hash.cc
index c16f0b20fb2..35ae51b947a 100644
--- a/libstdc++-v3/testsuite/20_util/optional/hash.cc
+++ b/libstdc++-v3/testsuite/20_util/optional/hash.cc
@@ -29,14 +29,23 @@ template<class T>
auto f(...) -> decltype(std::false_type());
static_assert(!decltype(f<S>(0))::value, "");
-static_assert(!std::is_invocable_v<
- std::hash<std::optional<S>>&, std::optional<S> const&> );
-static_assert(std::is_invocable_v<
- std::hash<std::optional<int>>&, std::optional<int> const&> );
+
+template<typename T>
+constexpr bool hashable()
+{ return std::is_invocable_v<std::hash<T>&, const T&>; }
+
+static_assert(!hashable<std::optional<S>>());
+static_assert(!hashable<std::optional<const S>>());
+static_assert(hashable<std::optional<int>>());
+static_assert(hashable<std::optional<const int>>());
int main()
{
int x = 42;
std::optional<int> x2 = 42;
VERIFY(std::hash<int>()(x) == std::hash<std::optional<int>>()(x2));
+
+ // PR libstdc++/82262
+ std::optional<const int> x3 = x2;
+ VERIFY(std::hash<int>()(x) == std::hash<std::optional<const int>>()(x3));
}
diff --git a/libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
index c8e6fd60591..3831cf2316f 100644
--- a/libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
index c3c79d4b6e6..14049dbe0e3 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2016-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
index 88d5a999805..e529bf85c29 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
@@ -20,7 +20,7 @@
#include <memory>
#include <testsuite_hooks.h>
-// C++1z 20.11.2.2.1 shared_ptr constructors [util.smartptr.shared.const]
+// C++17 20.11.2.2.1 shared_ptr constructors [util.smartptr.shared.const]
template<typename To, typename From>
constexpr bool check()
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
index ecd0780fbc2..9621185fd40 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
index 4216f9510e0..59115432782 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
@@ -25,7 +25,7 @@ struct A
int i = 0;
};
-// C++1z 20.11.2.2.5 shared_ptr observers [util.smartptr.shared.obs]
+// C++17 20.11.2.2.5 shared_ptr observers [util.smartptr.shared.obs]
// get
void
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
index 663b2c0f7a7..e0ae50b855c 100644
--- a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc b/libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
index 2f2acebccf1..9bf41e0b57d 100644
--- a/libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2011-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/tuple/78939.cc b/libstdc++-v3/testsuite/20_util/tuple/78939.cc
index bab143b387f..552ceb363ec 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/78939.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/78939.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// PR libstdc++/78939
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
index 47e2488348a..0804d5584e3 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
index 23aca62caad..dbf27069f9a 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/variant/deduction.cc b/libstdc++-v3/testsuite/20_util/variant/deduction.cc
index 33bc9d2a40e..1059a52a211 100644
--- a/libstdc++-v3/testsuite/20_util/variant/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/variant/deduction.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/void_t/1.cc b/libstdc++-v3/testsuite/20_util/void_t/1.cc
index 78a6daa5e65..54bfaa0c35a 100644
--- a/libstdc++-v3/testsuite/20_util/void_t/1.cc
+++ b/libstdc++-v3/testsuite/20_util/void_t/1.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
+// { dg-options "-std=gnu++17" }
// { dg-do compile }
#include <type_traits>
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
index ea384172aca..dedea6e22f4 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <memory>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
index 0afbe119d4f..76f1db96e9f 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
index 5ff6988ef7c..f864821a77f 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <string>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
index 205714a7f5f..52ab0601a24 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
new file mode 100644
index 00000000000..88be60d05ab
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
@@ -0,0 +1,53 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do run { target c++17 } }
+
+// Copyright (C) 2011-2017 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on string (via swap). If the implementation changed
+// this test may begin to fail.
+
+#include <string>
+#include <utility>
+#include <testsuite_hooks.h>
+
+class tstring : public std::basic_string<char>
+{
+public:
+ tstring() : std::basic_string<char>() {}
+ tstring(tstring&& s) : std::basic_string<char>(std::move(s)) {}
+ tstring& operator=(tstring&& s) = default;
+};
+
+void test01()
+{
+ tstring a, b;
+ a.push_back('1');
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 );
+
+ tstring c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == '1' );
+ VERIFY( b.size() == 0 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
index 0afbe119d4f..76f1db96e9f 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
index 2a39d002110..b56c0b80e02 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <string>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
index 23ae07c6634..daf3c4f3bde 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
new file mode 100644
index 00000000000..63684de68a6
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
@@ -0,0 +1,53 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do run { target c++17 } }
+
+// Copyright (C) 2011-2017 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on string (via swap). If the implementation changed
+// this test may begin to fail.
+
+#include <string>
+#include <utility>
+#include <testsuite_hooks.h>
+
+class tstring : public std::basic_string<wchar_t>
+{
+public:
+ tstring() : std::basic_string<wchar_t>() {}
+ tstring(tstring&& s) : std::basic_string<wchar_t>(std::move(s)) {}
+ tstring& operator=(tstring&& s) = default;
+};
+
+void test01()
+{
+ tstring a, b;
+ a.push_back(L'1');
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == L'1' && a.size() == 0 );
+
+ tstring c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == L'1' );
+ VERIFY( b.size() == 0 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
index 0cb4c79861b..e5737a30793 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
index d8322a8b274..7d88f56a021 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
index 8118b97468b..f2c971e1b02 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
index 27b6def1b05..c00ec83a20f 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
index 0049ae3ca0c..f6de2485287 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
index efd280fea23..d404a1d08ae 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
index 5ce2909d832..79a99391814 100644
--- a/libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <array>
diff --git a/libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc b/libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
index ec11b05a54c..16d66215085 100644
--- a/libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <array>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
index c7c0f2e5ae1..c0e333b2e55 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <deque>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
index 935123e1345..c0dd778e6fd 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <deque>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
index ee30288678f..ff98d3e35b0 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <forward_list>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
index eb0ffbd8fd8..0f7ea34c972 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <forward_list>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
index c4df79526a8..cded2492d35 100644
--- a/libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <list>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
index 3472c6d4287..02a7ee4a403 100644
--- a/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <list>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
index 53eb8a0d3d4..dce9d4284e7 100644
--- a/libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <queue>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
index 8b9c8888a0a..a30c6fc33fc 100644
--- a/libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <stack>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
index ef38a727ae5..d6a8b25c209 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
@@ -30,7 +30,7 @@ struct E : std::equal_to<T> { };
using __gnu_test::CustomPointerAlloc;
-// { dg-xfail-if "node reinsertion assumes raw pointers" { c++1z } }
+// { dg-xfail-if "node reinsertion assumes raw pointers" { c++17 } }
// TODO when removing this xfail change the test back to "dg-do run".
template class std::unordered_set<T, H, E, CustomPointerAlloc<T>>;
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
index ea1745b9115..a653a26799f 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <vector>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
index 413f02cc0cb..3125f824d16 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <vector>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
index ee906a9dd32..e8b51df935d 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <vector>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/24_iterators/container_access.cc b/libstdc++-v3/testsuite/24_iterators/container_access.cc
index b8d0e80a2de..b90324582e9 100644
--- a/libstdc++-v3/testsuite/24_iterators/container_access.cc
+++ b/libstdc++-v3/testsuite/24_iterators/container_access.cc
@@ -1,4 +1,4 @@
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
// { dg-options "-std=gnu++17" }
// Copyright (C) 2015-2017 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc b/libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc
index 1d5b0739007..cb6b1c41619 100644
--- a/libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc
+++ b/libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc
@@ -1,5 +1,5 @@
-// { dg-do compile { target c++1z } }
// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
// Copyright (C) 2017 Free Software Foundation, Inc.
//
@@ -47,7 +47,7 @@ void
test03()
{
using std::reverse_iterator;
- static std::initializer_list<int> il{1};
+ static constexpr std::initializer_list<int> il{1};
static_assert(std::cbegin(il) == il.begin());
static_assert(std::cend(il) == il.end());
static_assert(std::rbegin(il) == reverse_iterator<const int*>(il.end()));
diff --git a/libstdc++-v3/testsuite/25_algorithms/clamp/1.cc b/libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
index 991b10d1fe3..655c241e9a2 100644
--- a/libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
@@ -30,12 +30,12 @@ void test01()
VERIFY( y == 3 );
VERIFY( z == 4 );
- const int xc = std::clamp(1, 2, 4, std::greater<int>());
- const int yc = std::clamp(3, 2, 4, std::greater<int>());
- const int zc = std::clamp(5, 2, 4, std::greater<int>());
- VERIFY( xc == 4 );
- VERIFY( yc == 2 );
- VERIFY( zc == 2 );
+ const int xc = std::clamp(1, 4, 2, std::greater<int>());
+ const int yc = std::clamp(3, 4, 2, std::greater<int>());
+ const int zc = std::clamp(5, 4, 2, std::greater<int>());
+ VERIFY( xc == 2 );
+ VERIFY( yc == 3 );
+ VERIFY( zc == 4 );
}
int
diff --git a/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc b/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
index 0864b8e1d30..606748ec689 100644
--- a/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
@@ -27,5 +27,5 @@
# error "Feature-test macro for clamp has wrong value"
#endif
-static_assert(std::clamp(2, 0, 1) == 1, "");
-static_assert(std::clamp(2, 0, 1, std::greater<int>()) == 0, "");
+static_assert(std::clamp(2, 0, 1) == 1);
+static_assert(std::clamp(2, 1, 0, std::greater<int>()) == 1);
diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/1.cc b/libstdc++-v3/testsuite/25_algorithms/sample/1.cc
index 7b8700a339b..b5ec7a9c71c 100644
--- a/libstdc++-v3/testsuite/25_algorithms/sample/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/sample/1.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <algorithm>
#include <random>
diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/2.cc b/libstdc++-v3/testsuite/25_algorithms/sample/2.cc
index 94ded717e62..1660c154b6c 100644
--- a/libstdc++-v3/testsuite/25_algorithms/sample/2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/sample/2.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#ifndef _GLIBCXX_ASSERTIONS
// Make std::uniform_int_distribution check its parameters
diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/81221.cc b/libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
index 28ec0e3152a..c3938409adf 100644
--- a/libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// { dg-require-parallel-mode "" }
#include <algorithm>
diff --git a/libstdc++-v3/testsuite/25_algorithms/search/searcher.cc b/libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
index 794cdb9a678..1d9173f3b19 100644
--- a/libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
#include <algorithm>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/26_numerics/gcd/1.cc b/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
index 0f0b7b85b4e..cc89046e63b 100644
--- a/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
@@ -15,8 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
#include <numeric>
diff --git a/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc b/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
index d88f145d754..30524a1b06c 100644
--- a/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
@@ -15,8 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
#include <numeric>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
index c17ba97a00f..52009f79056 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
// { dg-xfail-run-if "AIX long double" { powerpc-ibm-aix* } }
#include <cmath>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
index 9f7960cc8d7..ab066dcf5d4 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
@@ -1,4 +1,4 @@
-// { dg-do compile { target { ! c++1z } } }
+// { dg-do compile { target { ! c++17 } } }
// Copyright (C) 2007-2017 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/26_numerics/lcm/1.cc b/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
index 367f0a3e0e3..2c3337e4c0d 100644
--- a/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
@@ -15,8 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
#include <numeric>
diff --git a/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc b/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
index 7a908a4568f..e16e6ae1ee9 100644
--- a/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
@@ -15,8 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++1z" }
-// { dg-do compile { target c++1z } }
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
#include <numeric>
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc b/libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
index 72d4bc09126..f9e26970756 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <valarray>
diff --git a/libstdc++-v3/testsuite/27_io/types/4.cc b/libstdc++-v3/testsuite/27_io/types/4.cc
index ee1a77736ce..f04b2fa6bb4 100644
--- a/libstdc++-v3/testsuite/27_io/types/4.cc
+++ b/libstdc++-v3/testsuite/27_io/types/4.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// In C++17 these names are not reserved by the library.
#define io_state 1
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
index 63b3f67f5c9..76f63b7d175 100644
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <regex>
#include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/28_regex/simple_c++11.cc b/libstdc++-v3/testsuite/28_regex/simple_c++11.cc
new file mode 100644
index 00000000000..2cfa503fc07
--- /dev/null
+++ b/libstdc++-v3/testsuite/28_regex/simple_c++11.cc
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+#include <regex>
+
+// Ensure compilation of trivial example still works with C++11.
+// https://gcc.gnu.org/ml/libstdc++/2017-09/msg00040.html
+std::regex r{""};
+std::cmatch m;
+bool b = regex_match("", m, r);
diff --git a/libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc b/libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
index b72c1a12a40..a3e2d4d00f8 100644
--- a/libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <mutex>
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
index e420ab08378..d9bdc5bf4a6 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do run { target c++1z } }
+// { dg-do run { target c++17 } }
// { dg-require-cstdint "" }
// Copyright (C) 2017 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
index 7d4f5bfc386..ddfb3a0fbd7 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <mutex>
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
index cbf10757f48..3961766369e 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// { dg-require-cstdint "" }
// { dg-require-gthreads "" }
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
index b8a09042094..aa57fcbf431 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
@@ -1,5 +1,5 @@
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
// { dg-require-cstdint "" }
// { dg-require-gthreads "" }
diff --git a/libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc b/libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
index 4f36bab9d6a..277bb43429c 100644
--- a/libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
@@ -16,7 +16,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++17" }
-// { dg-do compile { target c++1z } }
+// { dg-do compile { target c++17 } }
#include <mutex>
diff --git a/libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc b/libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
index 6d55c027b01..fbf8bd4d6d3 100644
--- a/libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
+++ b/libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
@@ -1,5 +1,5 @@
-// { dg-options "-lstdc++fs -std=gnu++1z" }
-// { dg-do run { target c++1z } }
+// { dg-options "-lstdc++fs -std=gnu++17" }
+// { dg-do run { target c++17 } }
// { dg-require-filesystem-ts "" }
// Copyright (C) 2016-2017 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
index c5cdd1d8943..bff5a8517a9 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
index fc0d9aa6fc1..3b5d5e32a14 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
index 9058660cec3..cd5d653c3b0 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// -*- C++ -*-
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
index fdf0effdba8..29dfb3709ac 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// -*- C++ -*-
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
index f513b4fb4c0..c2b0c6b91ea 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
index f0436a8a675..20dcb6d6093 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
index a28c77966b3..5eba0ade962 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
index 70293689966..a06438ad532 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
index d3ee98349f6..e671aa015cf 100644
--- a/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
+++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
@@ -1,5 +1,5 @@
// __gnu_pbds::test::basic_type has ambiguous string conversions in C++17
-// { dg-do run { target { ! c++1z } } }
+// { dg-do run { target { ! c++17 } } }
// { dg-require-time "" }
// This can take long on simulators, timing out the test.
// { dg-options "-DITERATIONS=5" { target simulator } }
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
index d31ae7e6eac..004738052e4 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
@@ -1,5 +1,5 @@
-// { dg-options "-g -O0 -std=gnu++1z" }
-// { dg-do run { target c++1z } }
+// { dg-options "-g -O0 -std=gnu++17" }
+// { dg-do run { target c++17 } }
// { dg-skip-if "" { *-*-* } { "-D_GLIBCXX_PROFILE" } }
// Copyright (C) 2014-2017 Free Software Foundation, Inc.