aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-08-10 09:28:11 +0000
committerMartin Jambor <mjambor@suse.cz>2016-08-10 09:28:11 +0000
commit03677eaa7c439c47380d2722638bc6a900b4c90d (patch)
tree6c161ef23e78c67b1824e06ba1de372bd1643d7e /libstdc++-v3
parent235409ecd427505297676d22cabbe90553a46086 (diff)
Merged trunk revision 239241 into the hsa branch
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/hsa@239318 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog816
-rw-r--r--libstdc++-v3/acinclude.m42
-rw-r--r--libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt84
-rw-r--r--libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt84
-rw-r--r--libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt84
-rw-r--r--libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.11/amd64/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.11/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt85
-rw-r--r--libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt80
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver14
-rwxr-xr-xlibstdc++-v3/configure2
-rw-r--r--libstdc++-v3/doc/html/manual/abi.html2
-rw-r--r--libstdc++-v3/doc/html/manual/status.html283
-rw-r--r--libstdc++-v3/doc/xml/manual/abi.xml1
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx2017.xml638
-rw-r--r--libstdc++-v3/include/Makefile.am3
-rw-r--r--libstdc++-v3/include/Makefile.in3
-rw-r--r--libstdc++-v3/include/bits/allocator.h2
-rw-r--r--libstdc++-v3/include/bits/basic_string.h332
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc2
-rw-r--r--libstdc++-v3/include/bits/c++config7
-rw-r--r--libstdc++-v3/include/bits/invoke.h104
-rw-r--r--libstdc++-v3/include/bits/range_access.h4
-rw-r--r--libstdc++-v3/include/bits/shared_ptr.h23
-rw-r--r--libstdc++-v3/include/bits/shared_ptr_base.h26
-rw-r--r--libstdc++-v3/include/bits/specfun.h2
-rw-r--r--libstdc++-v3/include/bits/stl_function.h3
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h4
-rw-r--r--libstdc++-v3/include/bits/string_view.tcc227
-rw-r--r--libstdc++-v3/include/bits/uses_allocator.h4
-rw-r--r--libstdc++-v3/include/c_global/cmath2
-rw-r--r--libstdc++-v3/include/experimental/tuple15
-rw-r--r--libstdc++-v3/include/ext/ropeimpl.h2
-rw-r--r--libstdc++-v3/include/std/array6
-rw-r--r--libstdc++-v3/include/std/chrono93
-rw-r--r--libstdc++-v3/include/std/functional155
-rw-r--r--libstdc++-v3/include/std/ratio16
-rw-r--r--libstdc++-v3/include/std/shared_mutex2
-rw-r--r--libstdc++-v3/include/std/string_view652
-rw-r--r--libstdc++-v3/include/std/system_error7
-rw-r--r--libstdc++-v3/include/std/tuple45
-rw-r--r--libstdc++-v3/include/std/type_traits302
-rw-r--r--libstdc++-v3/include/std/utility7
-rw-r--r--libstdc++-v3/include/tr1/bessel_function.tcc4
-rw-r--r--libstdc++-v3/include/tr1/beta_function.tcc4
-rw-r--r--libstdc++-v3/include/tr1/cmath6
-rw-r--r--libstdc++-v3/include/tr1/ell_integral.tcc4
-rw-r--r--libstdc++-v3/include/tr1/exp_integral.tcc4
-rw-r--r--libstdc++-v3/include/tr1/gamma.tcc4
-rw-r--r--libstdc++-v3/include/tr1/hypergeometric.tcc4
-rw-r--r--libstdc++-v3/include/tr1/legendre_function.tcc4
-rw-r--r--libstdc++-v3/include/tr1/modified_bessel_func.tcc4
-rw-r--r--libstdc++-v3/include/tr1/poly_hermite.tcc4
-rw-r--r--libstdc++-v3/include/tr1/poly_laguerre.tcc4
-rw-r--r--libstdc++-v3/include/tr1/riemann_zeta.tcc4
-rw-r--r--libstdc++-v3/include/tr1/special_function_util.h4
-rwxr-xr-xlibstdc++-v3/scripts/testsuite_flags.in2
-rw-r--r--libstdc++-v3/testsuite/17_intro/freestanding.cc2
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc2
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc2
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc2
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c1
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc2
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc39
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/as_const/1.cc30
-rw-r--r--libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc28
-rw-r--r--libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc37
-rw-r--r--libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc24
-rw-r--r--libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/literals/range.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc33
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc5
-rw-r--r--libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc57
-rw-r--r--libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/forward/1_neg.cc5
-rw-r--r--libstdc++-v3/testsuite/20_util/function/cons/72820.cc27
-rw-r--r--libstdc++-v3/testsuite/20_util/function/cons/refqual.cc31
-rw-r--r--libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc58
-rw-r--r--libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc36
-rw-r--r--libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/value.cc54
-rw-r--r--libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/value.cc60
-rw-r--r--libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/typedefs.cc36
-rw-r--r--libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/value.cc66
-rw-r--r--libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc19
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation.cc (renamed from libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/explicit_instantiation.cc)10
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation_ext.cc28
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs.cc (renamed from libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/explicit_instantiation.cc)17
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs_ext.cc29
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/value.cc191
-rw-r--r--libstdc++-v3/testsuite/20_util/is_callable/value_ext.cc26
-rw-r--r--libstdc++-v3/testsuite/20_util/is_floating_point/value.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/is_integral/value.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation.cc (renamed from libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/explicit_instantiation.cc)9
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation_ext.cc28
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc30
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc29
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/value.cc92
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_callable/value_ext.cc27
-rw-r--r--libstdc++-v3/testsuite/20_util/is_signed/value.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/is_unsigned/value.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc3
-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-1.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc3
-rw-r--r--libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/owner_less/void.cc48
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc9
-rw-r--r--libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc49
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc13
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc13
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc31
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc85
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc85
-rw-r--r--libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc59
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/apply/1.cc67
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc3
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc61
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc33
-rw-r--r--libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc29
-rw-r--r--libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc344
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc2
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc6
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc39
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc39
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc45
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc45
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc42
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc42
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc46
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc46
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc54
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc54
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc40
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc40
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc88
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc88
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc41
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc41
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc164
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc69
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc48
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc41
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc69
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc (renamed from libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/typedefs.cc)46
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc40
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc74
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc30
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc40
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc75
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc32
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc40
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc25
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc69
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc93
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc77
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc74
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc91
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc55
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc44
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc134
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc51
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc134
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc51
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc49
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc50
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc45
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc45
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc98
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc97
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc97
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc46
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc98
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc97
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc97
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc46
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc98
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc57
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc70
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc98
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc56
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc70
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc55
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc83
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc83
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc246
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc246
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc31
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc33
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc26
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc23
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc24
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc24
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc23
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc47
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc36
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc43
-rw-r--r--libstdc++-v3/testsuite/22_locale/conversions/string/1.cc1
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc6
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc6
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc7
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc3
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc2
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc111
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc72
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc (renamed from libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.c)0
-rw-r--r--libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc3
-rw-r--r--libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc3
-rw-r--r--libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc18
-rw-r--r--libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc2
-rw-r--r--libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc5
-rw-r--r--libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc141
-rw-r--r--libstdc++-v3/testsuite/abi/header_cxxabi.c1
-rw-r--r--libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc26
-rw-r--r--libstdc++-v3/testsuite/experimental/feat-cxx14.cc28
-rw-r--r--libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc5
-rw-r--r--libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/rope/6.cc28
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp7
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc40
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc40
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc44
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc44
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc2
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc28
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc32
-rw-r--r--libstdc++-v3/testsuite/util/testsuite_abi.cc5
378 files changed, 12327 insertions, 1242 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 3f5d6b07814..c676d03843c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,819 @@
+2016-08-06 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/status_cxx2017.xml: Update status table.
+ * doc/html/manual/status.html: Regenerate.
+
+ * testsuite/lib/libstdc++.exp: Fix typo in comment.
+
+ PR libstdc++/72820
+ * include/std/functional (_Function_base::_Base_manager::_M_clone):
+ Qualify new operator.
+ * testsuite/20_util/function/cons/72820.cc: New test.
+
+ * doc/xml/manual/status_cxx2017.xml: Add missing LFTSv2 features.
+ * doc/html/manual/status.html: Regenerate.
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/bits/invoke.h: New header.
+ (__invoke): Make constexpr. Add && to types in exception specification.
+ * include/experimental/tuple (apply, __apply_impl): Fix non-reserved
+ names. Include <bits/invoke.h> and use std::__invoke.
+ * include/std/functional (__invfwd, __invoke_impl, __invoke): Move to
+ new header.
+ (invoke): Add && to types in exception specification.
+ * include/std/tuple (apply, __apply_impl): Define for C++17.
+ * testsuite/20_util/tuple/apply/1.cc: New test.
+ * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error
+ lineno.
+
+2016-08-05 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/status_cxx2017.xml: Correct shared_from_this status.
+ * doc/html/manual/status.html: Regenerate.
+
+ * include/std/chrono (floor, ceil, round, abs): New for C++17.
+ * testsuite/20_util/duration_cast/rounding.cc: New test.
+ * testsuite/20_util/time_point_cast/rounding.cc: New test.
+ * doc/xml/manual/status_cxx2017.xml: Update status table.
+ * doc/html/manual/status.html: Regenerate.
+ * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
+ dg-error lineno.
+ * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+ * testsuite/20_util/duration/literals/range.cc: Likewise.
+
+ * include/std/functional (__callable_functor): Remove.
+ (_Function_handler::_M_invoke): Use __invoke instead of
+ __callable_functor or mem_fn.
+ (function::_Callable): Use lvalue in result_of expression.
+ (function): Remove TODO comments about allocators.
+ * testsuite/20_util/function/cons/refqual.cc: New test.
+
+2016-08-04 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/status_cxx2017.xml: Update status table.
+ * include/std/functional (__inv_unwrap): Move to <type_traits>.
+ (__invoke_impl): Remove exception specifications.
+ (__invoke, invoke): Add exception specifications using
+ __is_nothrow_callable.
+ * include/std/type_traits (__inv_unwrap): Move from <functional>.
+ (__is_callable_impl, __call_is_nt, __call_is_nothrow): New helpers.
+ (__is_callable, __is_nothrow_callable): New traits.
+ (is_callable, is_callable_v): New C++17 traits.
+ (is_nothrow_callable, is_nothrow_callable_v): Likewise.
+ * testsuite/20_util/is_callable/requirements/
+ explicit_instantiation.cc: New test.
+ * testsuite/20_util/is_callable/requirements/
+ explicit_instantiation_ext.cc: New test.
+ * testsuite/20_util/is_callable/requirements/typedefs.cc: New test.
+ * testsuite/20_util/is_callable/requirements/typedefs_ext.cc: New
+ test.
+ * testsuite/20_util/is_callable/value.cc: New test.
+ * testsuite/20_util/is_callable/value_ext.cc: New test.
+ * testsuite/20_util/is_nothrow_callable/requirements/
+ explicit_instantiation.cc: New test.
+ * testsuite/20_util/is_nothrow_callable/requirements/
+ explicit_instantiation_ext.cc: New test.
+ * testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc:
+ New test.
+ * testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc:
+ New test.
+ * testsuite/20_util/is_nothrow_callable/value.cc: New test.
+ * testsuite/20_util/is_nothrow_callable/value_ext.cc: New test.
+
+ * doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
+ * doc/html/manual/status.html: Regenerate.
+
+ * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Use
+ effective target not dg-options. Move check for feature-test macro to:
+ * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
+ New test.
+
+ * include/std/functional (_Unwrap): Rename to __inv_unwrap.
+ (__invfwd): Adjust.
+ (__invoke_impl): Remove unused template parameters.
+ * testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
+ parameter.
+ * testsuite/20_util/function_objects/invoke/ref_ext.cc: Copy 59768.cc
+ and test __invoke extension for C++11.
+
+2016-08-03 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/shared_ptr_base.h (__cpp_lib_enable_shared_from_this):
+ Define feature-test macro.
+ * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Test
+ for the macro.
+
+ * include/bits/shared_ptr.h (shared_ptr::weak_type): Define.
+ * include/bits/shared_ptr_base.h (__shared_ptr::weak_type): Define.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
+ * testsuite/20_util/shared_ptr/requirements/weak_type.cc: New test.
+ * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
+
+ * include/std/utility (as_const): Define.
+ * testsuite/20_util/as_const/1.cc: New test.
+ * testsuite/20_util/as_const/rvalue_neg.cc: New test.
+
+ * include/bits/shared_ptr.h (owner_less): Add default template
+ argument.
+ * include/bits/shared_ptr_base.h (_Sp_owner_less<void, void>): Define
+ specialization.
+ (owner_less<void>): Define specialization.
+ * include/bits/stl_function.h (__cpp_lib_transparent_operators):
+ Update value.
+ * testsuite/20_util/owner_less/void.cc: New test.
+ * testsuite/experimental/feat-cxx14.cc: Update macro value tested.
+
+ * include/bits/allocator.h (__cpp_lib_incomplete_container_elements):
+ Define feature-test macro.
+ * include/bits/range_access.h (__cpp_lib_array_constexpr): Likewise.
+ * include/std/shared_mutex (__cpp_lib_shared_mutex): Uncomment.
+ * include/std/type_traits (__cpp_lib_logical_traits): Fix value.
+ (__cpp_lib_type_trait_variable_templates): Define.
+
+ * include/bits/stl_function.h: Remove commented-out macro.
+ * include/bits/stl_tree.h (__cpp_lib_generic_associative_lookup):
+ Define feature-test macro.
+ * testsuite/experimental/feat-cxx14.cc: Add tests for more macros.
+
+ * include/bits/c++config (_GLIBCXX_USE_STD_SPEC_FUNCS): Define for
+ C++17, or for C++11/C++14 when __STDCPP_WANT_MATH_SPEC_FUNCS__ is
+ true.
+ * include/bits/specfun.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]: Don't
+ do #error for C++17.
+ * include/c_global/cmath: Check _GLIBCXX_USE_STD_SPEC_FUNCS instead
+ of __STDCPP_WANT_MATH_SPEC_FUNCS__.
+ * include/tr1/bessel_function.tcc: Likewise.
+ * include/tr1/beta_function.tcc: Likewise.
+ * include/tr1/cmath: Likewise.
+ * include/tr1/ell_integral.tcc: Likewise.
+ * include/tr1/exp_integral.tcc: Likewise.
+ * include/tr1/gamma.tcc: Likewise.
+ * include/tr1/hypergeometric.tcc: Likewise.
+ * include/tr1/legendre_function.tcc: Likewise.
+ * include/tr1/modified_bessel_func.tcc: Likewise.
+ * include/tr1/poly_hermite.tcc: Likewise.
+ * include/tr1/poly_laguerre.tcc: Likewise.
+ * include/tr1/riemann_zeta.tcc: Likewise.
+ * include/tr1/special_function_util.h: Likewise.
+ * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc: New.
+
+ * include/std/type_traits (has_trivial_default_constructor): Remove.
+ (has_trivial_copy_constructor, has_trivial_copy_assign): Likewise.
+ * testsuite/20_util/has_trivial_copy_assign/requirements/
+ explicit_instantiation.cc: Remove test.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ line number.
+ * testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/has_trivial_copy_assign/value.cc: Likewise.
+ * testsuite/20_util/has_trivial_copy_constructor/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/has_trivial_copy_constructor/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/has_trivial_copy_constructor/value.cc: Likewise.
+ * testsuite/20_util/has_trivial_default_constructor/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/has_trivial_default_constructor/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/has_trivial_default_constructor/value.cc:
+ Likewise.
+ * testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
+ Check has_trivial_default_constructor, has_trivial_copy_constructor,
+ and has_trivial_copy_assign are not defined.
+ * testsuite/20_util/pair/requirements/dr801.cc: Remove commented out
+ tests.
+ * testsuite/20_util/tuple/requirements/dr801.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error line number.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+
+2016-08-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
+ Remove reundant check for _GLIBCXX_USE_WCHAR_T and fix char type.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
+ Likewise.
+
+ * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Improve
+ comments.
+
+ * testsuite/19_diagnostics/error_code/operators/bool_neg.cc: Move
+ dg-error to relevant line.
+ * testsuite/19_diagnostics/error_condition/operators/bool_neg.cc:
+ Likewise.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+
+ * scripts/testsuite_flags.in: Add -fno-show-column to cxxflags.
+
+ * testsuite/18_support/bad_exception/23591_thread-1.c: Skip test if
+ options are present that aren't valid for C.
+ * testsuite/abi/header_cxxabi.c: Likewise.
+
+ * testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/
+ check_value.cc: Do not add special functions to namespace std in TR1
+ test.
+
+ * testsuite/ext/special_functions/conf_hyperg/check_nan.cc: Only
+ run for C++11 and later.
+ * testsuite/ext/special_functions/conf_hyperg/check_value.cc:
+ Likewise.
+ * testsuite/ext/special_functions/conf_hyperg/compile.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/check_value.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/compile.cc: Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
+ Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/compile.cc: Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/compile_2.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/02_assoc_legendre/compile_2.cc:
+ * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
+ * testsuite/special_functions/03_beta/check_value.cc: Likewise.
+ * testsuite/special_functions/03_beta/compile.cc: Likewise.
+ * testsuite/special_functions/03_beta/compile_2.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/check_nan.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/compile.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/compile_2.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/check_nan.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/compile.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/compile_2.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/check_nan.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/compile.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/compile_2.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/compile.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/compile_2.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/pr56216.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/compile.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/compile_2.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/compile.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/compile_2.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/check_nan.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/check_value.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/compile.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/compile_2.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/check_value.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/compile.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/compile_2.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/check_value.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/compile.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/compile_2.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/check_value.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/compile.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/compile_2.cc: Likewise.
+ * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
+ * testsuite/special_functions/14_expint/check_value.cc: Likewise.
+ * testsuite/special_functions/14_expint/compile.cc: Likewise.
+ * testsuite/special_functions/14_expint/compile_2.cc: Likewise.
+ * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
+ * testsuite/special_functions/15_hermite/check_value.cc: Likewise.
+ * testsuite/special_functions/15_hermite/compile.cc: Likewise.
+ * testsuite/special_functions/15_hermite/compile_2.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/check_value.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/compile.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/compile_2.cc: Likewise.
+ * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
+ * testsuite/special_functions/17_legendre/check_value.cc: Likewise.
+ * testsuite/special_functions/17_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/17_legendre/compile_2.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/check_nan.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/18_riemann_zeta/compile.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/compile_2.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/check_nan.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/check_value.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/compile.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/compile_2.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/check_nan.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/20_sph_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/compile_2.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/check_nan.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/check_value.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/compile.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/compile_2.cc: Likewise.
+
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 08_cyl_bessel_i/check_value.cc: Use __attribute__((unused)) instead
+ of [[gnu::unused]].
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 09_cyl_bessel_j/check_value.cc: Likewise.
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 10_cyl_bessel_k/check_value.cc: Likewise.
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 11_cyl_neumann/check_value.cc: Likewise.
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 21_sph_bessel/check_value.cc: Likewise.
+ * testsuite/tr1/5_numerical_facilities/special_functions/
+ 23_sph_neumann/check_value.cc: Likewise.
+
+2016-08-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
+ * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.
+
+2016-08-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Skip
+ test if -flto used.
+
+ * testsuite/lib/libstdc++.exp (v3-build_support): Add -fno-lto to
+ additional flags for compiling libtestc++.a objects.
+
+2016-08-01 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/basic_string.h (data() const): Update comment.
+ (data()): Add non-const overload for C++17.
+ * testsuite/21_strings/basic_string/operations/data/char/2.cc: New.
+ * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc: New.
+
+ * include/bits/basic_string.tcc: Disable explicit instantiation
+ declarations for C++17.
+
+ * testsuite/23_containers/unordered_map/requirements/53339.cc: Remove
+ ignored "xfail" from { dg-do compile { xfail selector } } directive.
+ * testsuite/23_containers/unordered_multimap/requirements/53339.cc:
+ Likewise.
+ * testsuite/26_numerics/headers/cmath/
+ c99_classification_macros_c++11.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/
+ c99_classification_macros_c++98.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/
+ c99_classification_macros_c.cc: Likewise.
+
+ * testsuite/backward/hash_set/check_construct_destroy.cc: Account
+ for different construct/destroy counts in C++98 mode.
+
+ * testsuite/17_intro/freestanding.cc: Remove "-x c" from dg-options.
+
+ * testsuite/20_util/tuple/cons/66338.cc: Limit test to C++11 and
+ later.
+ * testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc:
+ Likewise.
+
+ * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: Use
+ C++98-compatible initialization for array.
+
+ * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc: Remove
+ unused header and variable from compile-only test.
+ * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc: Likewise.
+ * testsuite/28_regex/basic_regex/assign/char/cstring.cc: Likewise.
+ * testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc: Likewise.
+ * testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc:
+ Likewise.
+
+ * testsuite/experimental/string_view/operations/rfind/char/2.cc:
+ Remove duplicate dg-options directive.
+
+ * testsuite/20_util/specialized_algorithms/uninitialized_copy/
+ 808590.cc: Use -std=gnu++98 instead of -std=gnu++03.
+
+ * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Remove
+ linker options from compile-only tests.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
+ Likewise.
+
+ * testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Make test
+ supported for C++11 and later.
+ * testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
+ * testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.
+
+2016-08-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
+
+2016-07-31 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/conditional/requirements/typedefs.cc: Change to
+ compile-only test.
+
+ * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
+ Ensure test is compiled with optimization.
+
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Adjust dg-prune-output pattern for error in C++98 mode.
+
+ * testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: Only
+ run for C++11 or later.
+
+ * testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: Fix
+ test to not rely on GNU extension (escaped normal characters in POSIX
+ BRE). Enable tests for other strings which are now supported.
+
+ * testsuite/20_util/pair/astuple/get_neg.cc: Use effective-target
+ c++11 instead of setting -std=gnu++14.
+
+ PR libstdc++/72745
+ * include/std/array (get): Use positive message for static assertions.
+ * include/std/functional (_Safe_tuple_element_t): Fix indentation.
+ * include/std/tuple (tuple_element<I, tuple<>>): Add partial
+ specialization for invalid indices, with static assertion.
+ * testsuite/20_util/tuple/element_access/get_neg.cc: New test.
+
+ * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Move
+ dg-error to relevant line.
+ * testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc:
+ Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc:
+ Likewise.
+ * testsuite/26_numerics/random/linear_congruential_engine/
+ requirements/non_uint_neg.cc: Likewise.
+ * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc:
+ Likewise. Also test for std::atomic_address.
+
+2016-07-31 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Add missing variable traits, fix testsuite failures.
+ * include/bits/uses_allocator.h (uses_allocator_v): New.
+ * include/std/functional (is_bind_expression_v, is_placeholder_v):
+ Likewise.
+ * testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
+ * testsuite/20_util/duration/literals/range.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+ * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
+ New.
+
+2016-07-31 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/18_support/numeric_limits/40856.cc [__STRICT_ANSI__]: Do
+ not test 128-bit types.
+ * testsuite/20_util/is_floating_point/value.cc: Likewise.
+ * testsuite/20_util/is_integral/value.cc: Likewise.
+ * testsuite/20_util/is_signed/value.cc: Likewise.
+ * testsuite/20_util/is_unsigned/value.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
+ Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
+ Likewise.
+
+ * testsuite/26_numerics/headers/cstdlib/54686.c: Rename to 54686.cc.
+
+2016-07-29 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement C++17 variable templates for type traits.
+ * include/std/chrono (treat_as_floating_point_v): New.
+ * include/std/ratio (ratio_equal_v, ratio_not_equal_v)
+ (ratio_less_v, ratio_less_equal_v, ratio_greater_v)
+ (ratio_greater_equal_v): Likewise.
+ * include/std/system_error (is_error_code_enum_v)
+ (is_error_condition_enum_v): Likewise.
+ * include/std/tuple (tuple_size_v): Likewise.
+ * type_traits (conjunction_v, disjunction_v, negation_v)
+ (is_void_v, is_null_pointer_v, is_integral_v, is_floating_point_v)
+ (is_array_v, is_pointer_v, is_lvalue_reference_v)
+ (is_rvalue_reference_v, is_member_object_pointer_v)
+ (is_member_function_pointer_v, is_enum_v, is_union_v)
+ (is_class_v, is_function_v, is_reference_v, is_arithmetic_v)
+ (is_fundamental_v, is_object_v, is_scalar_v, is_compound_v)
+ (is_member_pointer_v, is_const_v, is_volatile_v, is_trivial_v)
+ (is_trivially_copyable_v, is_standard_layout_v)
+ (is_pod_v, is_literal_type_v, is_empty_v, is_polymorphic_v)
+ (is_abstract_v, is_final_v, is_signed_v, is_unsigned_v)
+ (is_constructible_v, is_default_constructible_v)
+ (is_copy_constructible_v, is_move_constructible_v)
+ (is_assignable_v, is_copy_assignable_v, is_move_assignable_v)
+ (is_destructible_v, is_trivially_constructible_v)
+ (is_trivially_default_constructible_v)
+ (is_trivially_copy_constructible_v, is_trivially_move_constructible_v)
+ (is_trivially_assignable_v, is_trivially_copy_assignable_v)
+ (is_trivially_move_assignable_v, is_trivially_destructible_v)
+ (is_nothrow_constructible_v, is_nothrow_default_constructible_v)
+ (is_nothrow_copy_constructible_v, is_nothrow_move_constructible_v)
+ (is_nothrow_assignable_v, is_nothrow_copy_assignable_v)
+ (is_nothrow_move_assignable_v, is_nothrow_destructible_v)
+ (has_virtual_destructor_v, alignment_of_v, rank_v, extent_v)
+ (is_same_v, is_base_of_v, is_convertible_v): Likewise.
+ * testsuite/19_diagnostics/error_code/is_error_code_v.cc: Likewise.
+ * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
+ Likewise.
+ * testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
+ * testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
+ * testsuite/20_util/variable_templates_for_traits.cc: Likewise.
+
+2016-07-29 Andreas Schwab <schwab@linux-m68k.org>
+
+ * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
+ * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
+ * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
+
+2016-07-29 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/abi.xml: Document 6.0.22 library version.
+ * doc/html/manual/abi.html: Regenerate.
+
+ * acinclude.m4 (libtool_VERSION): Bump to 6:23:0.
+ * config/abi/pre/gnu.ver: Add 3.4.23 version for new basic_string
+ symbols.
+ * configure: Regenerate.
+ * testsuite/util/testsuite_abi.cc: Add new symbol version.
+
+ * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
+ * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
+ Likewise.
+ * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
+
+2016-07-28 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+ Adjust dg-prune-output pattern for error in C++98 mode.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+
+ * testsuite/23_containers/vector/check_construct_destroy.cc: Account
+ for different construct/destroy counts in C++98 mode.
+
+ * testsuite/17_intro/headers/c++2011/stdc++.cc: Change target-specific
+ dg-options to dg-additional-options so that default options are used.
+ * testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc:
+ Likewise.
+ * testsuite/17_intro/headers/c++2014/stdc++.cc: Likewise.
+ * testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
+ Use dg-additional-options instead of repeating the common options.
+
+ * testsuite/22_locale/conversions/string/1.cc: Remove unintended
+ dg-do compile directive.
+ * testsuite/26_numerics/headers/cmath/fabs_inline.cc: Fix syntax of
+ dg-do directive.
+ * testsuite/26_numerics/valarray/const_bracket.cc: Likewise.
+
+2016-07-28 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Implement std::string_view and P0254r2,
+ Integrating std::string_view and std::string.
+ * include/Makefile.am: Add string_view and string_view.tcc
+ to the exported headers.
+ * include/Makefile.in: Likewise.
+ * include/bits/basic_string.h: Include <string_view> in C++17 mode.
+ (__sv_type): New.
+ (basic_string(__sv_type, const _Alloc&)): Likewise.
+ (operator=(__sv_type)): Likewise.
+ (operator __sv_type()): Likewise.
+ (operator+=(__sv_type)): Likewise.
+ (append(__sv_type __sv)): Likewise.
+ (append(__sv_type, size_type, size_type)): Likewise.
+ (assign(__sv_type)): Likewise.
+ (assign(__sv_type, size_type, size_type)): Likewise.
+ (insert(size_type, __sv_type)): Likewise.
+ (insert(size_type, __sv_type, size_type, size_type)): Likewise.
+ (replace(size_type, size_type, __sv_type)): Likewise.
+ (replace(size_type, size_type, __sv_type, size_type, size_type)):
+ Likewise.
+ (replace(const_iterator, const_iterator, __sv_type)): Likewise.
+ (find(__sv_type, size_type)): Likewise.
+ (rfind(__sv_type, size_type)): Likewise.
+ (find_first_of(__sv_type, size_type)): Likewise.
+ (find_last_of(__sv_type, size_type)): Likewise.
+ (find_first_not_of(__sv_type, size_type)): Likewise.
+ (find_last_not_of(__sv_type, size_type)): Likewise.
+ (compare(__sv_type)): Likewise.
+ (compare(size_type, size_type, __sv_type)): Likewise.
+ (compare(size_type, size_type, __sv_type, size_type, size_type)):
+ Likewise.
+ * include/bits/string_view.tcc: New.
+ * include/std/string_view: Likewise.
+ * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
+ * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
+ * testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/operations/find/char/5.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
+ * testsuite/21_strings/basic_string/operators/wchar_t/5.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/include.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/char/1.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/char/2.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/char/3.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
+ * testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
+
+2016-07-27 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/forward/1_neg.cc: Move dg-error to right line.
+
+2016-07-25 Georeth Chow <georeth2010@gmail.com>
+
+ * include/ext/ropeimpl.h (rope<>::_S_dump(_RopeRep*, int)): Qualify
+ _S_concat enumerator.
+ * testsuite/ext/rope/6.cc: New test.
+
+2016-07-25 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Use
+ std::mt19937, std::thread and std::atomic to simplify test.
+ * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
+
2016-07-22 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/71964
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 0824243ced9..aaf5adbe62b 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3696,7 +3696,7 @@ changequote([,])dnl
fi
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:22:0
+libtool_VERSION=6:23:0
# Everything parsed; figure out what files and settings to use.
case $enable_symvers in
diff --git a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
index 89ec46788f4..405db396c3f 100644
--- a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4.21
@@ -2703,7 +2777,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2842,7 +2918,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3555,6 +3633,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3955,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3900,6 +3980,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3984,6 +4065,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -4032,6 +4114,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4722,6 +4805,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
index 2d1eb43b091..1a6166d678b 100644
--- a/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2845,8 +2915,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4.21
@@ -2893,7 +2967,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3032,7 +3108,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3746,6 +3824,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -4109,6 +4188,7 @@ FUNC:tanhl@GLIBCXX_3.4
FUNC:tanl@GLIBCXX_3.4
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -4134,6 +4214,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4226,6 +4308,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -4275,6 +4358,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4990,6 +5074,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
index 5c4939b178e..c5208ccca29 100644
--- a/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -3555,6 +3629,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3951,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3901,6 +3977,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4159,6 +4236,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4469,6 +4547,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5206,6 +5285,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
index 5c4939b178e..c5208ccca29 100644
--- a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -3555,6 +3629,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3951,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3901,6 +3977,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4159,6 +4236,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4469,6 +4547,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5206,6 +5285,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
index c82b199979b..3b8dc79d983 100644
--- a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4.21
@@ -2703,7 +2777,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2842,7 +2918,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3555,6 +3633,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3955,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3901,6 +3981,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4016,6 +4097,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -4085,6 +4167,7 @@ OBJECT:192:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4
OBJECT:192:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCXX_3.4
OBJECT:192:_ZTVSt17moneypunct_bynameIwLb0EE@@GLIBCXX_3.4
OBJECT:192:_ZTVSt17moneypunct_bynameIwLb1EE@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -5130,6 +5213,7 @@ OBJECT:60:_ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBC
OBJECT:64:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:64:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:64:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:64:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:64:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:64:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:64:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
index 0dc0cd05fe5..57ff2f5aeab 100644
--- a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -2703,7 +2777,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2842,7 +2918,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3555,6 +3633,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3955,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3900,6 +3980,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4156,6 +4237,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4466,6 +4548,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5200,6 +5283,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
index 1c22c861c09..742df2f20d7 100644
--- a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2845,8 +2915,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -3746,6 +3820,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -4109,6 +4184,7 @@ FUNC:tanhl@GLIBCXX_3.4
FUNC:tanl@GLIBCXX_3.4
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -4134,6 +4210,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4404,6 +4481,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4727,6 +4805,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5505,6 +5584,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
index 1c22c861c09..742df2f20d7 100644
--- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2845,8 +2915,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -3746,6 +3820,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -4109,6 +4184,7 @@ FUNC:tanhl@GLIBCXX_3.4
FUNC:tanl@GLIBCXX_3.4
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -4134,6 +4210,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4404,6 +4481,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4727,6 +4805,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5505,6 +5584,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
index 2d1eb43b091..5f043d91cf7 100644
--- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2845,8 +2915,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4.21
@@ -3746,6 +3820,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -4109,6 +4184,7 @@ FUNC:tanhl@GLIBCXX_3.4
FUNC:tanl@GLIBCXX_3.4
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -4134,6 +4210,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4226,6 +4303,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -4275,6 +4353,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4990,6 +5069,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
index 45e61e6e846..06e2e3ffc25 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3514,6 +3592,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3835,6 +3914,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3860,6 +3940,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3944,6 +4026,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -3993,6 +4076,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4672,6 +4756,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
index 6592632168d..0dae364538d 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3514,6 +3592,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3835,6 +3914,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3859,6 +3939,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4115,6 +4197,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4422,6 +4505,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5155,6 +5239,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
index d5ddc983bb3..06f6fbcff5a 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3514,6 +3592,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3835,6 +3914,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3859,6 +3939,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3943,6 +4025,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -3991,6 +4074,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4666,6 +4750,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.11/amd64/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.11/amd64/baseline_symbols.txt
index 5f05b878afc..d59e5c8bcf8 100644
--- a/libstdc++-v3/config/abi/post/solaris2.11/amd64/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.11/amd64/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3516,6 +3594,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3837,6 +3916,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3862,6 +3942,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3946,6 +4028,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -3995,6 +4078,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4674,6 +4758,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.11/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.11/baseline_symbols.txt
index b87a87cfef5..ecfbd415bcd 100644
--- a/libstdc++-v3/config/abi/post/solaris2.11/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.11/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3516,6 +3594,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3837,6 +3916,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3861,6 +3941,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4117,6 +4199,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4424,6 +4507,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5157,6 +5241,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt
index 54eb92092bd..771bfbb49fd 100644
--- a/libstdc++-v3/config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -95,6 +164,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2618,8 +2688,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@@GLIBCXX_3.4.21
@@ -2666,7 +2740,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -2805,7 +2881,9 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3516,6 +3594,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3837,6 +3916,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3861,6 +3941,8 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
+OBJECT:0:GLIBCXX_3.4.23
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3945,6 +4027,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -3993,6 +4076,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4668,6 +4752,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
index 5c4939b178e..c5208ccca29 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEj@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@@GLIBCXX_3.4.21
@@ -3555,6 +3629,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3951,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3901,6 +3977,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -4159,6 +4236,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4469,6 +4547,7 @@ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:20:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:20:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
@@ -5206,6 +5285,7 @@ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:8:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:8:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:8:_ZTISt12codecvt_base@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
index 4db301f64c7..d5028715f69 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,72 @@
+FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt13runtime_error4whatEv@@GLIBCXX_3.4.22
+FUNC:_ZGTtNKSt9exception4whatEv@@CXXABI_1.3.10
+FUNC:_ZGTtNKSt9exceptionD1Ev@@CXXABI_1.3.10
+FUNC:_ZGTtNSt11logic_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11logic_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt11range_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12domain_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12length_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt12out_of_rangeD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt13runtime_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt14overflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt15underflow_errorD2Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2EPKc@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZGTtNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.22
FUNC:_ZN10__cxxabiv116__enum_type_infoD0Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD1Ev@@CXXABI_1.3
FUNC:_ZN10__cxxabiv116__enum_type_infoD2Ev@@CXXABI_1.3
@@ -100,6 +169,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx9__freeresEv@@CXXABI_1.3.10
FUNC:_ZN9__gnu_cxx9free_list6_M_getEm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx9free_list8_M_clearEv@@GLIBCXX_3.4.4
FUNC:_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@@CXXABI_1.3
@@ -2655,8 +2725,12 @@ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@@GLIBCXX_3.4.21
+FUNC:_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6_StateD0Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD1Ev@@GLIBCXX_3.4.22
+FUNC:_ZNSt6thread6_StateD2Ev@@GLIBCXX_3.4.22
FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
FUNC:_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@@GLIBCXX_3.4.21
@@ -3555,6 +3629,7 @@ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+FUNC:_ZSt19uncaught_exceptionsv@@GLIBCXX_3.4.22
FUNC:_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@@GLIBCXX_3.4
FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
@@ -3876,6 +3951,7 @@ FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.10
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
@@ -3901,6 +3977,7 @@ OBJECT:0:GLIBCXX_3.4.19
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.20
OBJECT:0:GLIBCXX_3.4.21
+OBJECT:0:GLIBCXX_3.4.22
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
@@ -3985,6 +4062,7 @@ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:16:_ZTINSt3_V214error_categoryE@@GLIBCXX_3.4.21
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
+OBJECT:16:_ZTINSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
@@ -4034,6 +4112,7 @@ OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
+OBJECT:19:_ZTSNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
@@ -4728,6 +4807,7 @@ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+OBJECT:40:_ZTVNSt6thread6_StateE@@GLIBCXX_3.4.22
OBJECT:40:_ZTVNSt8ios_base7failureB5cxx11E@@GLIBCXX_3.4.21
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 5c6b0feb2b3..b7f54e2ae34 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1678,7 +1678,12 @@ GLIBCXX_3.4.21 {
_ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv;
# ABI-tagged std::basic_string
- _ZNSt7__cxx1112basic_string*;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[01]**;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE12_Alloc_hiderC[12]EP[cw]RKS3_;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE12_M*;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[3-9]*;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE[2-9]*;
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE[CDaip]*;
_ZNKSt7__cxx1112basic_string*;
# operator+ for ABI-tagged std::basic_string
@@ -1909,6 +1914,13 @@ GLIBCXX_3.4.22 {
} GLIBCXX_3.4.21;
+GLIBCXX_3.4.23 {
+
+ # basic_string<C, T, A>::_Alloc_hider::_Alloc_hider(C*, A&&)
+ _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE12_Alloc_hiderC[12]EP[cw]OS3_;
+
+} GLIBCXX_3.4.22;
+
# Symbols in the support library (libsupc++) have their own tag.
CXXABI_1.3 {
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index fcbf4029cf8..f2a75aaa2f3 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -79051,7 +79051,7 @@ $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
fi
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:22:0
+libtool_VERSION=6:23:0
# Everything parsed; figure out what files and settings to use.
case $enable_symvers in
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index b203b6b8399..7f2a05a1b6a 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -129,7 +129,7 @@ compatible.
GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0
release.) If a particular release is not listed, it has the same
version labels as the preceding release.
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.1: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.2: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.3: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.4: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.1.0: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.1.1: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.2: GLIBCXX_3.4.2</p></li><li class="listitem"><p>GCC 3.4.3: GLIBCXX_3.4.3</p></li><li class="listitem"><p>GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1</p></li><li class="listitem"><p>GCC 4.0.1: GLIBCXX_3.4.5</p></li><li class="listitem"><p>GCC 4.0.2: GLIBCXX_3.4.6</p></li><li class="listitem"><p>GCC 4.0.3: GLIBCXX_3.4.7</p></li><li class="listitem"><p>GCC 4.1.1: GLIBCXX_3.4.8</p></li><li class="listitem"><p>GCC 4.2.0: GLIBCXX_3.4.9</p></li><li class="listitem"><p>GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2</p></li><li class="listitem"><p>GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</p></li><li class="listitem"><p>GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6</p></li><li class="listitem"><p>GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8</p></li><li class="listitem"><p>GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9</p></li></ul></div></li><li class="listitem"><p>Incremental bumping of a compiler pre-defined macro,
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.1: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.2: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.3: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.4: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.1.0: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.1.1: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.2: GLIBCXX_3.4.2</p></li><li class="listitem"><p>GCC 3.4.3: GLIBCXX_3.4.3</p></li><li class="listitem"><p>GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1</p></li><li class="listitem"><p>GCC 4.0.1: GLIBCXX_3.4.5</p></li><li class="listitem"><p>GCC 4.0.2: GLIBCXX_3.4.6</p></li><li class="listitem"><p>GCC 4.0.3: GLIBCXX_3.4.7</p></li><li class="listitem"><p>GCC 4.1.1: GLIBCXX_3.4.8</p></li><li class="listitem"><p>GCC 4.2.0: GLIBCXX_3.4.9</p></li><li class="listitem"><p>GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2</p></li><li class="listitem"><p>GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</p></li><li class="listitem"><p>GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6</p></li><li class="listitem"><p>GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8</p></li><li class="listitem"><p>GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9</p></li><li class="listitem"><p>GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10</p></li></ul></div></li><li class="listitem"><p>Incremental bumping of a compiler pre-defined macro,
__GXX_ABI_VERSION. This macro is defined as the version of the
compiler v3 ABI, with g++ 3.0 being version 100. This macro will
be automatically defined whenever g++ is used (the curious can
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 18fc4da42dc..d36eb8a543b 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -470,82 +470,267 @@ options. The pre-defined symbol
<code class="constant">__cplusplus</code> is used to check for the
presence of the required flag.
</p><p>
-This page describes the C++1z and library TS support in mainline GCC SVN,
+This section describes the C++1z and library TS support in mainline GCC SVN,
not in any particular release.
-</p><div class="table"><a id="table.cxx1z_status"></a><p class="title"><strong>Table 1.5. C++ 201z Implementation Status</strong></p><div class="table-contents"><table summary="C++ 201z Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+</p><p>
+The following table lists new library features that have been accepted into
+the C++1z working draft. The "Proposal" column provides a link to the
+ISO C++ committee proposal that describes the feature, while the "Status"
+column indicates the first version of GCC that contains an implementation of
+this feature (if it has been implemented).
+The "SD-6 Feature Test" column shows the corresponding macro or header from
+<a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
+Feature-testing recommendations for C++</a>.
+</p><div class="table"><a id="table.cxx1z_status"></a><p class="title"><strong>Table 1.5. C++ 201z Implementation Status</strong></p><div class="table-contents"><table summary="C++ 201z Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Library Feature</th><th align="left">Proposal</th><th align="left">Status</th><th align="left">SD-6 Feature Test</th></tr></thead><tbody><tr bgcolor="#C8B0B0"><td align="left">
+ <code class="code">constexpr std::hardware_{constructive,destructive}_interference_size</code>
+ </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html" target="_top">
+ P0154R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> <code class="code">__cpp_lib_hardware_interference_size &gt;= 201603</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Core Issue 1776: Replacement of class objects containing reference members</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html" target="_top">
+ P0137R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> <code class="code">__cpp_lib_launder &gt;= 201606</code> </td></tr><tr><td align="left">Wording for <code class="code">std::uncaught_exceptions</code></td><td align="left">
<a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf" target="_top">
N4259
</a>
- </td><td align="left">Wording for <code class="code">std::uncaught_exceptions</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm" target="_top">
- N4190
+ </td><td align="center">6.1</td><td align="left"><code class="code">__cpp_lib_uncaught_exceptions &gt;= 201411</code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Variant: a type-safe union for C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html" target="_top">
+ P0088R3
</a>
- </td><td align="left">
+ </td><td align="center"> No </td><td align="left"> <code class="code">__has_include(&lt;variant&gt;)</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">optional</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"> <code class="code">__has_include(&lt;optional&gt;)</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">any</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"> <code class="code">__has_include(&lt;any&gt;)</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">string_view</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"> <code class="code">__has_include(&lt;string_view&gt;)</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Library Fundamentals V1 TS Components: <code class="code">memory_resource</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> <code class="code">__has_include(&lt;memory_resource&gt;)</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">apply</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"> <code class="code">__cpp_lib_apply &gt;= 201603</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Library Fundamentals V1 TS Components: <code class="code">shared_ptr&lt;T[]&gt;</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> <code class="code">__cpp_lib_shared_ptr_arrays &gt;= 201603</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Library Fundamentals V1 TS Components: Searchers </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
+ P0220R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> <code class="code">__cpp_lib_boyer_moore_searcher &gt;= 201603</code> </td></tr><tr><td align="left"> Constant View: A proposal for a <code class="code">std::as_const</code> helper function template </td><td align="left">
+ <a class="link" href="" target="_top">
+ P0007R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_as_const &gt;= 201510 </code></td></tr><tr><td align="left"> Improving pair and tuple </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387" target="_top">
+ N4387
+ </a>
+ </td><td align="center"> 6.1 </td><td align="left"> N/A </td></tr><tr bgcolor="#C8B0B0"><td align="left"> make_from_tuple: apply for construction </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf" target="_top">
+ P0209R2
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_make_from_tuple &gt;= 201606 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left">
Removing <code class="code">auto_ptr</code>, <code class="code">random_shuffle()</code>,
And Old <code class="code">&lt;functional&gt;</code> Stuff
- </td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.htm" target="_top">
- N4284
+ </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm" target="_top">
+ N4190
+ </a>
+ </td><td align="center">No (kept for backwards compatibility)</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecating Vestigial Library Parts in C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html" target="_top">
+ P0174R2
</a>
- </td><td align="left">Contiguous Iterators </td><td align="left">Y</td><td align="left">No code changes required</td></tr><tr><td align="left">
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr><td align="left"> Making <code class="code">std::owner_less</code> more flexible </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html" target="_top">
+ P0074R0
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_transparent_operators &gt;= 201510 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">std::addressof</code> should be constexpr </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296" target="_top">
+ LWG2296
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_addressof_constexpr &gt;= 201603 </code></td></tr><tr><td align="left"> Safe conversions in <code class="code">unique_ptr&lt;T[]&gt;</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf" target="_top">
- N4089
+ N4089
+ </a>
+ </td><td align="center"> 5 ? </td><td align="left"> </td></tr><tr><td align="left"> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html" target="_top">
+ N4366
</a>
- </td><td align="left">Safe conversions in <code class="code">unique_ptr&lt;T[]&gt;</code> </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ </td><td align="center"> 5 ? </td><td align="left"> </td></tr><tr><td align="left"> Re-enabling <code class="code">shared_from_this</code></td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html" target="_top">
+ P0033R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code">__cpp_lib_enable_shared_from_this &gt;= 201603</code></td></tr><tr><td align="left"> A proposal to add <code class="code">invoke</code> function template </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html" target="_top">
+ N4169
+ </a>
+ </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_invoke &gt;= 201411 </code></td></tr><tr><td align="left">TriviallyCopyable <code class="code">reference_wrapper</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html" target="_top">
N4277
</a>
- </td><td align="left">TriviallyCopyable <code class="code">reference_wrapper</code> </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf" target="_top">
- N4258
+ </td><td align="center"> 5.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Adopt <code class="code">not_fn</code> from Library Fundamentals 2 for C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html" target="_top">
+ P0005R4
</a>
- </td><td align="left">Cleaning-up noexcept in the Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html" target="_top">
- N4279
+ </td><td align="center"> No </td><td align="left"><code class="code">__cpp_lib_not_fn &gt;= 201603</code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Fixes for <code class="code">not_fn</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html" target="_top">
+ P0358R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Fixing a design mistake in the searchers interface in Library Fundamentals </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf" target="_top">
+ P0253R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Extending memory management tools </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top">
+ P0040R3
</a>
- </td><td align="left">Improved insertion interface for unique-key maps</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ </td><td align="center"> No </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top">
+ P0163R0
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_shared_ptr_weak_type &gt;= 201606</code></td></tr><tr><td align="left">Transformation Trait Alias <code class="code">void_t</code></td><td align="left">
<a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf" target="_top">
N3911
</a>
- </td><td align="left">Transformation Trait Alias <code class="code">void_t</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html" target="_top">
- N4169
+ </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_void_t &gt;= 201411</code></td></tr><tr><td align="left"> Wording for <code class="code">bool_constant</code>, revision 1 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html" target="_top">
+ N4389
</a>
- </td><td align="left">A proposal to add invoke function template</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf" target="_top">
- N4280
+ </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_bool_constant &gt;= 201505</code></td></tr><tr><td align="left"> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html" target="_top">
+ P0006R0
</a>
- </td><td align="left">Non-member size() and more</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html" target="_top">
- N4366
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_type_trait_variable_templates &gt;= 201510 </code></td></tr><tr><td align="left"> Logical Operator Type Traits</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html" target="_top">
+ P0013R1
</a>
- </td><td align="left">
- LWG 2228: Missing SFINAE rule in unique_ptr templated assignment
- </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387.html" target="_top">
- N4387
+ </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_logical_traits &gt;= 201510 </code></td></tr><tr><td align="left"> Adding [nothrow-]swappable traits </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html" target="_top">
+ P0185R1
</a>
- </td><td align="left"> Improving pair and tuple, revision 3 </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html" target="_top">
- N4389
+ </td><td align="center"> 7 (<code class="code">__is_swappable</code> available since 6.1)</td><td align="left"><code class="code"> __cpp_lib_is_swappable &gt;= 201603 </code></td></tr><tr><td align="left"> <code class="code">is_callable</code>, the missing INVOKE related trait</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html" target="_top">
+ P0077R2
</a>
- </td><td align="left"> Wording for bool_constant, revision 1 </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html" target="_top">
- N4508
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_is_callable &gt;= 201603 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> has_unique_object_representations </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html" target="_top">
+ P0258R2
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_has_unique_object_representations &gt;= 201606 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ordered by default </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0181r1.html" target="_top">
+ P0181R1
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_default_order &gt;= 201606</code></td></tr><tr><td align="left"> Polishing <code class="code">&lt;chrono&gt;</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html" target="_top">
+ P0092R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_chrono &gt;= 201510 </code></td></tr><tr><td align="left"> Integrating <code class="code">std::string_view</code> and <code class="code">std::string</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf" target="_top">
+ P0254R2
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left"> Give 'std::string' a non-const '.data()' member function </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html" target="_top">
+ P0272R1
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left">Cleaning-up noexcept in the Library</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf" target="_top">
+ N4258
</a>
- </td><td align="left">A proposal to add shared_mutex (untimed) (Revision 4)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_allocator_traits_is_always_equal &gt;= 201411 </code></td></tr><tr><td align="left">Contiguous Iterators </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.htm" target="_top">
+ N4284
+ </a>
+ </td><td align="center">N/A</td><td align="left"> </td></tr><tr><td align="left"> Minimal incomplete type support for standard containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html" target="_top">
- N4510
+ N4510
</a>
- </td><td align="left">
- Minimal incomplete type support for standard containers, revision 4
- </td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
- <a class="link" href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html" target="_top">
- P0013R1
+ </td><td align="center"> 6.2 (3.0)</td><td align="left"><code class="code"> __cpp_lib_incomplete_container_elements &gt;= 201505 </code>
+ (the feature was always supported, but the macro was not defined until GCC 6.2)
+ </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Emplace return type </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf" target="_top">
+ P0084R2
</a>
- </td><td align="left">
- Logical Operator Type Traits (revision 1)
- </td><td align="left">Y</td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.cxx1z_ts_status"></a><p class="title"><strong>Table 1.6. C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr><td align="left">Improved insertion interface for unique-key maps</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html" target="_top">
+ N4279
+ </a>
+ </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_map_try_emplace &gt;= 201411</code>,
+ <code class="code"> __cpp_lib_unordered_map_try_emplace &gt;= 201411</code>
+ </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Splicing Maps and Sets </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf" target="_top">
+ P0083R3
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_node_extract &gt;= 201606 </code></td></tr><tr><td align="left">Non-member <code class="code">size()</code> and more</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf" target="_top">
+ N4280
+ </a>
+ </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_nonmember_container_access &gt;= 201411 </code></td></tr><tr><td align="left"> A Proposal to Add Constexpr Modifiers to <code class="code">reverse_iterator</code>, <code class="code">move_iterator</code>, <code class="code">array</code> and Range Access </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html" target="_top">
+ P0031R0
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_array_constexpr &gt;= 201603 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> The Parallelism TS Should be Standardized </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html" target="_top">
+ P0024R2
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __has_include(&lt;execution&gt;) </code>,
+ <code class="code"> __cpp_lib_parallel_algorithm &gt;= 201603 </code></td></tr><tr><td align="left"> An algorithm to "clamp" a value between a pair of boundary values </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html" target="_top">
+ P0025R0
+ </a>
+ </td><td align="center"> 7 </td><td align="left"><code class="code"> __cpp_lib_clamp &gt;= 201603 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Adopt Selected Library Fundamentals V2 Components for C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf" target="_top">
+ P0295R0
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_gcd &gt;= 201606 </code>,
+ <code class="code"> __cpp_lib_lcm &gt;= 201606 </code>
+ </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Proposal to Introduce a 3-Argument Overload to <code class="code">std::hypot</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf" target="_top">
+ P0030R1
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_hypot &gt;= 201603 </code></td></tr><tr><td align="left"> Mathematical Special Functions for C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf" target="_top">
+ P0226R1
+ </a>
+ </td><td align="center"> 7 (6.1) </td><td align="left"><code class="code"> __cpp_lib_math_special_functions &gt;= 201603 </code>
+ (for GCC 6 or pre-C++17 define
+ <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
+ and test for <code class="code">__STDCPP_MATH_SPEC_FUNCS__ &gt;= 201003L</code>)
+ </td></tr><tr bgcolor="#C8B0B0"><td align="left">Adopt the File System TS for C++17 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html" target="_top">
+ P0218R1
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __has_include(&lt;filesystem&gt;) </code>,
+ <code class="code"> __cpp_lib_filesystem &gt;= 201603 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Relative Paths for Filesystem</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html" target="_top">
+ P0219R1
+ </a>
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Adapting string_view by filesystem paths </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf" target="_top">
+ P0392R0
+ </a>
+ </td><td align="center"> No </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> constexpr <code class="code">atomic&lt;T&gt;::is_always_lock_free</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html" target="_top">
+ P0152R1
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_atomic_is_always_lock_free &gt;= 201603 </code></td></tr><tr><td align="left">A proposal to add <code class="code">shared_mutex</code> (untimed) (Revision 4)</td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html" target="_top">
+ N4508
+ </a>
+ </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_shared_mutex &gt;= 201505 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Variadic <code class="code">lock_guard</code> </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0156r0.html" target="_top">
+ P0156R0
+ </a>
+ </td><td align="center"> No </td><td align="left"><code class="code"> __cpp_lib_lock_guard_variadic &gt;= 201510 </code></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.cxx1z_ts_status"></a><p class="title"><strong>Table 1.6. C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
<a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html" target="_top">
N4076
</a>
diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml
index e8f98083703..6dd93b7878f 100644
--- a/libstdc++-v3/doc/xml/manual/abi.xml
+++ b/libstdc++-v3/doc/xml/manual/abi.xml
@@ -331,6 +331,7 @@ compatible.
<listitem><para>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</para></listitem>
<listitem><para>GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8</para></listitem>
<listitem><para>GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9</para></listitem>
+ <listitem><para>GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10</para></listitem>
</itemizedlist>
</listitem>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
index 60e5fae43e1..99f2bbf66c8 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
@@ -20,10 +20,21 @@ presence of the required flag.
</para>
<para>
-This page describes the C++1z and library TS support in mainline GCC SVN,
+This section describes the C++1z and library TS support in mainline GCC SVN,
not in any particular release.
</para>
+<para>
+The following table lists new library features that have been accepted into
+the C++1z working draft. The "Proposal" column provides a link to the
+ISO C++ committee proposal that describes the feature, while the "Status"
+column indicates the first version of GCC that contains an implementation of
+this feature (if it has been implemented).
+The "SD-6 Feature Test" column shows the corresponding macro or header from
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
+Feature-testing recommendations for C++</link>.
+</para>
+
<table frame="all" xml:id="table.cxx1z_status">
<title>C++ 201z Implementation Status</title>
@@ -34,201 +45,696 @@ not in any particular release.
<colspec colname="c4"/>
<thead>
<row>
- <entry>Paper</entry>
- <entry>Title</entry>
+ <entry>Library Feature</entry>
+ <entry>Proposal</entry>
<entry>Status</entry>
- <entry>Comments</entry>
+ <entry>SD-6 Feature Test</entry>
</row>
</thead>
<tbody>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry>
+ <code>constexpr std::hardware_{constructive,destructive}_interference_size</code>
+ </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html">
+ P0154R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__cpp_lib_hardware_interference_size >= 201603</code> </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Core Issue 1776: Replacement of class objects containing reference members</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html">
+ P0137R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__cpp_lib_launder >= 201606</code> </entry>
+ </row>
+
+ <row>
+ <entry>Wording for <code>std::uncaught_exceptions</code></entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf">
N4259
</link>
</entry>
- <entry>Wording for <code>std::uncaught_exceptions</code></entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center">6.1</entry>
+ <entry><code>__cpp_lib_uncaught_exceptions >= 201411</code></entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Variant: a type-safe union for C++17 </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm">
- N4190
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html">
+ P0088R3
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__has_include(&lt;variant&gt;)</code> </entry>
+ </row>
+
+ <row>
+ <entry> Library Fundamentals V1 TS Components: <code>optional</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry> <code>__has_include(&lt;optional&gt;)</code> </entry>
+ </row>
+
+ <row>
+ <entry> Library Fundamentals V1 TS Components: <code>any</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry> <code>__has_include(&lt;any&gt;)</code> </entry>
+ </row>
+
+ <row>
+ <entry> Library Fundamentals V1 TS Components: <code>string_view</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry> <code>__has_include(&lt;string_view&gt;)</code> </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Library Fundamentals V1 TS Components: <code>memory_resource</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__has_include(&lt;memory_resource&gt;)</code> </entry>
+ </row>
+
+ <row>
+ <entry> Library Fundamentals V1 TS Components: <code>apply</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry> <code>__cpp_lib_apply >= 201603</code> </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Library Fundamentals V1 TS Components: <code>shared_ptr&lt;T[]&gt;</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Library Fundamentals V1 TS Components: Searchers </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
+ P0220R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry>
+ </row>
+
+ <row>
+ <entry> Constant View: A proposal for a <code>std::as_const</code> helper function template </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="">
+ P0007R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_as_const >= 201510 </code></entry>
+ </row>
+
+ <row>
+ <entry> Improving pair and tuple </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387">
+ N4387
+ </link>
+ </entry>
+ <entry align="center"> 6.1 </entry>
+ <entry> N/A </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> make_from_tuple: apply for construction </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf">
+ P0209R2
</link>
</entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>
Removing <code>auto_ptr</code>, <code>random_shuffle()</code>,
And Old <code>&lt;functional&gt;</code> Stuff
</entry>
- <entry>N</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm">
+ N4190
+ </link>
+ </entry>
+ <entry align="center">No (kept for backwards compatibility)</entry>
<entry/>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Deprecating Vestigial Library Parts in C++17 </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.htm">
- N4284
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html">
+ P0174R2
</link>
</entry>
- <entry>Contiguous Iterators </entry>
- <entry>Y</entry>
- <entry>No code changes required</entry>
+ <entry align="center"> No </entry>
+ <entry/>
</row>
<row>
+ <entry> Making <code>std::owner_less</code> more flexible </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html">
+ P0074R0
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> <code>std::addressof</code> should be constexpr </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296">
+ LWG2296
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry>
+ </row>
+
+ <row>
+ <entry> Safe conversions in <code>unique_ptr&lt;T[]&gt;</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf">
- N4089
+ N4089
</link>
</entry>
- <entry>Safe conversions in <code>unique_ptr&lt;T[]&gt;</code> </entry>
- <entry>Y</entry>
+ <entry align="center"> 5 ? </entry>
+ <entry/>
+ </row>
+
+ <row>
+ <entry> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html">
+ N4366
+ </link>
+ </entry>
+ <entry align="center"> 5 ? </entry>
<entry/>
</row>
<row>
+ <entry> Re-enabling <code>shared_from_this</code></entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html">
+ P0033R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry>
+ </row>
+
+ <row>
+ <entry> A proposal to add <code>invoke</code> function template </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html">
+ N4169
+ </link>
+ </entry>
+ <entry align="center"> 6.1 </entry>
+ <entry><code> __cpp_lib_invoke >= 201411 </code></entry>
+ </row>
+
+ <row>
+ <entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html">
N4277
</link>
</entry>
- <entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
- <entry>Y</entry>
+ <entry align="center"> 5.1 </entry>
<entry/>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Adopt <code>not_fn</code> from Library Fundamentals 2 for C++17 </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf">
- N4258
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html">
+ P0005R4
</link>
</entry>
- <entry>Cleaning-up noexcept in the Library</entry>
- <entry>Y</entry>
+ <entry align="center"> No </entry>
+ <entry><code>__cpp_lib_not_fn >= 201603</code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Fixes for <code>not_fn</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html">
+ P0358R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
<entry/>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Fixing a design mistake in the searchers interface in Library Fundamentals </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html">
- N4279
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf">
+ P0253R1
</link>
</entry>
- <entry>Improved insertion interface for unique-key maps</entry>
- <entry>Y</entry>
+ <entry align="center"> No </entry>
<entry/>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Extending memory management tools </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html">
+ P0040R3
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> </code></entry>
+ </row>
+
+ <row>
+ <entry> <code>shared_ptr::weak_type</code></entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html">
+ P0163R0
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry>
+ </row>
+
+ <row>
+ <entry>Transformation Trait Alias <code>void_t</code></entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf">
N3911
</link>
</entry>
- <entry>Transformation Trait Alias <code>void_t</code></entry>
- <entry>Y</entry>
+ <entry align="center">6.1</entry>
+ <entry><code> __cpp_lib_void_t >= 201411</code></entry>
+ </row>
+
+ <row>
+ <entry> Wording for <code>bool_constant</code>, revision 1 </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html">
+ N4389
+ </link>
+ </entry>
+ <entry align="center">6.1</entry>
+ <entry><code> __cpp_lib_bool_constant >= 201505</code></entry>
+ </row>
+
+ <row>
+ <entry> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html">
+ P0006R0
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry>
+ </row>
+
+ <row>
+ <entry> Logical Operator Type Traits</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html">
+ P0013R1
+ </link>
+ </entry>
+ <entry align="center"> 6.1 </entry>
+ <entry><code> __cpp_lib_logical_traits >= 201510 </code></entry>
+ </row>
+
+ <row>
+ <entry> Adding [nothrow-]swappable traits </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html">
+ P0185R1
+ </link>
+ </entry>
+ <entry align="center"> 7 (<code>__is_swappable</code> available since 6.1)</entry>
+ <entry><code> __cpp_lib_is_swappable >= 201603 </code></entry>
+ </row>
+
+ <row>
+ <entry> <code>is_callable</code>, the missing INVOKE related trait</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html">
+ P0077R2
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_is_callable >= 201603 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> has_unique_object_representations </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html">
+ P0258R2
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Ordered by default </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0181r1.html">
+ P0181R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_default_order >= 201606</code></entry>
+ </row>
+
+ <row>
+ <entry> Polishing <code>&lt;chrono&gt;</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html">
+ P0092R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_chrono >= 201510 </code></entry>
+ </row>
+
+ <row>
+ <entry> Integrating <code>std::string_view</code> and <code>std::string</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf">
+ P0254R2
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> </code></entry>
+ </row>
+
+ <row>
+ <entry> Give 'std::string' a non-const '.data()' member function </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html">
+ P0272R1
+ </link>
+ </entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> </code></entry>
+ </row>
+
+ <row>
+ <entry>Cleaning-up noexcept in the Library</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf">
+ N4258
+ </link>
+ </entry>
+ <entry align="center">6.1</entry>
+ <entry><code> __cpp_lib_allocator_traits_is_always_equal >= 201411 </code></entry>
+ </row>
+
+ <row>
+ <entry>Contiguous Iterators </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.htm">
+ N4284
+ </link>
+ </entry>
+ <entry align="center">N/A</entry>
<entry/>
</row>
<row>
+ <entry> Minimal incomplete type support for standard containers </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html">
- N4169
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html">
+ N4510
</link>
</entry>
- <entry>A proposal to add invoke function template</entry>
- <entry>Y</entry>
+ <entry align="center"> 6.2 (3.0)</entry>
+ <entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code>
+ (the feature was always supported, but the macro was not defined until GCC 6.2)
+ </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Emplace return type </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf">
+ P0084R2
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
<entry/>
</row>
<row>
+ <entry>Improved insertion interface for unique-key maps</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html">
+ N4279
+ </link>
+ </entry>
+ <entry align="center"> 6.1 </entry>
+ <entry><code> __cpp_lib_map_try_emplace >= 201411</code>,
+ <code> __cpp_lib_unordered_map_try_emplace >= 201411</code>
+ </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Splicing Maps and Sets </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf">
+ P0083R3
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_node_extract >= 201606 </code></entry>
+ </row>
+
+ <row>
+ <entry>Non-member <code>size()</code> and more</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf">
N4280
</link>
</entry>
- <entry>Non-member size() and more</entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> 6.1 </entry>
+ <entry><code> __cpp_lib_nonmember_container_access >= 201411 </code></entry>
</row>
<row>
+ <entry> A Proposal to Add Constexpr Modifiers to <code>reverse_iterator</code>, <code>move_iterator</code>, <code>array</code> and Range Access </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html">
- N4366
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html">
+ P0031R0
</link>
</entry>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> The Parallelism TS Should be Standardized </entry>
<entry>
- LWG 2228: Missing SFINAE rule in unique_ptr templated assignment
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html">
+ P0024R2
+ </link>
</entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> No </entry>
+ <entry><code> __has_include(&lt;execution&gt;) </code>,
+ <code> __cpp_lib_parallel_algorithm >= 201603 </code></entry>
</row>
<row>
+ <entry> An algorithm to "clamp" a value between a pair of boundary values </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387.html">
- N4387
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html">
+ P0025R0
</link>
</entry>
- <entry> Improving pair and tuple, revision 3 </entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> 7 </entry>
+ <entry><code> __cpp_lib_clamp >= 201603 </code></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Adopt Selected Library Fundamentals V2 Components for C++17 </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html">
- N4389
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf">
+ P0295R0
</link>
</entry>
- <entry> Wording for bool_constant, revision 1 </entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_gcd >= 201606 </code>,
+ <code> __cpp_lib_lcm >= 201606 </code>
+ </entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Proposal to Introduce a 3-Argument Overload to <code>std::hypot</code> </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html">
- N4508
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf">
+ P0030R1
</link>
</entry>
- <entry>A proposal to add shared_mutex (untimed) (Revision 4)</entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_hypot >= 201603 </code></entry>
</row>
<row>
+ <entry> Mathematical Special Functions for C++17 </entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html">
- N4510
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf">
+ P0226R1
</link>
</entry>
+ <entry align="center"> 7 (6.1) </entry>
+ <entry><code> __cpp_lib_math_special_functions >= 201603 </code>
+ (for GCC 6 or pre-C++17 define
+ <code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
+ and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>)
+ </entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry>Adopt the File System TS for C++17 </entry>
<entry>
- Minimal incomplete type support for standard containers, revision 4
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html">
+ P0218R1
+ </link>
</entry>
- <entry>Y</entry>
- <entry/>
+ <entry align="center"> No </entry>
+ <entry><code> __has_include(&lt;filesystem&gt;) </code>,
+ <code> __cpp_lib_filesystem >= 201603 </code></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Relative Paths for Filesystem</entry>
<entry>
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html">
- P0013R1
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html">
+ P0219R1
</link>
</entry>
+ <entry align="center"> No </entry>
+ <entry/>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Adapting string_view by filesystem paths </entry>
<entry>
- Logical Operator Type Traits (revision 1)
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf">
+ P0392R0
+ </link>
</entry>
- <entry>Y</entry>
+ <entry align="center"> No </entry>
<entry/>
</row>
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> constexpr <code>atomic&lt;T&gt;::is_always_lock_free</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html">
+ P0152R1
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry>
+ </row>
+
+ <row>
+ <entry>A proposal to add <code>shared_mutex</code> (untimed) (Revision 4)</entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html">
+ N4508
+ </link>
+ </entry>
+ <entry align="center"> 6.1 </entry>
+ <entry><code> __cpp_lib_shared_mutex >= 201505 </code></entry>
+ </row>
+
+ <row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Variadic <code>lock_guard</code> </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0156r0.html">
+ P0156R0
+ </link>
+ </entry>
+ <entry align="center"> No </entry>
+ <entry><code> __cpp_lib_lock_guard_variadic >= 201510 </code></entry>
+ </row>
+
</tbody>
</tgroup>
</table>
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 4bc33543a47..ea992f05319 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -67,6 +67,7 @@ std_headers = \
${std_srcdir}/stdexcept \
${std_srcdir}/streambuf \
${std_srcdir}/string \
+ ${std_srcdir}/string_view \
${std_srcdir}/system_error \
${std_srcdir}/thread \
${std_srcdir}/tuple \
@@ -111,6 +112,7 @@ bits_headers = \
${bits_srcdir}/hashtable.h \
${bits_srcdir}/hashtable_policy.h \
${bits_srcdir}/indirect_array.h \
+ ${bits_srcdir}/invoke.h \
${bits_srcdir}/ios_base.h \
${bits_srcdir}/istream.tcc \
${bits_srcdir}/list.tcc \
@@ -183,6 +185,7 @@ bits_headers = \
${bits_srcdir}/stl_vector.h \
${bits_srcdir}/streambuf.tcc \
${bits_srcdir}/stringfwd.h \
+ ${bits_srcdir}/string_view.tcc \
${bits_srcdir}/uniform_int_dist.h \
${bits_srcdir}/unique_ptr.h \
${bits_srcdir}/unordered_map.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 1f255a9bbc6..b30eeae5f49 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -357,6 +357,7 @@ std_headers = \
${std_srcdir}/stdexcept \
${std_srcdir}/streambuf \
${std_srcdir}/string \
+ ${std_srcdir}/string_view \
${std_srcdir}/system_error \
${std_srcdir}/thread \
${std_srcdir}/tuple \
@@ -401,6 +402,7 @@ bits_headers = \
${bits_srcdir}/hashtable.h \
${bits_srcdir}/hashtable_policy.h \
${bits_srcdir}/indirect_array.h \
+ ${bits_srcdir}/invoke.h \
${bits_srcdir}/ios_base.h \
${bits_srcdir}/istream.tcc \
${bits_srcdir}/list.tcc \
@@ -473,6 +475,7 @@ bits_headers = \
${bits_srcdir}/stl_vector.h \
${bits_srcdir}/streambuf.tcc \
${bits_srcdir}/stringfwd.h \
+ ${bits_srcdir}/string_view.tcc \
${bits_srcdir}/uniform_int_dist.h \
${bits_srcdir}/unique_ptr.h \
${bits_srcdir}/unordered_map.h \
diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h
index 597d3054c03..984d80075bc 100644
--- a/libstdc++-v3/include/bits/allocator.h
+++ b/libstdc++-v3/include/bits/allocator.h
@@ -49,6 +49,8 @@
#include <type_traits>
#endif
+#define __cpp_lib_incomplete_container_elements 201505
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 58d6e4d4e3a..59f1c64ea35 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -44,6 +44,11 @@
#include <initializer_list>
#endif
+#if __cplusplus > 201402L
+# include <string_view>
+#endif
+
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -103,6 +108,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
typedef const_iterator __const_iterator;
#endif
+#if __cplusplus > 201402L
+ // A helper type for avoiding boiler-plate.
+ typedef basic_string_view<_CharT, _Traits> __sv_type;
+#endif
+
// Use empty-base optimization: http://www.cantrip.org/emptyopt.html
struct _Alloc_hider : allocator_type // TODO check __is_final
{
@@ -559,6 +569,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
: _M_dataplus(_M_local_data(), __a)
{ _M_construct(__beg, __end); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Construct string from a string_view.
+ * @param __sv Source string view.
+ * @param __a Allocator to use (default is default allocator).
+ */
+ explicit basic_string(__sv_type __sv, const _Alloc& __a = _Alloc())
+ : basic_string(__sv.data(), __sv.size(), __a) {}
+#endif // C++17
+
/**
* @brief Destroy the string instance.
*/
@@ -684,6 +704,22 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
}
#endif // C++11
+#if __cplusplus > 201402L
+ /**
+ * @brief Set value to string constructed from a string_view.
+ * @param __sv A string_view.
+ */
+ basic_string& operator=(__sv_type __sv)
+ { return this->assign(__sv); }
+
+ /**
+ * @brief Convert to a string_view.
+ * @return A string_view.
+ */
+ operator __sv_type() const noexcept
+ { return __sv_type(data(), size()); }
+#endif // C++17
+
// Iterators:
/**
* Returns a read/write iterator that points to the first character in
@@ -1067,6 +1103,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
{ return this->append(__l.begin(), __l.size()); }
#endif // C++11
+#if __cplusplus > 201402L
+ /**
+ * @brief Append a string_view.
+ * @param __sv The string_view to be appended.
+ * @return Reference to this string.
+ */
+ basic_string&
+ operator+=(__sv_type __sv)
+ { return this->append(__sv); }
+#endif // C++17
+
/**
* @brief Append a string to this string.
* @param __str The string to append.
@@ -1164,6 +1211,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
append(_InputIterator __first, _InputIterator __last)
{ return this->replace(end(), end(), __first, __last); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Append a string_view.
+ * @param __sv The string_view to be appended.
+ * @return Reference to this string.
+ */
+ basic_string& append(__sv_type __sv)
+ { return this->append(__sv.data(), __sv.size()); }
+
+ /**
+ * @brief Append a range of characters from a string_view.
+ * @param __sv The string_view to be appended from.
+ * @param __pos The position in the string_view to append from.
+ * @param __n The number of characters to append from the string_view.
+ * @return Reference to this string.
+ */
+ basic_string& append(__sv_type __sv,
+ size_type __pos, size_type __n = npos)
+ {
+ return _M_append(__sv.data()
+ + __sv._M_check(__pos, "basic_string::append"),
+ __sv._M_limit(__pos, __n));
+ }
+#endif // C++17
+
/**
* @brief Append a single character.
* @param __c Character to append.
@@ -1304,6 +1376,32 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
{ return this->assign(__l.begin(), __l.size()); }
#endif // C++11
+#if __cplusplus > 201402L
+ /**
+ * @brief Set value from a string_view.
+ * @param __sv The source string_view.
+ * @return Reference to this string.
+ */
+ basic_string& assign(__sv_type __sv)
+ { return this->assign(__sv.data(), __sv.size()); }
+
+ /**
+ * @brief Set value from a range of characters in a string_view.
+ * @param __sv The source string_view.
+ * @param __pos The position in the string_view to assign from.
+ * @param __n The number of characters to assign.
+ * @return Reference to this string.
+ */
+ basic_string&
+ assign(__sv_type __sv,
+ size_type __pos, size_type __n = npos)
+ {
+ return _M_replace(size_type(0), this->size(), __sv.data()
+ + __sv._M_check(__pos, "basic_string::assign"),
+ __sv._M_limit(__pos, __n));
+ }
+#endif // C++17
+
#if __cplusplus >= 201103L
/**
* @brief Insert multiple characters.
@@ -1534,6 +1632,35 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
return iterator(_M_data() + __pos);
}
+#if __cplusplus > 201402L
+ /**
+ * @brief Insert a string_view.
+ * @param __pos Iterator referencing position in string to insert at.
+ * @param __sv The string_view to insert.
+ * @return Reference to this string.
+ */
+ basic_string& insert(size_type __pos,
+ __sv_type __sv)
+ { return this->insert(__pos, __sv.data(), __sv.size()); }
+
+ /**
+ * @brief Insert a string_view.
+ * @param __pos Iterator referencing position in string to insert at.
+ * @param __sv The string_view to insert from.
+ * @param __pos Iterator referencing position in string_view to insert
+ * from.
+ * @param __n The number of characters to insert.
+ * @return Reference to this string.
+ */
+ basic_string& insert(size_type __pos1, __sv_type __sv,
+ size_type __pos2, size_type __n = npos)
+ {
+ return this->replace(__pos1, size_type(0), __sv.data()
+ + __sv._M_check(__pos2, "basic_string::insert"),
+ __sv._M_limit(__pos2, __n));
+ }
+#endif // C++17
+
/**
* @brief Remove characters.
* @param __pos Index of first character to remove (default 0).
@@ -1923,6 +2050,50 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
{ return this->replace(__i1, __i2, __l.begin(), __l.size()); }
#endif // C++11
+#if __cplusplus > 201402L
+ /**
+ * @brief Replace range of characters with string_view.
+ * @param __pos The position to replace at.
+ * @param __n The number of characters to replace.
+ * @param __sv The string_view to insert.
+ * @return Reference to this string.
+ */
+ basic_string& replace(size_type __pos, size_type __n,
+ __sv_type __sv)
+ { return this->replace(__pos, __n, __sv.data(), __sv.size()); }
+
+ /**
+ * @brief Replace range of characters with string_view.
+ * @param __pos1 The position to replace at.
+ * @param __n1 The number of characters to replace.
+ * @param __sv The string_view to insert from.
+ * @param __pos2 The position in the string_view to insert from.
+ * @param __n2 The number of characters to insert.
+ * @return Reference to this string.
+ */
+ basic_string& replace(size_type __pos1, size_type __n1,
+ __sv_type __sv,
+ size_type __pos2, size_type __n2 = npos)
+ {
+ return this->replace(__pos1, __n1, __sv.data()
+ + __sv._M_check(__pos2, "basic_string::replace"),
+ __sv._M_limit(__pos2, __n2));
+ }
+
+ /**
+ * @brief Replace range of characters with string_view.
+ * @param __i1 An iterator referencing the start position
+ to replace at.
+ * @param __i2 An iterator referencing the end position
+ for the replace.
+ * @param __sv The string_view to insert from.
+ * @return Reference to this string.
+ */
+ basic_string& replace(const_iterator __i1, const_iterator __i2,
+ __sv_type __sv)
+ { return this->replace(__i1 - begin(), __i2 - __i1, __sv); }
+#endif // C++17
+
private:
template<class _Integer>
basic_string&
@@ -1988,13 +2159,27 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
/**
* @brief Return const pointer to contents.
*
- * This is a handle to internal data. Do not modify or dire things may
- * happen.
+ * This is a pointer to internal data. It is undefined to modify
+ * the contents through the returned pointer. To get a pointer that
+ * allows modifying the contents use @c &str[0] instead,
+ * (or in C++17 the non-const @c str.data() overload).
*/
const _CharT*
data() const _GLIBCXX_NOEXCEPT
{ return _M_data(); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Return non-const pointer to contents.
+ *
+ * This is a pointer to the character sequence held by the string.
+ * Modifying the characters in the sequence is allowed.
+ */
+ _CharT*
+ data() noexcept
+ { return _M_data(); }
+#endif
+
/**
* @brief Return copy of allocator used to construct this string.
*/
@@ -2032,6 +2217,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->find(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find position of a string_view.
+ * @param __sv The string_view to locate.
+ * @param __pos Index of character to search from (default 0).
+ * @return Index of start of first occurrence.
+ */
+ size_type
+ find(__sv_type __sv,
+ size_type __pos = 0) const noexcept
+ { return this->find(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find position of a C string.
* @param __s C string to locate.
@@ -2077,6 +2275,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->rfind(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find last position of a string_view.
+ * @param __sv The string_view to locate.
+ * @param __pos Index of character to search back from (default end).
+ * @return Index of start of last occurrence.
+ */
+ size_type
+ rfind (__sv_type __sv,
+ size_type __pos = npos) const noexcept
+ { return this->rfind(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find last position of a C substring.
* @param __s C string to locate.
@@ -2138,6 +2349,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->find_first_of(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find position of a character of a string_view.
+ * @param __sv A string_view containing characters to locate.
+ * @param __pos Index of character to search from (default 0).
+ * @return Index of first occurrence.
+ */
+ size_type
+ find_first_of(__sv_type __sv, size_type __pos = 0) const noexcept
+ { return this->find_first_of(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find position of a character of C substring.
* @param __s String containing characters to locate.
@@ -2202,6 +2425,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->find_last_of(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find last position of a character of string.
+ * @param __sv A string_view containing characters to locate.
+ * @param __pos Index of character to search back from (default end).
+ * @return Index of last occurrence.
+ */
+ size_type
+ find_last_of(__sv_type __sv, size_type __pos = npos) const noexcept
+ { return this->find_last_of(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find last position of a character of C substring.
* @param __s C string containing characters to locate.
@@ -2265,6 +2500,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->find_first_not_of(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find position of a character not in a string_view.
+ * @param __sv A string_view containing characters to avoid.
+ * @param __pos Index of character to search from (default 0).
+ * @return Index of first occurrence.
+ */
+ size_type
+ find_first_not_of(__sv_type __sv, size_type __pos = 0) const noexcept
+ { return this->find_first_not_of(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find position of a character not in C substring.
* @param __s C string containing characters to avoid.
@@ -2328,6 +2575,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_GLIBCXX_NOEXCEPT
{ return this->find_last_not_of(__str.data(), __pos, __str.size()); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Find last position of a character not in a string_view.
+ * @param __sv A string_view containing characters to avoid.
+ * @param __pos Index of character to search back from (default end).
+ * @return Index of last occurrence.
+ */
+ size_type
+ find_last_not_of(__sv_type __sv, size_type __pos = npos) const noexcept
+ { return this->find_last_not_of(__sv.data(), __pos, __sv.size()); }
+#endif // C++17
+
/**
* @brief Find last position of a character not in C substring.
* @param __s C string containing characters to avoid.
@@ -2419,6 +2678,57 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
return __r;
}
+#if __cplusplus > 201402L
+ /**
+ * @brief Compare to a string_view.
+ * @param __sv A string_view to compare against.
+ * @return Integer < 0, 0, or > 0.
+ */
+ int
+ compare(__sv_type __sv) const
+ {
+ const size_type __size = this->size();
+ const size_type __osize = __sv.size();
+ const size_type __len = std::min(__size, __osize);
+
+ int __r = traits_type::compare(_M_data(), __sv.data(), __len);
+ if (!__r)
+ __r = _S_compare(__size, __osize);
+ return __r;
+ }
+
+ /**
+ * @brief Compare to a string_view.
+ * @param __pos A position in the string to start comparing from.
+ * @param __n The number of characters to compare.
+ * @param __sv A string_view to compare against.
+ * @return Integer < 0, 0, or > 0.
+ */
+ int
+ compare(size_type __pos, size_type __n,
+ __sv_type __sv) const
+ {
+ return __sv_type(*this).substr(__pos, __n).compare(__sv);
+ }
+
+ /**
+ * @brief Compare to a string_view.
+ * @param __pos1 A position in the string to start comparing from.
+ * @param __n1 The number of characters to compare.
+ * @param __sv A string_view to compare against.
+ * @param __pos2 A position in the string_view to start comparing from.
+ * @param __n2 The number of characters to compare.
+ * @return Integer < 0, 0, or > 0.
+ */
+ int compare(size_type __pos1, size_type __n1,
+ __sv_type __sv,
+ size_type __pos2, size_type __n2 = npos) const
+ {
+ return __sv_type(*this)
+ .substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2));
+ }
+#endif // C++17
+
/**
* @brief Compare substring to a string.
* @param __pos Index of first character of substring.
@@ -4362,13 +4672,27 @@ _GLIBCXX_END_NAMESPACE_CXX11
/**
* @brief Return const pointer to contents.
*
- * This is a handle to internal data. Do not modify or dire things may
- * happen.
+ * This is a pointer to internal data. It is undefined to modify
+ * the contents through the returned pointer. To get a pointer that
+ * allows modifying the contents use @c &str[0] instead,
+ * (or in C++17 the non-const @c str.data() overload).
*/
const _CharT*
data() const _GLIBCXX_NOEXCEPT
{ return _M_data(); }
+#if __cplusplus > 201402L
+ /**
+ * @brief Return non-const pointer to contents.
+ *
+ * This is a pointer to the character sequence held by the string.
+ * Modifying the characters in the sequence is allowed.
+ */
+ _CharT*
+ data() noexcept
+ { return _M_data(); }
+#endif
+
/**
* @brief Return copy of allocator used to construct this string.
*/
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index 2b6644d1c49..0560b466d73 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -1569,7 +1569,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
-#if _GLIBCXX_EXTERN_TEMPLATE > 0
+#if _GLIBCXX_EXTERN_TEMPLATE > 0 && __cplusplus <= 201402L
extern template class basic_string<char>;
extern template
basic_istream<char>&
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 46256074251..8d2c3612afd 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -532,6 +532,13 @@ namespace std
#define _GLIBCXX_TXN_SAFE_DYN
#endif
+#if __cplusplus > 201402L
+// In C++17 mathematical special functions are in namespace std.
+# define _GLIBCXX_USE_STD_SPEC_FUNCS 1
+#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0
+// For C++11 and C++14 they are in namespace std when requested.
+# define _GLIBCXX_USE_STD_SPEC_FUNCS 1
+#endif
// The remainder of the prewritten config is automatic; all the
// user hooks are listed above.
diff --git a/libstdc++-v3/include/bits/invoke.h b/libstdc++-v3/include/bits/invoke.h
new file mode 100644
index 00000000000..60405b5cc87
--- /dev/null
+++ b/libstdc++-v3/include/bits/invoke.h
@@ -0,0 +1,104 @@
+// Implementation of INVOKE -*- C++ -*-
+
+// Copyright (C) 2016 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/invoke.h
+ * This is an internal header file, included by other library headers.
+ * Do not attempt to use it directly. @headername{functional}
+ */
+
+#ifndef _GLIBCXX_INVOKE_H
+#define _GLIBCXX_INVOKE_H 1
+
+#pragma GCC system_header
+
+#if __cplusplus < 201103L
+# include <bits/c++0x_warning.h>
+#else
+
+#include <type_traits>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /**
+ * @addtogroup utilities
+ * @{
+ */
+
+ // Used by __invoke_impl instead of std::forward<_Tp> so that a
+ // reference_wrapper is converted to an lvalue-reference.
+ template<typename _Tp, typename _Up = typename __inv_unwrap<_Tp>::type>
+ constexpr _Up&&
+ __invfwd(typename remove_reference<_Tp>::type& __t) noexcept
+ { return static_cast<_Up&&>(__t); }
+
+ template<typename _Res, typename _Fn, typename... _Args>
+ constexpr _Res
+ __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
+ { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
+
+ template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
+ constexpr _Res
+ __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t,
+ _Args&&... __args)
+ { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); }
+
+ template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
+ constexpr _Res
+ __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t,
+ _Args&&... __args)
+ {
+ return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
+ }
+
+ template<typename _Res, typename _MemPtr, typename _Tp>
+ constexpr _Res
+ __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t)
+ { return __invfwd<_Tp>(__t).*__f; }
+
+ template<typename _Res, typename _MemPtr, typename _Tp>
+ constexpr _Res
+ __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t)
+ { return (*std::forward<_Tp>(__t)).*__f; }
+
+ /// Invoke a callable object.
+ template<typename _Callable, typename... _Args>
+ constexpr typename result_of<_Callable&&(_Args&&...)>::type
+ __invoke(_Callable&& __fn, _Args&&... __args)
+ noexcept(__is_nothrow_callable<_Callable(_Args&&...)>::value)
+ {
+ using __result_of = result_of<_Callable&&(_Args&&...)>;
+ using __type = typename __result_of::type;
+ using __tag = typename __result_of::__invoke_type;
+ return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
+ std::forward<_Args>(__args)...);
+ }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // C++11
+
+#endif // _GLIBCXX_INVOKE_H
diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h
index e2ec0726711..d6f8fa15f0f 100644
--- a/libstdc++-v3/include/bits/range_access.h
+++ b/libstdc++-v3/include/bits/range_access.h
@@ -38,6 +38,10 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+#if __cplusplus >= 201402L
+# define __cpp_lib_array_constexpr 201603L
+#endif
+
/**
* @brief Return an iterator pointing to the first element of
* the container.
diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index b22477e96b2..747b09a2155 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -97,6 +97,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
= typename enable_if<is_convertible<_Ptr, _Tp*>::value>::type;
public:
+
+#if __cplusplus > 201402L
+# define __cpp_lib_shared_ptr_weak_type 201606
+ using weak_type = weak_ptr<_Tp>;
+#endif
/**
* @brief Construct an empty %shared_ptr.
* @post use_count()==0 && get()==0
@@ -535,9 +540,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
/// Primary template owner_less
- template<typename _Tp>
+ template<typename _Tp = void>
struct owner_less;
+ /// Void specialization of owner_less
+ template<>
+ struct owner_less<void> : _Sp_owner_less<void, void>
+ { };
+
/// Partial specialization of owner_less for shared_ptr.
template<typename _Tp>
struct owner_less<shared_ptr<_Tp>>
@@ -576,6 +586,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
shared_from_this() const
{ return shared_ptr<const _Tp>(this->_M_weak_this); }
+#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
+#define __cpp_lib_enable_shared_from_this 201603
+ weak_ptr<_Tp>
+ weak_from_this()
+ { return this->_M_weak_this; }
+
+ weak_ptr<const _Tp>
+ weak_from_this() const
+ { return this->_M_weak_this; }
+#endif
+
private:
template<typename _Tp1>
void
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index e844c9c91fe..787dc9b8658 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -876,6 +876,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public:
typedef _Tp element_type;
+#if __cplusplus > 201402L
+ using weak_type = __weak_ptr<_Tp, _Lp>;
+#endif
+
constexpr __shared_ptr() noexcept
: _M_ptr(0), _M_refcount()
{ }
@@ -1506,6 +1510,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return __lhs.owner_before(__rhs); }
};
+ template<>
+ struct _Sp_owner_less<void, void>
+ {
+ template<typename _Tp, typename _Up>
+ auto
+ operator()(const _Tp& __lhs, const _Up& __rhs) const
+ -> decltype(__lhs.owner_before(__rhs))
+ { return __lhs.owner_before(__rhs); }
+
+ using is_transparent = void;
+ };
+
template<typename _Tp, _Lock_policy _Lp>
struct owner_less<__shared_ptr<_Tp, _Lp>>
: public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>>
@@ -1540,6 +1556,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
shared_from_this() const
{ return __shared_ptr<const _Tp, _Lp>(this->_M_weak_this); }
+#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
+ __weak_ptr<_Tp, _Lp>
+ weak_from_this()
+ { return this->_M_weak_this; }
+
+ __weak_ptr<const _Tp, _Lp>
+ weak_from_this() const
+ { return this->_M_weak_this; }
+#endif
+
private:
template<typename _Tp1>
void
diff --git a/libstdc++-v3/include/bits/specfun.h b/libstdc++-v3/include/bits/specfun.h
index 9f7bb87d2d3..93e18522d58 100644
--- a/libstdc++-v3/include/bits/specfun.h
+++ b/libstdc++-v3/include/bits/specfun.h
@@ -38,7 +38,7 @@
#define __cpp_lib_math_special_functions 201603L
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
+#if __cplusplus <= 201403L && __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
# error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__
#endif
diff --git a/libstdc++-v3/include/bits/stl_function.h b/libstdc++-v3/include/bits/stl_function.h
index eabf9baea53..1408da6e37e 100644
--- a/libstdc++-v3/include/bits/stl_function.h
+++ b/libstdc++-v3/include/bits/stl_function.h
@@ -224,8 +224,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if __cplusplus > 201103L
-#define __cpp_lib_transparent_operators 201210
-//#define __cpp_lib_generic_associative_lookup 201304
+#define __cpp_lib_transparent_operators 201510
template<>
struct plus<void>
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index 7a9a4a6c277..8697a711a5f 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -73,6 +73,10 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+#if __cplusplus > 201103L
+# define __cpp_lib_generic_associative_lookup 201304
+#endif
+
// Red-black tree class, designed for use in implementing STL
// associative containers (set, multiset, map, and multimap). The
// insertion and deletion algorithms are based on those in Cormen,
diff --git a/libstdc++-v3/include/bits/string_view.tcc b/libstdc++-v3/include/bits/string_view.tcc
new file mode 100644
index 00000000000..7de5519b0f5
--- /dev/null
+++ b/libstdc++-v3/include/bits/string_view.tcc
@@ -0,0 +1,227 @@
+// Components for manipulating non-owning sequences of characters -*- C++ -*-
+
+// Copyright (C) 2013-2016 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/string_view.tcc
+ * This is an internal header file, included by other library headers.
+ * Do not attempt to use it directly. @headername{string_view}
+ */
+
+//
+// N3762 basic_string_view library
+//
+
+#ifndef _GLIBCXX_STRING_VIEW_TCC
+#define _GLIBCXX_STRING_VIEW_TCC 1
+
+#pragma GCC system_header
+
+#if __cplusplus <= 201402L
+# include <bits/c++17_warning.h>
+#else
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find(const _CharT* __str, size_type __pos, size_type __n) const noexcept
+ {
+ __glibcxx_requires_string_len(__str, __n);
+
+ if (__n == 0)
+ return __pos <= this->_M_len ? __pos : npos;
+
+ if (__n <= this->_M_len)
+ {
+ for (; __pos <= this->_M_len - __n; ++__pos)
+ if (traits_type::eq(this->_M_str[__pos], __str[0])
+ && traits_type::compare(this->_M_str + __pos + 1,
+ __str + 1, __n - 1) == 0)
+ return __pos;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find(_CharT __c, size_type __pos) const noexcept
+ {
+ size_type __ret = npos;
+ if (__pos < this->_M_len)
+ {
+ const size_type __n = this->_M_len - __pos;
+ const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c);
+ if (__p)
+ __ret = __p - this->_M_str;
+ }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept
+ {
+ __glibcxx_requires_string_len(__str, __n);
+
+ if (__n <= this->_M_len)
+ {
+ __pos = std::min(size_type(this->_M_len - __n), __pos);
+ do
+ {
+ if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0)
+ return __pos;
+ }
+ while (__pos-- > 0);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ rfind(_CharT __c, size_type __pos) const noexcept
+ {
+ size_type __size = this->_M_len;
+ if (__size > 0)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ for (++__size; __size-- > 0; )
+ if (traits_type::eq(this->_M_str[__size], __c))
+ return __size;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_first_of(const _CharT* __str, size_type __pos, size_type __n) const
+ {
+ __glibcxx_requires_string_len(__str, __n);
+ for (; __n && __pos < this->_M_len; ++__pos)
+ {
+ const _CharT* __p = traits_type::find(__str, __n,
+ this->_M_str[__pos]);
+ if (__p)
+ return __pos;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_last_of(const _CharT* __str, size_type __pos, size_type __n) const
+ {
+ __glibcxx_requires_string_len(__str, __n);
+ size_type __size = this->size();
+ if (__size && __n)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (traits_type::find(__str, __n, this->_M_str[__size]))
+ return __size;
+ }
+ while (__size-- != 0);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const
+ {
+ __glibcxx_requires_string_len(__str, __n);
+ for (; __pos < this->_M_len; ++__pos)
+ if (!traits_type::find(__str, __n, this->_M_str[__pos]))
+ return __pos;
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_first_not_of(_CharT __c, size_type __pos) const noexcept
+ {
+ for (; __pos < this->_M_len; ++__pos)
+ if (!traits_type::eq(this->_M_str[__pos], __c))
+ return __pos;
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const
+ {
+ __glibcxx_requires_string_len(__str, __n);
+ size_type __size = this->_M_len;
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::find(__str, __n, this->_M_str[__size]))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_string_view<_CharT, _Traits>::size_type
+ basic_string_view<_CharT, _Traits>::
+ find_last_not_of(_CharT __c, size_type __pos) const noexcept
+ {
+ size_type __size = this->_M_len;
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::eq(this->_M_str[__size], __c))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // __cplusplus <= 201402L
+
+#endif // _GLIBCXX_STRING_VIEW_TCC
diff --git a/libstdc++-v3/include/bits/uses_allocator.h b/libstdc++-v3/include/bits/uses_allocator.h
index b1ff58a294b..46aea1327a6 100644
--- a/libstdc++-v3/include/bits/uses_allocator.h
+++ b/libstdc++-v3/include/bits/uses_allocator.h
@@ -108,6 +108,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__ret._M_a = std::__addressof(__a);
return __ret;
}
+#if __cplusplus > 201402L
+ template <typename _Tp, typename _Alloc>
+ constexpr bool uses_allocator_v = uses_allocator<_Tp, _Alloc>::value;
+#endif // C++17
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
diff --git a/libstdc++-v3/include/c_global/cmath b/libstdc++-v3/include/c_global/cmath
index 6a24ebfec5b..6db9deeb996 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -1790,7 +1790,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
#endif // C++11
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 1
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# include <bits/specfun.h>
#endif
diff --git a/libstdc++-v3/include/experimental/tuple b/libstdc++-v3/include/experimental/tuple
index 81e91bda373..bfa1ed18f9e 100644
--- a/libstdc++-v3/include/experimental/tuple
+++ b/libstdc++-v3/include/experimental/tuple
@@ -36,7 +36,7 @@
#else
#include <tuple>
-#include <functional>
+#include <bits/invoke.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
@@ -54,20 +54,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template <typename _Fn, typename _Tuple, std::size_t... _Idx>
constexpr decltype(auto)
- __apply_impl(_Fn&& f, _Tuple&& t, std::index_sequence<_Idx...>)
+ __apply_impl(_Fn&& __f, _Tuple&& __t, std::index_sequence<_Idx...>)
{
- using _Wrap = _Maybe_wrap_member_pointer<decay_t<_Fn>>;
- return _Wrap::__do_wrap(std::forward<_Fn>(f))(
- std::get<_Idx>(std::forward<_Tuple>(t))...);
+ return std::__invoke(std::forward<_Fn>(__f),
+ std::get<_Idx>(std::forward<_Tuple>(__t))...);
}
template <typename _Fn, typename _Tuple>
constexpr decltype(auto)
- apply(_Fn&& f, _Tuple&& t)
+ apply(_Fn&& __f, _Tuple&& __t)
{
using _Indices =
- std::make_index_sequence<std::tuple_size<std::decay_t<_Tuple>>::value>;
- return __apply_impl(std::forward<_Fn>(f), std::forward<_Tuple>(t),
+ std::make_index_sequence<tuple_size_v<std::decay_t<_Tuple>>>;
+ return __apply_impl(std::forward<_Fn>(__f), std::forward<_Tuple>(__t),
_Indices{});
}
diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
index 4316af72bf0..93bd15248f0 100644
--- a/libstdc++-v3/include/ext/ropeimpl.h
+++ b/libstdc++-v3/include/ext/ropeimpl.h
@@ -1117,7 +1117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
printf("NULL\n");
return;
}
- if (_S_concat == __r->_M_tag)
+ if (__detail::_S_concat == __r->_M_tag)
{
_RopeConcatenation* __c = (_RopeConcatenation*)__r;
_RopeRep* __left = __c->_M_left;
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index 73d26698f72..73a6fbce4f3 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -292,7 +292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
constexpr _Tp&
get(array<_Tp, _Nm>& __arr) noexcept
{
- static_assert(_Int < _Nm, "index is out of bounds");
+ static_assert(_Int < _Nm, "array index is within bounds");
return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
_S_ref(__arr._M_elems, _Int);
}
@@ -301,7 +301,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
constexpr _Tp&&
get(array<_Tp, _Nm>&& __arr) noexcept
{
- static_assert(_Int < _Nm, "index is out of bounds");
+ static_assert(_Int < _Nm, "array index is within bounds");
return std::move(_GLIBCXX_STD_C::get<_Int>(__arr));
}
@@ -309,7 +309,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
constexpr const _Tp&
get(const array<_Tp, _Nm>& __arr) noexcept
{
- static_assert(_Int < _Nm, "index is out of bounds");
+ static_assert(_Int < _Nm, "array index is within bounds");
return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::
_S_ref(__arr._M_elems, _Int);
}
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 9104881eb93..f29d8e1adbc 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -209,6 +209,68 @@ _GLIBCXX_END_NAMESPACE_VERSION
: is_floating_point<_Rep>
{ };
+#if __cplusplus > 201402L
+ template <typename _Rep>
+ constexpr bool treat_as_floating_point_v =
+ treat_as_floating_point<_Rep>::value;
+#endif // C++17
+
+#if __cplusplus > 201402L
+# define __cpp_lib_chrono 201510
+
+ template<typename _ToDur, typename _Rep, typename _Period>
+ constexpr enable_if_t<__is_duration<_ToDur>::value, _ToDur>
+ floor(const duration<_Rep, _Period>& __d)
+ {
+ auto __to = chrono::duration_cast<_ToDur>(__d);
+ if (__to > __d)
+ --__to;
+ return __to;
+ }
+
+ template<typename _ToDur, typename _Rep, typename _Period>
+ constexpr enable_if_t<__is_duration<_ToDur>::value, _ToDur>
+ ceil(const duration<_Rep, _Period>& __d)
+ {
+ auto __to = chrono::duration_cast<_ToDur>(__d);
+ if (__to < __d)
+ return __to + _ToDur{1};
+ return __to;
+ }
+
+ template <typename _ToDur, typename _Rep, typename _Period>
+ constexpr enable_if_t<
+ __and_<__is_duration<_ToDur>,
+ __not_<treat_as_floating_point<typename _ToDur::rep>>>::value,
+ _ToDur>
+ round(const duration<_Rep, _Period>& __d)
+ {
+ _ToDur __t0 = chrono::floor<_ToDur>(__d);
+ _ToDur __t1 = __t0 + _ToDur{1};
+ auto __diff0 = __d - __t0;
+ auto __diff1 = __t1 - __d;
+ if (__diff0 == __diff1)
+ {
+ if (__t0.count() & 1)
+ return __t1;
+ return __t0;
+ }
+ else if (__diff0 < __diff1)
+ return __t0;
+ return __t1;
+ }
+
+ template<typename _Rep, typename _Period>
+ constexpr
+ enable_if_t<numeric_limits<_Rep>::is_signed, duration<_Rep, _Period>>
+ abs(duration<_Rep, _Period> __d)
+ {
+ if (__d >= __d.zero())
+ return __d;
+ return -__d;
+ }
+#endif // C++17
+
/// duration_values
template<typename _Rep>
struct duration_values
@@ -606,6 +668,37 @@ _GLIBCXX_END_NAMESPACE_VERSION
return __time_point(duration_cast<_ToDur>(__t.time_since_epoch()));
}
+#if __cplusplus > 201402L
+ template<typename _ToDur, typename _Clock, typename _Dur>
+ constexpr
+ enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>>
+ floor(const time_point<_Clock, _Dur>& __tp)
+ {
+ return time_point<_Clock, _ToDur>{
+ chrono::floor<_ToDur>(__tp.time_since_epoch())};
+ }
+
+ template<typename _ToDur, typename _Clock, typename _Dur>
+ constexpr
+ enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>>
+ ceil(const time_point<_Clock, _Dur>& __tp)
+ {
+ return time_point<_Clock, _ToDur>{
+ chrono::ceil<_ToDur>(__tp.time_since_epoch())};
+ }
+
+ template<typename _ToDur, typename _Clock, typename _Dur>
+ constexpr enable_if_t<
+ __and_<__is_duration<_ToDur>,
+ __not_<treat_as_floating_point<typename _ToDur::rep>>>::value,
+ time_point<_Clock, _ToDur>>
+ round(const time_point<_Clock, _Dur>& __tp)
+ {
+ return time_point<_Clock, _ToDur>{
+ chrono::round<_ToDur>(__tp.time_since_epoch())};
+ }
+#endif // C++17
+
template<typename _Clock, typename _Dur1,
typename _Rep2, typename _Period2>
constexpr time_point<_Clock,
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 0fdf0436694..86081346cf6 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -56,6 +56,7 @@
#include <type_traits>
#include <bits/functexcept.h>
#include <bits/functional_hash.h>
+#include <bits/invoke.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
@@ -184,82 +185,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: _Weak_result_type_impl<typename remove_cv<_Functor>::type>
{ };
- template<typename _Tp, typename _Up = typename decay<_Tp>::type>
- struct _Unwrap
- {
- using type = _Tp&&;
-
- // Equivalent to std::forward<_Tp>
- static constexpr _Tp&&
- _S_fwd(_Tp& __t) noexcept { return static_cast<_Tp&&>(__t); }
- };
-
- template<typename _Tp, typename _Up>
- struct _Unwrap<_Tp, reference_wrapper<_Up>>
- {
- using type = _Up&;
-
- // Get an lvalue-reference from a reference_wrapper.
- static _Up&
- _S_fwd(const _Tp& __t) noexcept { __t.get(); }
- };
-
- // Used by __invoke_impl instead of std::forward<_Tp> so that a
- // reference_wrapper is converted to an lvalue-reference.
- template<typename _Tp>
- inline typename _Unwrap<_Tp>::type
- __invfwd(typename remove_reference<_Tp>::type& __t) noexcept
- { return _Unwrap<_Tp>::_S_fwd(__t); }
-
- template<typename _Res, typename _Fn, typename... _Args>
- inline _Res
- __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
- noexcept(noexcept(std::forward<_Fn>(__f)(std::forward<_Args>(__args)...)))
- { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
-
- template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
- inline _Res
- __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t,
- _Args&&... __args)
- noexcept(noexcept(
- (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...)))
- { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); }
-
- template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
- inline _Res
- __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t,
- _Args&&... __args)
- noexcept(noexcept(
- ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...)))
- {
- return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
- }
-
- template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
- inline _Res
- __invoke_impl(__invoke_memobj_ref, _MemFun&& __f, _Tp&& __t)
- noexcept(noexcept(__invfwd<_Tp>(__t).*__f))
- { return __invfwd<_Tp>(__t).*__f; }
-
- template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
- inline _Res
- __invoke_impl(__invoke_memobj_deref, _MemFun&& __f, _Tp&& __t,
- _Args&&... __args)
- noexcept(noexcept((*std::forward<_Tp>(__t)).*__f))
- { return (*std::forward<_Tp>(__t)).*__f; }
-
- /// Invoke a callable object.
- template<typename _Callable, typename... _Args>
- inline typename result_of<_Callable&&(_Args&&...)>::type
- __invoke(_Callable&& __fn, _Args&&... __args)
- {
- using __result_of = result_of<_Callable&&(_Args&&...)>;
- using __type = typename __result_of::type;
- using __tag = typename __result_of::__invoke_type;
- return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
- std::forward<_Args>(__args)...);
- }
-
#if __cplusplus > 201402L
# define __cpp_lib_invoke 201411
@@ -267,6 +192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Callable, typename... _Args>
inline result_of_t<_Callable&&(_Args&&...)>
invoke(_Callable&& __fn, _Args&&... __args)
+ noexcept(is_nothrow_callable_v<_Callable(_Args&&...)>)
{
return std::__invoke(std::forward<_Callable>(__fn),
std::forward<_Args>(__args)...);
@@ -682,6 +608,13 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
: public integral_constant<int, 0>
{ };
+#if __cplusplus > 201402L
+ template <typename _Tp> constexpr bool is_bind_expression_v
+ = is_bind_expression<_Tp>::value;
+ template <typename _Tp> constexpr int is_placeholder_v
+ = is_placeholder<_Tp>::value;
+#endif // C++17
+
/** @brief The type of placeholder objects defined by libstdc++.
* @ingroup binders
*/
@@ -751,10 +684,10 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
// Like tuple_element_t but SFINAE-friendly.
- template<std::size_t __i, typename _Tuple>
- using _Safe_tuple_element_t
- = typename enable_if<(__i < tuple_size<_Tuple>::value),
- tuple_element<__i, _Tuple>>::type::type;
+ template<std::size_t __i, typename _Tuple>
+ using _Safe_tuple_element_t
+ = typename enable_if<(__i < tuple_size<_Tuple>::value),
+ tuple_element<__i, _Tuple>>::type::type;
/**
* Maps an argument to bind() into an actual argument to the bound
@@ -1502,33 +1435,6 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
: __is_location_invariant<_Tp>
{ };
- // Converts a reference to a function object into a callable
- // function object.
- template<typename _Functor>
- inline _Functor&
- __callable_functor(_Functor& __f)
- { return __f; }
-
- template<typename _Member, typename _Class>
- inline _Mem_fn<_Member _Class::*>
- __callable_functor(_Member _Class::* &__p)
- { return std::mem_fn(__p); }
-
- template<typename _Member, typename _Class>
- inline _Mem_fn<_Member _Class::*>
- __callable_functor(_Member _Class::* const &__p)
- { return std::mem_fn(__p); }
-
- template<typename _Member, typename _Class>
- inline _Mem_fn<_Member _Class::*>
- __callable_functor(_Member _Class::* volatile &__p)
- { return std::mem_fn(__p); }
-
- template<typename _Member, typename _Class>
- inline _Mem_fn<_Member _Class::*>
- __callable_functor(_Member _Class::* const volatile &__p)
- { return std::mem_fn(__p); }
-
template<typename _Signature>
class function;
@@ -1566,7 +1472,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
static void
_M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
{
- new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
+ ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
}
// Clone a function object that is not location-invariant or
@@ -1647,7 +1553,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
private:
static void
_M_init_functor(_Any_data& __functor, _Functor&& __f, true_type)
- { new (__functor._M_access()) _Functor(std::move(__f)); }
+ { ::new (__functor._M_access()) _Functor(std::move(__f)); }
static void
_M_init_functor(_Any_data& __functor, _Functor&& __f, false_type)
@@ -1750,8 +1656,8 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
static _Res
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
{
- return std::__callable_functor(**_Base::_M_get_pointer(__functor))(
- std::forward<_ArgTypes>(__args)...);
+ return std::__invoke(**_Base::_M_get_pointer(__functor),
+ std::forward<_ArgTypes>(__args)...);
}
};
@@ -1765,8 +1671,8 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
static void
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
{
- std::__callable_functor(**_Base::_M_get_pointer(__functor))(
- std::forward<_ArgTypes>(__args)...);
+ std::__invoke(**_Base::_M_get_pointer(__functor),
+ std::forward<_ArgTypes>(__args)...);
}
};
@@ -1782,8 +1688,8 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
static _Res
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
{
- return std::mem_fn(_Base::_M_get_pointer(__functor)->__value)(
- std::forward<_ArgTypes>(__args)...);
+ return std::__invoke(_Base::_M_get_pointer(__functor)->__value,
+ std::forward<_ArgTypes>(__args)...);
}
};
@@ -1822,8 +1728,8 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
static void
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
{
- std::mem_fn(_Base::_M_get_pointer(__functor)->__value)(
- std::forward<_ArgTypes>(__args)...);
+ std::__invoke(_Base::_M_get_pointer(__functor)->__value,
+ std::forward<_ArgTypes>(__args)...);
}
};
@@ -1845,7 +1751,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
typedef _Res _Signature_type(_ArgTypes...);
template<typename _Func,
- typename _Res2 = typename result_of<_Func(_ArgTypes...)>::type>
+ typename _Res2 = typename result_of<_Func&(_ArgTypes...)>::type>
struct _Callable : __check_func_return_type<_Res2, _Res> { };
// Used so the return type convertibility checks aren't done when
@@ -1897,8 +1803,6 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
__x.swap(*this);
}
- // TODO: needs allocator_arg_t
-
/**
* @brief Builds a %function that targets a copy of the incoming
* function object.
@@ -2025,17 +1929,6 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
std::swap(_M_invoker, __x._M_invoker);
}
- // TODO: needs allocator_arg_t
- /*
- template<typename _Functor, typename _Alloc>
- void
- assign(_Functor&& __f, const _Alloc& __a)
- {
- function(allocator_arg, __a,
- std::forward<_Functor>(__f)).swap(*this);
- }
- */
-
// [3.7.2.3] function capacity
/**
diff --git a/libstdc++-v3/include/std/ratio b/libstdc++-v3/include/std/ratio
index 9d7b61cd840..4a243a0cf73 100644
--- a/libstdc++-v3/include/std/ratio
+++ b/libstdc++-v3/include/std/ratio
@@ -401,6 +401,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: integral_constant<bool, !ratio_less<_R1, _R2>::value>
{ };
+#if __cplusplus > 201402L
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value;
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value;
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value;
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_less_equal_v = ratio_less_equal<_R1, _R2>::value;
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value;
+ template <typename _R1, typename _R2>
+ constexpr bool ratio_greater_equal_v
+ = ratio_greater_equal<_R1, _R2>::value;
+#endif // C++17
+
template<typename _R1, typename _R2,
bool = (_R1::num >= 0),
bool = (_R2::num >= 0),
diff --git a/libstdc++-v3/include/std/shared_mutex b/libstdc++-v3/include/std/shared_mutex
index 6ca322b44e8..9712b358b8b 100644
--- a/libstdc++-v3/include/std/shared_mutex
+++ b/libstdc++-v3/include/std/shared_mutex
@@ -52,7 +52,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifdef _GLIBCXX_HAS_GTHREADS
#if __cplusplus > 201402L
-// TODO: #define __cpp_lib_shared_mutex 201505
+#define __cpp_lib_shared_mutex 201505
class shared_mutex;
#endif
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
new file mode 100644
index 00000000000..d78ed0284dd
--- /dev/null
+++ b/libstdc++-v3/include/std/string_view
@@ -0,0 +1,652 @@
+// Components for manipulating non-owning sequences of characters -*- C++ -*-
+
+// Copyright (C) 2013-2016 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file string_view
+ * This is a Standard C++ Library header.
+ */
+
+//
+// N3762 basic_string_view library
+//
+
+#ifndef _GLIBCXX_STRING_VIEW
+#define _GLIBCXX_STRING_VIEW 1
+
+#pragma GCC system_header
+
+#if __cplusplus <= 201402L
+# include <bits/c++17_warning.h>
+#else
+
+#include <limits>
+#include <iosfwd>
+#include <bits/char_traits.h>
+#include <bits/functional_hash.h>
+#include <bits/range_access.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /**
+ * @class basic_string_view <string_view>
+ * @brief A non-owning reference to a string.
+ *
+ * @ingroup strings
+ * @ingroup sequences
+ *
+ * @tparam _CharT Type of character
+ * @tparam _Traits Traits for character type, defaults to
+ * char_traits<_CharT>.
+ *
+ * A basic_string_view looks like this:
+ *
+ * @code
+ * _CharT* _M_str
+ * size_t _M_len
+ * @endcode
+ */
+ template<typename _CharT, typename _Traits = std::char_traits<_CharT>>
+ class basic_string_view
+ {
+ public:
+
+ // types
+ using traits_type = _Traits;
+ using value_type = _CharT;
+ using pointer = const _CharT*;
+ using const_pointer = const _CharT*;
+ using reference = const _CharT&;
+ using const_reference = const _CharT&;
+ using const_iterator = const _CharT*;
+ using iterator = const_iterator;
+ using const_reverse_iterator = std::reverse_iterator<const_iterator>;
+ using reverse_iterator = const_reverse_iterator;
+ using size_type = size_t;
+ using difference_type = ptrdiff_t;
+ static constexpr size_type npos = size_type(-1);
+
+ // [string.view.cons], construct/copy
+
+ constexpr
+ basic_string_view() noexcept
+ : _M_len{0}, _M_str{nullptr}
+ { }
+
+ constexpr basic_string_view(const basic_string_view&) noexcept = default;
+
+ constexpr basic_string_view(const _CharT* __str)
+ : _M_len{__str == nullptr ? 0 : traits_type::length(__str)},
+ _M_str{__str}
+ { }
+
+ constexpr basic_string_view(const _CharT* __str, size_type __len)
+ : _M_len{__len},
+ _M_str{__str}
+ { }
+
+ basic_string_view&
+ operator=(const basic_string_view&) noexcept = default;
+
+ // [string.view.iterators], iterators
+
+ constexpr const_iterator
+ begin() const noexcept
+ { return this->_M_str; }
+
+ constexpr const_iterator
+ end() const noexcept
+ { return this->_M_str + this->_M_len; }
+
+ constexpr const_iterator
+ cbegin() const noexcept
+ { return this->_M_str; }
+
+ constexpr const_iterator
+ cend() const noexcept
+ { return this->_M_str + this->_M_len; }
+
+ const_reverse_iterator
+ rbegin() const noexcept
+ { return const_reverse_iterator(this->end()); }
+
+ const_reverse_iterator
+ rend() const noexcept
+ { return const_reverse_iterator(this->begin()); }
+
+ const_reverse_iterator
+ crbegin() const noexcept
+ { return const_reverse_iterator(this->end()); }
+
+ const_reverse_iterator
+ crend() const noexcept
+ { return const_reverse_iterator(this->begin()); }
+
+ // [string.view.capacity], capacity
+
+ constexpr size_type
+ size() const noexcept
+ { return this->_M_len; }
+
+ constexpr size_type
+ length() const noexcept
+ { return _M_len; }
+
+ constexpr size_type
+ max_size() const noexcept
+ {
+ return (npos - sizeof(size_type) - sizeof(void*))
+ / sizeof(value_type) / 4;
+ }
+
+ constexpr bool
+ empty() const noexcept
+ { return this->_M_len == 0; }
+
+ // [string.view.access], element access
+
+ constexpr const _CharT&
+ operator[](size_type __pos) const noexcept
+ {
+ // TODO: Assert to restore in a way compatible with the constexpr.
+ // __glibcxx_assert(__pos < this->_M_len);
+ return *(this->_M_str + __pos);
+ }
+
+ constexpr const _CharT&
+ at(size_type __pos) const
+ {
+ return __pos < this->_M_len
+ ? *(this->_M_str + __pos)
+ : (__throw_out_of_range_fmt(__N("basic_string_view::at: __pos "
+ "(which is %zu) >= this->size() "
+ "(which is %zu)"),
+ __pos, this->size()),
+ *this->_M_str);
+ }
+
+ constexpr const _CharT&
+ front() const
+ {
+ // TODO: Assert to restore in a way compatible with the constexpr.
+ // __glibcxx_assert(this->_M_len > 0);
+ return *this->_M_str;
+ }
+
+ constexpr const _CharT&
+ back() const
+ {
+ // TODO: Assert to restore in a way compatible with the constexpr.
+ // __glibcxx_assert(this->_M_len > 0);
+ return *(this->_M_str + this->_M_len - 1);
+ }
+
+ constexpr const _CharT*
+ data() const noexcept
+ { return this->_M_str; }
+
+ // [string.view.modifiers], modifiers:
+
+ void
+ remove_prefix(size_type __n)
+ {
+ __glibcxx_assert(this->_M_len >= __n);
+ this->_M_str += __n;
+ this->_M_len -= __n;
+ }
+
+ void
+ remove_suffix(size_type __n)
+ { this->_M_len -= __n; }
+
+ void
+ swap(basic_string_view& __sv) noexcept
+ {
+ std::swap(this->_M_len, __sv._M_len);
+ std::swap(this->_M_str, __sv._M_str);
+ }
+
+
+ // [string.view.ops], string operations:
+
+ size_type
+ copy(_CharT* __str, size_type __n, size_type __pos = 0) const
+ {
+ __glibcxx_requires_string_len(__str, __n);
+ if (__pos > this->_M_len)
+ __throw_out_of_range_fmt(__N("basic_string_view::copy: __pos "
+ "(which is %zu) > this->size() "
+ "(which is %zu)"),
+ __pos, this->size());
+ size_type __rlen{std::min(__n, size_type{this->_M_len - __pos})};
+ for (auto __begin = this->_M_str + __pos,
+ __end = __begin + __rlen; __begin != __end;)
+ *__str++ = *__begin++;
+ return __rlen;
+ }
+
+
+ // [string.view.ops], string operations:
+
+ constexpr basic_string_view
+ substr(size_type __pos, size_type __n=npos) const
+ {
+ return __pos <= this->_M_len
+ ? basic_string_view{this->_M_str + __pos,
+ std::min(__n, size_type{this->_M_len - __pos})}
+ : (__throw_out_of_range_fmt(__N("basic_string_view::substr: __pos "
+ "(which is %zu) > this->size() "
+ "(which is %zu)"),
+ __pos, this->size()), basic_string_view{});
+ }
+
+ int
+ compare(basic_string_view __str) const noexcept
+ {
+ int __ret = traits_type::compare(this->_M_str, __str._M_str,
+ std::min(this->_M_len, __str._M_len));
+ if (__ret == 0)
+ __ret = _S_compare(this->_M_len, __str._M_len);
+ return __ret;
+ }
+
+ int
+ compare(size_type __pos1, size_type __n1, basic_string_view __str) const
+ { return this->substr(__pos1, __n1).compare(__str); }
+
+ int
+ compare(size_type __pos1, size_type __n1,
+ basic_string_view __str, size_type __pos2, size_type __n2) const
+ { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); }
+
+ int
+ compare(const _CharT* __str) const noexcept
+ { return this->compare(basic_string_view{__str}); }
+
+ int
+ compare(size_type __pos1, size_type __n1, const _CharT* __str) const
+ { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); }
+
+ int
+ compare(size_type __pos1, size_type __n1,
+ const _CharT* __str, size_type __n2) const
+ {
+ return this->substr(__pos1, __n1)
+ .compare(basic_string_view(__str, __n2));
+ }
+
+ size_type
+ find(basic_string_view __str, size_type __pos = 0) const noexcept
+ { return this->find(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ find(_CharT __c, size_type __pos=0) const noexcept;
+
+ size_type
+ find(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
+
+ size_type
+ find(const _CharT* __str, size_type __pos=0) const noexcept
+ { return this->find(__str, __pos, traits_type::length(__str)); }
+
+ size_type
+ rfind(basic_string_view __str, size_type __pos = npos) const noexcept
+ { return this->rfind(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ rfind(_CharT __c, size_type __pos = npos) const noexcept;
+
+ size_type
+ rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
+
+ size_type
+ rfind(const _CharT* __str, size_type __pos = npos) const noexcept
+ { return this->rfind(__str, __pos, traits_type::length(__str)); }
+
+ size_type
+ find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept
+ { return this->find_first_of(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ find_first_of(_CharT __c, size_type __pos = 0) const noexcept
+ { return this->find(__c, __pos); }
+
+ size_type
+ find_first_of(const _CharT* __str, size_type __pos, size_type __n) const;
+
+ size_type
+ find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept
+ { return this->find_first_of(__str, __pos, traits_type::length(__str)); }
+
+ size_type
+ find_last_of(basic_string_view __str,
+ size_type __pos = npos) const noexcept
+ { return this->find_last_of(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ find_last_of(_CharT __c, size_type __pos=npos) const noexcept
+ { return this->rfind(__c, __pos); }
+
+ size_type
+ find_last_of(const _CharT* __str, size_type __pos, size_type __n) const;
+
+ size_type
+ find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept
+ { return this->find_last_of(__str, __pos, traits_type::length(__str)); }
+
+ size_type
+ find_first_not_of(basic_string_view __str,
+ size_type __pos = 0) const noexcept
+ { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept;
+
+ size_type
+ find_first_not_of(const _CharT* __str,
+ size_type __pos, size_type __n) const;
+
+ size_type
+ find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept
+ {
+ return this->find_first_not_of(__str, __pos,
+ traits_type::length(__str));
+ }
+
+ size_type
+ find_last_not_of(basic_string_view __str,
+ size_type __pos = npos) const noexcept
+ { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); }
+
+ size_type
+ find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept;
+
+ size_type
+ find_last_not_of(const _CharT* __str,
+ size_type __pos, size_type __n) const;
+
+ size_type
+ find_last_not_of(const _CharT* __str,
+ size_type __pos = npos) const noexcept
+ {
+ return this->find_last_not_of(__str, __pos,
+ traits_type::length(__str));
+ }
+
+ size_type
+ _M_check(size_type __pos, const char* __s) const
+ {
+ if (__pos > this->size())
+ __throw_out_of_range_fmt(__N("%s: __pos (which is %zu) > "
+ "this->size() (which is %zu)"),
+ __s, __pos, this->size());
+ return __pos;
+ }
+
+ // NB: _M_limit doesn't check for a bad __pos value.
+ size_type
+ _M_limit(size_type __pos, size_type __off) const _GLIBCXX_NOEXCEPT
+ {
+ const bool __testoff = __off < this->size() - __pos;
+ return __testoff ? __off : this->size() - __pos;
+ }
+
+ private:
+
+ static constexpr const int
+ _S_compare(size_type __n1, size_type __n2) noexcept
+ {
+ return difference_type{__n1 - __n2} > std::numeric_limits<int>::max()
+ ? std::numeric_limits<int>::max()
+ : difference_type{__n1 - __n2} < std::numeric_limits<int>::min()
+ ? std::numeric_limits<int>::min()
+ : static_cast<int>(difference_type{__n1 - __n2});
+ }
+
+ size_t _M_len;
+ const _CharT* _M_str;
+ };
+
+
+ // [string.view.comparison], non-member basic_string_view comparison function
+ _GLIBCXX_END_NAMESPACE_VERSION
+ namespace __detail
+ {
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ // Identity transform to make ADL work with just one argument.
+ // See n3766.html.
+ template<typename _Tp = void>
+ struct __identity
+ { typedef _Tp type; };
+
+ template<>
+ struct __identity<void>;
+
+ template<typename _Tp>
+ using __idt = typename __identity<_Tp>::type;
+ _GLIBCXX_END_NAMESPACE_VERSION
+ }
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator==(basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) == 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator==(basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return __x.compare(__y) == 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) == 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator!=(basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return !(__x == __y); }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator!=(basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return !(__x == __y); }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator!=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return !(__x == __y); }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator< (basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) < 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator< (basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return __x.compare(__y) < 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator< (__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) < 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator> (basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) > 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator> (basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return __x.compare(__y) > 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator> (__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) > 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator<=(basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) <= 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator<=(basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return __x.compare(__y) <= 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator<=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) <= 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator>=(basic_string_view<_CharT, _Traits> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) >= 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator>=(basic_string_view<_CharT, _Traits> __x,
+ __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
+ { return __x.compare(__y) >= 0; }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator>=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
+ basic_string_view<_CharT, _Traits> __y) noexcept
+ { return __x.compare(__y) >= 0; }
+
+ // [string.view.io], Inserters and extractors
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __os,
+ basic_string_view<_CharT,_Traits> __str)
+ { return __ostream_insert(__os, __str.data(), __str.size()); }
+
+
+ // basic_string_view typedef names
+
+ using string_view = basic_string_view<char>;
+#ifdef _GLIBCXX_USE_WCHAR_T
+ using wstring_view = basic_string_view<wchar_t>;
+#endif
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+ using u16string_view = basic_string_view<char16_t>;
+ using u32string_view = basic_string_view<char32_t>;
+#endif
+
+ // [string.view.hash], hash support:
+
+ template<typename _Tp>
+ struct hash;
+
+ template<>
+ struct hash<string_view>
+ : public __hash_base<size_t, string_view>
+ {
+ size_t
+ operator()(const string_view& __str) const noexcept
+ { return std::_Hash_impl::hash(__str.data(), __str.length()); }
+ };
+
+ template<>
+ struct __is_fast_hash<hash<string_view>> : std::false_type
+ { };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+ template<>
+ struct hash<wstring_view>
+ : public __hash_base<size_t, wstring>
+ {
+ size_t
+ operator()(const wstring_view& __s) const noexcept
+ { return std::_Hash_impl::hash(__s.data(),
+ __s.length() * sizeof(wchar_t)); }
+ };
+
+ template<>
+ struct __is_fast_hash<hash<wstring_view>> : std::false_type
+ { };
+#endif
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+ template<>
+ struct hash<u16string_view>
+ : public __hash_base<size_t, u16string_view>
+ {
+ size_t
+ operator()(const u16string_view& __s) const noexcept
+ { return std::_Hash_impl::hash(__s.data(),
+ __s.length() * sizeof(char16_t)); }
+ };
+
+ template<>
+ struct __is_fast_hash<hash<u16string_view>> : std::false_type
+ { };
+
+ template<>
+ struct hash<u32string_view>
+ : public __hash_base<size_t, u32string_view>
+ {
+ size_t
+ operator()(const u32string_view& __s) const noexcept
+ { return std::_Hash_impl::hash(__s.data(),
+ __s.length() * sizeof(char32_t)); }
+ };
+
+ template<>
+ struct __is_fast_hash<hash<u32string_view>> : std::false_type
+ { };
+#endif
+_GLIBCXX_END_NAMESPACE_VERSION
+
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#include <bits/string_view.tcc>
+
+#endif // __cplusplus <= 201402L
+
+#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW
diff --git a/libstdc++-v3/include/std/system_error b/libstdc++-v3/include/std/system_error
index 79320fac598..1ef64f46015 100644
--- a/libstdc++-v3/include/std/system_error
+++ b/libstdc++-v3/include/std/system_error
@@ -60,6 +60,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct is_error_condition_enum<errc>
: public true_type { };
+#if __cplusplus > 201402L
+ template <typename _Tp>
+ constexpr bool is_error_code_enum_v = is_error_code_enum<_Tp>::value;
+ template <typename _Tp>
+ constexpr bool is_error_condition_enum_v =
+ is_error_condition_enum<_Tp>::value;
+#endif // C++17
inline namespace _V2 {
/// error_category
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 180a34629f8..b9074cb1bd9 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -38,6 +38,7 @@
#include <utility>
#include <array>
#include <bits/uses_allocator.h>
+#include <bits/invoke.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
@@ -1243,6 +1244,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
+ /// class tuple_size
+ template<typename... _Elements>
+ struct tuple_size<tuple<_Elements...>>
+ : public integral_constant<std::size_t, sizeof...(_Elements)> { };
+
+#if __cplusplus > 201402L
+ template <typename _Tp>
+ constexpr size_t tuple_size_v = tuple_size<_Tp>::value;
+#endif
+
/**
* Recursive case for tuple_element: strip off the first element in
* the tuple and retrieve the (i-1)th element of the remaining tuple.
@@ -1260,10 +1271,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef _Head type;
};
- /// class tuple_size
- template<typename... _Elements>
- struct tuple_size<tuple<_Elements...>>
- : public integral_constant<std::size_t, sizeof...(_Elements)> { };
+ /**
+ * Error case for tuple_element: invalid index.
+ */
+ template<size_t __i>
+ struct tuple_element<__i, tuple<>>
+ {
+ static_assert(__i < tuple_size<tuple<>>::value,
+ "tuple index is in range");
+ };
template<std::size_t __i, typename _Head, typename... _Tail>
constexpr _Head&
@@ -1620,6 +1636,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
{ }
+#if __cplusplus > 201402L
+# define __cpp_lib_apply 201603
+
+ template <typename _Fn, typename _Tuple, size_t... _Idx>
+ constexpr decltype(auto)
+ __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>)
+ {
+ return std::__invoke(std::forward<_Fn>(__f),
+ std::get<_Idx>(std::forward<_Tuple>(__t))...);
+ }
+
+ template <typename _Fn, typename _Tuple>
+ constexpr decltype(auto)
+ apply(_Fn&& __f, _Tuple&& __t)
+ {
+ using _Indices = make_index_sequence<tuple_size_v<decay_t<_Tuple>>>;
+ return __apply_impl(std::forward<_Fn>(__f), std::forward<_Tuple>(__t),
+ _Indices{});
+ }
+#endif // C++17
+
/// @}
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index e5c0d468f92..baa4d1ffe96 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -156,7 +156,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if __cplusplus > 201402L
-#define __cpp_lib_logical_traits 201511
+#define __cpp_lib_logical_traits 201510
template<typename... _Bn>
struct conjunction
@@ -172,6 +172,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct negation
: __not_<_Pp>
{ };
+
+ template<typename... _Bn>
+ constexpr bool conjunction_v
+ = conjunction<_Bn...>::value;
+
+ template<typename... _Bn>
+ constexpr bool disjunction_v
+ = disjunction<_Bn...>::value;
+
+ template<typename _Pp>
+ constexpr bool negation_v
+ = negation<_Pp>::value;
+
#endif
// For several sfinae-friendly trait implementations we transport both the
@@ -1434,23 +1447,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__has_trivial_destructor(_Tp)>>
{ };
- /// has_trivial_default_constructor (temporary legacy)
- template<typename _Tp>
- struct has_trivial_default_constructor
- : public integral_constant<bool, __has_trivial_constructor(_Tp)>
- { } _GLIBCXX_DEPRECATED;
-
- /// has_trivial_copy_constructor (temporary legacy)
- template<typename _Tp>
- struct has_trivial_copy_constructor
- : public integral_constant<bool, __has_trivial_copy(_Tp)>
- { } _GLIBCXX_DEPRECATED;
-
- /// has_trivial_copy_assign (temporary legacy)
- template<typename _Tp>
- struct has_trivial_copy_assign
- : public integral_constant<bool, __has_trivial_assign(_Tp)>
- { } _GLIBCXX_DEPRECATED;
/// has_virtual_destructor
template<typename _Tp>
@@ -2765,7 +2761,275 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr bool is_nothrow_swappable_with_v =
is_nothrow_swappable_with<_Tp, _Up>::value;
#endif // __cplusplus >= 201402L
-#endif
+
+#endif// c++1z or gnu++11
+
+ // __is_callable (std::is_callable for C++11)
+
+ template<typename _Result, typename _Ret, typename = __void_t<>>
+ struct __is_callable_impl : false_type { };
+
+ template<typename _Result, typename _Ret>
+ struct __is_callable_impl<_Result, _Ret, __void_t<typename _Result::type>>
+ : __or_<is_void<_Ret>, is_convertible<typename _Result::type, _Ret>>::type
+ { };
+
+ template<typename, typename _Ret = void>
+ struct __is_callable; // not defined
+
+ template<typename _Fn, typename... _ArgTypes, typename _Ret>
+ struct __is_callable<_Fn(_ArgTypes...), _Ret>
+ : __is_callable_impl<result_of<_Fn(_ArgTypes...)>, _Ret>::type
+ { };
+
+ // Used by __invoke and __is_nothrow_callable to unwrap a reference_wrapper.
+ template<typename _Tp, typename _Up = typename decay<_Tp>::type>
+ struct __inv_unwrap
+ {
+ using type = _Tp;
+ };
+
+ template<typename _Tp, typename _Up>
+ struct __inv_unwrap<_Tp, reference_wrapper<_Up>>
+ {
+ using type = _Up&;
+ };
+
+ template<typename _Fn, typename _Tp, typename... _Args>
+ constexpr bool __call_is_nt(__invoke_memfun_ref)
+ {
+ using _Up = typename __inv_unwrap<_Tp>::type;
+ return noexcept((std::declval<_Up>().*std::declval<_Fn>())(
+ std::declval<_Args>()...));
+ }
+
+ template<typename _Fn, typename _Tp, typename... _Args>
+ constexpr bool __call_is_nt(__invoke_memfun_deref)
+ {
+ return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())(
+ std::declval<_Args>()...));
+ }
+
+ template<typename _Fn, typename _Tp>
+ constexpr bool __call_is_nt(__invoke_memobj_ref)
+ {
+ using _Up = typename __inv_unwrap<_Tp>::type;
+ return noexcept(std::declval<_Up>().*std::declval<_Fn>());
+ }
+
+ template<typename _Fn, typename _Tp>
+ constexpr bool __call_is_nt(__invoke_memobj_deref)
+ {
+ return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>());
+ }
+
+ template<typename _Fn, typename... _Args>
+ constexpr bool __call_is_nt(__invoke_other)
+ {
+ return noexcept(std::declval<_Fn>()(std::declval<_Args>()...));
+ }
+
+ template<typename _ResultOf, typename _Fn, typename... _Args>
+ struct __call_is_nothrow
+ : __bool_constant<
+ std::__call_is_nt<_Fn, _Args...>(typename _ResultOf::__invoke_type{})>
+ { };
+
+ // __is_nothrow_callable (std::is_nothrow_callable for C++11)
+
+ template<typename, typename _Ret = void>
+ struct __is_nothrow_callable; // not defined
+
+ template<typename _Fn, typename... _Args, typename _Ret>
+ struct __is_nothrow_callable<_Fn(_Args...), _Ret>
+ : __and_<__is_callable<_Fn(_Args...), _Ret>,
+ __call_is_nothrow<result_of<_Fn(_Args...)>, _Fn, _Args...>>::type
+ { };
+
+#if __cplusplus > 201402L
+# define __cpp_lib_is_callable 201603
+
+ /// std::is_callable
+ template<typename, typename _Ret = void>
+ struct is_callable; // not defined
+
+ template<typename _Fn, typename... _ArgTypes, typename _Ret>
+ struct is_callable<_Fn(_ArgTypes...), _Ret>
+ : __is_callable<_Fn(_ArgTypes...), _Ret>::type
+ { };
+
+ /// std::is_nothrow_callable
+ template<typename, typename _Ret = void>
+ struct is_nothrow_callable; // not defined
+
+ template<typename _Fn, typename... _ArgTypes, typename _Ret>
+ struct is_nothrow_callable<_Fn(_ArgTypes...), _Ret>
+ : __is_nothrow_callable<_Fn(_ArgTypes...), _Ret>::type
+ { };
+
+ /// std::is_callable_v
+ template<typename T, typename _Ret = void>
+ constexpr bool is_callable_v = is_callable<T, _Ret>::value;
+
+ /// std::is_nothrow_callable_v
+ template<typename T, typename _Ret = void>
+ constexpr bool is_nothrow_callable_v = is_nothrow_callable<T, _Ret>::value;
+#endif // C++17
+
+
+#if __cplusplus > 201402L
+# define __cpp_lib_type_trait_variable_templates 201510L
+template <typename _Tp>
+ constexpr bool is_void_v = is_void<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_integral_v = is_integral<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_floating_point_v = is_floating_point<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_array_v = is_array<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_pointer_v = is_pointer<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_member_object_pointer_v =
+ is_member_object_pointer<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_member_function_pointer_v =
+ is_member_function_pointer<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_enum_v = is_enum<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_union_v = is_union<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_class_v = is_class<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_function_v = is_function<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_reference_v = is_reference<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_object_v = is_object<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_scalar_v = is_scalar<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_compound_v = is_compound<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_const_v = is_const<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_volatile_v = is_volatile<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivial_v = is_trivial<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_copyable_v = is_trivially_copyable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_pod_v = is_pod<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_literal_type_v = is_literal_type<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_empty_v = is_empty<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_abstract_v = is_abstract<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_final_v = is_final<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_signed_v = is_signed<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_unsigned_v = is_unsigned<_Tp>::value;
+template <typename _Tp, typename... _Args>
+ constexpr bool is_constructible_v = is_constructible<_Tp, _Args...>::value;
+template <typename _Tp>
+ constexpr bool is_default_constructible_v =
+ is_default_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value;
+template <typename _Tp, typename _Up>
+ constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value;
+template <typename _Tp>
+ constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_destructible_v = is_destructible<_Tp>::value;
+template <typename _Tp, typename... _Args>
+ constexpr bool is_trivially_constructible_v =
+ is_trivially_constructible<_Tp, _Args...>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_default_constructible_v =
+ is_trivially_default_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_copy_constructible_v =
+ is_trivially_copy_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_move_constructible_v =
+ is_trivially_move_constructible<_Tp>::value;
+template <typename _Tp, typename _Up>
+ constexpr bool is_trivially_assignable_v =
+ is_trivially_assignable<_Tp, _Up>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_copy_assignable_v =
+ is_trivially_copy_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_move_assignable_v =
+ is_trivially_move_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_trivially_destructible_v =
+ is_trivially_destructible<_Tp>::value;
+template <typename _Tp, typename... _Args>
+ constexpr bool is_nothrow_constructible_v =
+ is_nothrow_constructible<_Tp, _Args...>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_default_constructible_v =
+ is_nothrow_default_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_copy_constructible_v =
+ is_nothrow_copy_constructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_move_constructible_v =
+ is_nothrow_move_constructible<_Tp>::value;
+template <typename _Tp, typename _Up>
+ constexpr bool is_nothrow_assignable_v =
+ is_nothrow_assignable<_Tp, _Up>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_copy_assignable_v =
+ is_nothrow_copy_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_move_assignable_v =
+ is_nothrow_move_assignable<_Tp>::value;
+template <typename _Tp>
+ constexpr bool is_nothrow_destructible_v =
+ is_nothrow_destructible<_Tp>::value;
+template <typename _Tp>
+ constexpr bool has_virtual_destructor_v =
+ has_virtual_destructor<_Tp>::value;
+template <typename _Tp>
+ constexpr size_t alignment_of_v = alignment_of<_Tp>::value;
+template <typename _Tp>
+ constexpr size_t rank_v = rank<_Tp>::value;
+template <typename _Tp, unsigned _Idx = 0>
+ constexpr size_t extent_v = extent<_Tp, _Idx>::value;
+template <typename _Tp, typename _Up>
+ constexpr bool is_same_v = is_same<_Tp, _Up>::value;
+template <typename _Base, typename _Derived>
+ constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value;
+template <typename _From, typename _To>
+ constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
+#endif // C++17
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index 106ba4dfcf3..0c0364430b6 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -356,6 +356,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template <size_t _Idx>
in_place_tag in_place(__in_place_index<_Idx>*) {terminate();}
+#define __cpp_lib_as_const 201510
+ template<typename _Tp>
+ constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; }
+
+ template<typename _Tp>
+ void as_const(const _Tp&&) = delete;
+
#endif
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/tr1/bessel_function.tcc b/libstdc++-v3/include/tr1/bessel_function.tcc
index a2655d88b99..692f6da34f5 100644
--- a/libstdc++-v3/include/tr1/bessel_function.tcc
+++ b/libstdc++-v3/include/tr1/bessel_function.tcc
@@ -50,7 +50,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -630,7 +630,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/beta_function.tcc b/libstdc++-v3/include/tr1/beta_function.tcc
index 76f5093cbec..34b22d4ea21 100644
--- a/libstdc++-v3/include/tr1/beta_function.tcc
+++ b/libstdc++-v3/include/tr1/beta_function.tcc
@@ -48,7 +48,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -199,7 +199,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/cmath b/libstdc++-v3/include/tr1/cmath
index 48466a02854..7f77a2b01ad 100644
--- a/libstdc++-v3/include/tr1/cmath
+++ b/libstdc++-v3/include/tr1/cmath
@@ -1141,7 +1141,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
}
}
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
namespace std _GLIBCXX_VISIBILITY(default)
{
@@ -1254,7 +1254,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
}
}
-#else // ! __STDCPP_WANT_MATH_SPEC_FUNCS__
+#else // ! _GLIBCXX_USE_STD_SPEC_FUNCS
#include <bits/stl_algobase.h>
#include <limits>
@@ -1683,6 +1683,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
}
}
-#endif // __STDCPP_WANT_MATH_SPEC_FUNCS__
+#endif // _GLIBCXX_USE_STD_SPEC_FUNCS
#endif // _GLIBCXX_TR1_CMATH
diff --git a/libstdc++-v3/include/tr1/ell_integral.tcc b/libstdc++-v3/include/tr1/ell_integral.tcc
index 9a60ba3b00a..c7bfe16fb78 100644
--- a/libstdc++-v3/include/tr1/ell_integral.tcc
+++ b/libstdc++-v3/include/tr1/ell_integral.tcc
@@ -44,7 +44,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
{
@@ -748,7 +748,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/exp_integral.tcc b/libstdc++-v3/include/tr1/exp_integral.tcc
index ee7cdad6d91..f5b30941ee4 100644
--- a/libstdc++-v3/include/tr1/exp_integral.tcc
+++ b/libstdc++-v3/include/tr1/exp_integral.tcc
@@ -49,7 +49,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
{
@@ -525,7 +525,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/gamma.tcc b/libstdc++-v3/include/tr1/gamma.tcc
index 2c84b7521a3..3eb78455823 100644
--- a/libstdc++-v3/include/tr1/gamma.tcc
+++ b/libstdc++-v3/include/tr1/gamma.tcc
@@ -50,7 +50,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -470,7 +470,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
} // namespace std
diff --git a/libstdc++-v3/include/tr1/hypergeometric.tcc b/libstdc++-v3/include/tr1/hypergeometric.tcc
index 77fb78d058b..1c46f4ac2b4 100644
--- a/libstdc++-v3/include/tr1/hypergeometric.tcc
+++ b/libstdc++-v3/include/tr1/hypergeometric.tcc
@@ -43,7 +43,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -777,7 +777,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/legendre_function.tcc b/libstdc++-v3/include/tr1/legendre_function.tcc
index d5f20223b31..1980ebbf0c1 100644
--- a/libstdc++-v3/include/tr1/legendre_function.tcc
+++ b/libstdc++-v3/include/tr1/legendre_function.tcc
@@ -48,7 +48,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -305,7 +305,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/modified_bessel_func.tcc b/libstdc++-v3/include/tr1/modified_bessel_func.tcc
index 0162727b34c..5278fb2778e 100644
--- a/libstdc++-v3/include/tr1/modified_bessel_func.tcc
+++ b/libstdc++-v3/include/tr1/modified_bessel_func.tcc
@@ -50,7 +50,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
{
@@ -433,7 +433,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/poly_hermite.tcc b/libstdc++-v3/include/tr1/poly_hermite.tcc
index a5a6bcbd8d0..7123e11e7f1 100644
--- a/libstdc++-v3/include/tr1/poly_hermite.tcc
+++ b/libstdc++-v3/include/tr1/poly_hermite.tcc
@@ -41,7 +41,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
{
@@ -123,7 +123,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/poly_laguerre.tcc b/libstdc++-v3/include/tr1/poly_laguerre.tcc
index 6c757e40c11..a51d1dcc9c1 100644
--- a/libstdc++-v3/include/tr1/poly_laguerre.tcc
+++ b/libstdc++-v3/include/tr1/poly_laguerre.tcc
@@ -43,7 +43,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -321,7 +321,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/riemann_zeta.tcc b/libstdc++-v3/include/tr1/riemann_zeta.tcc
index f411b20e611..714bf9f1450 100644
--- a/libstdc++-v3/include/tr1/riemann_zeta.tcc
+++ b/libstdc++-v3/include/tr1/riemann_zeta.tcc
@@ -46,7 +46,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
# define _GLIBCXX_MATH_NS ::std
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
@@ -435,7 +435,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
#undef _GLIBCXX_MATH_NS
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/include/tr1/special_function_util.h b/libstdc++-v3/include/tr1/special_function_util.h
index 2b8cf377e4e..93f09cea805 100644
--- a/libstdc++-v3/include/tr1/special_function_util.h
+++ b/libstdc++-v3/include/tr1/special_function_util.h
@@ -38,7 +38,7 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#if __STDCPP_WANT_MATH_SPEC_FUNCS__
+#if _GLIBCXX_USE_STD_SPEC_FUNCS
#elif defined(_GLIBCXX_TR1_CMATH)
namespace tr1
{
@@ -133,7 +133,7 @@ namespace tr1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace __detail
-#if ! __STDCPP_WANT_MATH_SPEC_FUNCS__ && defined(_GLIBCXX_TR1_CMATH)
+#if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH)
} // namespace tr1
#endif
}
diff --git a/libstdc++-v3/scripts/testsuite_flags.in b/libstdc++-v3/scripts/testsuite_flags.in
index ee5916787b1..ea1a4643cb8 100755
--- a/libstdc++-v3/scripts/testsuite_flags.in
+++ b/libstdc++-v3/scripts/testsuite_flags.in
@@ -56,7 +56,7 @@ case ${query} in
echo ${CC}
;;
--cxxflags)
- CXXFLAGS_default="-D_GLIBCXX_ASSERT -fmessage-length=0"
+ CXXFLAGS_default="-D_GLIBCXX_ASSERT -fmessage-length=0 -fno-show-column"
CXXFLAGS_config="@SECTION_FLAGS@ @EXTRA_CXX_FLAGS@"
echo ${CXXFLAGS_default} ${CXXFLAGS_config}
;;
diff --git a/libstdc++-v3/testsuite/17_intro/freestanding.cc b/libstdc++-v3/testsuite/17_intro/freestanding.cc
index d0674dd19c4..98e1d6c67d3 100644
--- a/libstdc++-v3/testsuite/17_intro/freestanding.cc
+++ b/libstdc++-v3/testsuite/17_intro/freestanding.cc
@@ -1,4 +1,4 @@
-// { dg-options "-x c -std=gnu++11 -lsupc++ -fvtable-verify=none" }
+// { dg-options "-std=gnu++11 -lsupc++ -fvtable-verify=none" }
// Copyright (C) 2010-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
index 26a0e420b11..40bced7ca09 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
@@ -1,6 +1,6 @@
// FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-options "-std=gnu++11" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-do compile }
// Copyright (C) 2007-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
index 69869b7aff9..59f77486dee 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
@@ -1,6 +1,6 @@
// FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-options "-std=gnu++11" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-do compile }
// Copyright (C) 2007-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
index 2ab83c7827e..cd74e7b98e2 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
@@ -1,6 +1,6 @@
// FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-options "-std=gnu++14" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-do compile }
// Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
index 7303143d6fd..38057238b84 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
@@ -1,6 +1,6 @@
// FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-options "-std=gnu++14" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
// { dg-do compile }
// Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c b/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
index fd1a76cbd31..6e5138b27d9 100644
--- a/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
+++ b/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
@@ -1,4 +1,5 @@
// { dg-require-sharedlib "" }
+// { dg-skip-if "invalid options for C" { *-*-* } { "-std=c++??" "-std=gnu++??" } }
// { dg-options "-g -O2 -pthread -ldl -x c -fvtable-verify=none -Wno-pedantic" { target *-*-linux* *-*-gnu* *-*-solaris2.1[2-9]* } }
// Copyright (C) 2005-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
index d317a3f8cbe..7577b59ea2b 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
@@ -21,7 +21,7 @@
#include <limits>
// libstdc++/40856
-#ifdef _GLIBCXX_USE_INT128
+#if defined _GLIBCXX_USE_INT128 && ! defined __STRICT_ANSI__
static_assert(std::numeric_limits<__int128>::is_specialized == true, "");
static_assert(std::numeric_limits<unsigned __int128>::is_specialized == true,
"");
diff --git a/libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc b/libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
new file mode 100644
index 00000000000..629cae1fcf8
--- /dev/null
+++ b/libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
@@ -0,0 +1,39 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <system_error>
+#include <future>
+using namespace std;
+
+// These tests are rather simple, the front-end tests already test
+// variable templates, and the library tests for the underlying
+// traits are more elaborate. These are just simple sanity tests.
+
+static_assert(is_error_code_enum_v<future_errc>
+ && is_error_code_enum<future_errc>::value, "");
+
+static_assert(!is_error_code_enum_v<int>
+ && !is_error_code_enum<int>::value, "");
+
+static_assert(is_error_condition_enum_v<errc>
+ && is_error_condition_enum<errc>::value, "");
+
+static_assert(!is_error_condition_enum_v<int>
+ && !is_error_condition_enum<int>::value, "");
diff --git a/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc b/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
index 3088d7c361a..6b7d514202f 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
@@ -25,9 +25,7 @@
int main()
{
std::error_code e;
- int i = e;
+ int i = e; // { dg-error "cannot convert" }
return i;
}
-
-// { dg-error "cannot convert" "" { target *-*-* } 28 }
diff --git a/libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc b/libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
index 29115990544..ce45d7a1168 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
@@ -24,9 +24,7 @@
int test01()
{
std::error_condition e;
- int i = e;
+ int i = e; // { dg-error "cannot convert" }
return i;
}
-
-// { dg-error "cannot convert" "" { target *-*-* } 27 }
diff --git a/libstdc++-v3/testsuite/20_util/as_const/1.cc b/libstdc++-v3/testsuite/20_util/as_const/1.cc
new file mode 100644
index 00000000000..2f257b46ff0
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/as_const/1.cc
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <utility>
+
+#if __cpp_lib_as_const != 201510
+# error "__cpp_lib_as_const != 201510"
+#endif
+
+int i;
+constexpr auto& ci = std::as_const(i);
+static_assert( &i == &ci );
+static_assert( std::is_same_v<decltype(std::as_const(i)), const int&> );
diff --git a/libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc b/libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
new file mode 100644
index 00000000000..3fe9e1839da
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <utility>
+
+void test01()
+{
+ int i = 0;
+ std::as_const(std::move(i)); // { dg-error "deleted function" }
+ std::as_const(0); // { dg-error "deleted function" }
+}
diff --git a/libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc b/libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
new file mode 100644
index 00000000000..0499d520591
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
@@ -0,0 +1,37 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <functional>
+
+struct X
+{
+ int operator()() const { return 0; }
+ int operator()() volatile { return 1; }
+ int operator()() const volatile { return 2; }
+ void operator()() { };
+};
+
+static_assert( std::is_placeholder<decltype(std::placeholders::_1)>::value
+ == std::is_placeholder_v<decltype(std::placeholders::_1)>);
+
+const auto b0 = std::bind(X());
+static_assert( std::is_bind_expression<decltype(b0)>::value
+ == std::is_bind_expression_v<decltype(b0)>);
+
diff --git a/libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
index 5729cecec4c..c00db4155a5 100644
--- a/libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
@@ -1,4 +1,4 @@
-// { dg-options "-std=gnu++11" }
+// { dg-do compile { target c++11 } }
// 2007-05-02 Benjamin Kosnik <bkoz@redhat.com>
//
@@ -20,22 +20,12 @@
// <http://www.gnu.org/licenses/>.
#include <type_traits>
-#include <testsuite_hooks.h>
-void test01()
-{
- bool test __attribute__((unused)) = true;
- using std::conditional;
+using std::conditional;
+using std::is_same;
- typedef conditional<true, char, int>::type test1_type;
- VERIFY( (std::is_same<test1_type, char>::value) );
+typedef conditional<true, char, int>::type test1_type;
+static_assert( is_same<test1_type, char>::value, "conditional<true, ...>" );
- typedef conditional<false, char, int>::type test2_type;
- VERIFY( (std::is_same<test2_type, int>::value) );
-}
-
-int main()
-{
- test01();
- return 0;
-}
+typedef conditional<false, char, int>::type test2_type;
+static_assert( is_same<test2_type, int>::value, "conditional<false, ...>" );
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 72246b858ff..1c05f61b064 100644
--- a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
@@ -19,7 +19,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-error "static assertion failed" "" { target *-*-* } 2259 }
+// { dg-error "static assertion failed" "" { target *-*-* } 2255 }
#include <utility>
diff --git a/libstdc++-v3/testsuite/20_util/duration/literals/range.cc b/libstdc++-v3/testsuite/20_util/duration/literals/range.cc
index dbb4af199db..940236ce646 100644
--- a/libstdc++-v3/testsuite/20_util/duration/literals/range.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/literals/range.cc
@@ -27,5 +27,5 @@ test01()
// std::numeric_limits<int64_t>::max() == 9223372036854775807;
auto h = 9223372036854775808h;
- // { dg-error "cannot be represented" "" { target *-*-* } 796 }
+ // { dg-error "cannot be represented" "" { target *-*-* } 889 }
}
diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
new file mode 100644
index 00000000000..0148239f5e0
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
@@ -0,0 +1,33 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <chrono>
+
+using namespace std::chrono;
+
+// These tests are rather simple, the front-end tests already test
+// variable templates, and the library tests for the underlying
+// traits are more elaborate. These are just simple sanity tests.
+
+static_assert(!treat_as_floating_point_v<int>
+ && !treat_as_floating_point<int>::value, "");
+
+static_assert(treat_as_floating_point_v<double>
+ && treat_as_floating_point<double>::value, "");
diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
index 14814b4d3fd..db9a4f5bc02 100644
--- a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
@@ -31,5 +31,5 @@ void test01()
test_type d;
}
-// { dg-error "rep cannot be a duration" "" { target *-*-* } 246 }
+// { dg-error "rep cannot be a duration" "" { target *-*-* } 308 }
// { dg-error "required from here" "" { target *-*-* } 31 }
diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
index a71a8895ab9..e562134ffcb 100644
--- a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
@@ -32,5 +32,5 @@ void test01()
test_type d; // { dg-error "required from here" }
}
-// { dg-error "must be a specialization of ratio" "" { target *-*-* } 247 }
+// { dg-error "must be a specialization of ratio" "" { target *-*-* } 309 }
// { dg-prune-output "not a member" }
diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
index 016dc81678e..a71d5b12039 100644
--- a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
@@ -30,8 +30,7 @@ void test01()
typedef int rep_type;
typedef std::ratio<-1> period_type;
typedef std::chrono::duration<rep_type, period_type> test_type;
- test_type d;
+ test_type d; // { dg-error "required from here" }
}
-// { dg-error "period must be positive" "" { target *-*-* } 249 }
-// { dg-error "required from here" "" { target *-*-* } 33 }
+// { dg-error "period must be positive" "" { target *-*-* } 311 }
diff --git a/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc b/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
new file mode 100644
index 00000000000..a7533230273
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
@@ -0,0 +1,57 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <chrono>
+
+#if __cpp_lib_chrono < 201510
+# error "__cpp_lib_chrono < 201510"
+#endif
+
+using namespace std::chrono_literals;
+using std::chrono::seconds;
+
+static_assert( std::chrono::floor<seconds>(1000ms) == 1s );
+static_assert( std::chrono::floor<seconds>(1001ms) == 1s );
+static_assert( std::chrono::floor<seconds>(1500ms) == 1s );
+static_assert( std::chrono::floor<seconds>(1999ms) == 1s );
+static_assert( std::chrono::floor<seconds>(2000ms) == 2s );
+static_assert( std::chrono::floor<seconds>(2001ms) == 2s );
+static_assert( std::chrono::floor<seconds>(2500ms) == 2s );
+
+static_assert( std::chrono::ceil<seconds>(1000ms) == 1s );
+static_assert( std::chrono::ceil<seconds>(1001ms) == 2s );
+static_assert( std::chrono::ceil<seconds>(1500ms) == 2s );
+static_assert( std::chrono::ceil<seconds>(1999ms) == 2s );
+static_assert( std::chrono::ceil<seconds>(2000ms) == 2s );
+static_assert( std::chrono::ceil<seconds>(2001ms) == 3s );
+static_assert( std::chrono::ceil<seconds>(2500ms) == 3s );
+
+static_assert( std::chrono::round<seconds>(1000ms) == 1s );
+static_assert( std::chrono::round<seconds>(1001ms) == 1s );
+static_assert( std::chrono::round<seconds>(1499ms) == 1s );
+static_assert( std::chrono::round<seconds>(1500ms) == 2s );
+static_assert( std::chrono::round<seconds>(1999ms) == 2s );
+static_assert( std::chrono::round<seconds>(2000ms) == 2s );
+static_assert( std::chrono::round<seconds>(2001ms) == 2s );
+static_assert( std::chrono::round<seconds>(2500ms) == 2s );
+static_assert( std::chrono::round<seconds>(2501ms) == 3s );
+
+static_assert( std::chrono::abs(100ms) == 100ms );
+static_assert( std::chrono::abs(-100ms) == 100ms );
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
index 4ce23bc8479..3209f87026a 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++11" }
+// { dg-do run { target c++11 } }
#include <memory>
#include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/forward/1_neg.cc b/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
index d2f3477b80a..97851f2df67 100644
--- a/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
@@ -27,8 +27,9 @@ template<class T, class A1, class A2>
std::shared_ptr<T>
factory(A1&& a1, A2&& a2)
{
- return std::shared_ptr<T>(new T(std::forward<A1>(a1),
- std::forward<A2>(a2))); // { dg-error "rvalue" }
+ return std::shared_ptr<T>(
+ new T(std::forward<A1>(a1), // { dg-error "rvalue" }
+ std::forward<A2>(a2)));
}
struct A
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/72820.cc b/libstdc++-v3/testsuite/20_util/function/cons/72820.cc
new file mode 100644
index 00000000000..1b17aaebaad
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/function/cons/72820.cc
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 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-do compile { target c++11 } }
+
+#include <functional>
+
+struct foo {
+ void operator()() { }
+ static void* operator new(std::size_t, void* p);
+};
+
+std::function<void()> f = foo{};
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc b/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
new file mode 100644
index 00000000000..23705796557
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 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-do compile { target c++11 } }
+
+#include <functional>
+
+struct F {
+ void operator()() && { }
+ int operator()() & { return 0; }
+};
+
+int main() {
+ F f;
+ std::function<int()> ff{f};
+ return ff();
+}
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 2a519eaf64d..6aaae222e52 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
@@ -21,7 +21,7 @@
#include <functional>
struct A {
- void foo(int n) { }
+ void foo(int) { }
};
void
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
new file mode 100644
index 00000000000..d7e57668779
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
@@ -0,0 +1,58 @@
+// Copyright (C) 2015-2016 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-do compile { target c++11 } }
+
+#include <functional>
+
+struct A {
+ void foo(int) { }
+};
+
+void
+test01()
+{
+ // PR libstdc++/59768
+ A a;
+ auto ref = std::ref(a);
+ std::__invoke(&A::foo, ref, 100); // lvalue
+ std::__invoke(&A::foo, std::move(ref), 100); // rvalue
+ const auto refc = std::ref(a);
+ std::__invoke(&A::foo, refc, 100); // const lvalue
+ std::__invoke(&A::foo, std::move(refc), 100); // const rvalue
+}
+
+struct B {
+ int bar = 0;
+};
+
+void
+test02()
+{
+ B b;
+ // Invocation through a reference_wrapper means the object is an lvalue.
+
+ int* ptr [[gnu::unused]];
+ auto ref = std::ref(b);
+ ptr = &std::__invoke(&B::bar, ref);
+ ptr = &std::__invoke(&B::bar, std::move(ref));
+
+ const int* cptr [[gnu::unused]];
+ auto cref = std::cref(b);
+ cptr = &std::__invoke(&B::bar, cref);
+ cptr = &std::__invoke(&B::bar, std::move(cref));
+}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc
deleted file mode 100644
index 61e54c12bb6..00000000000
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/typedefs.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// 2010-06-08 Paolo Carlini <paolo.carlini@oracle.com>
-//
-// Copyright (C) 2010-2016 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/>.
-
-//
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-// { dg-do compile }
-
-void test01()
-{
- // Check for required typedefs
- typedef std::has_trivial_copy_assign<int> test_type;
- typedef test_type::value_type value_type;
- typedef test_type::type type;
- typedef test_type::type::value_type type_value_type;
- typedef test_type::type::type type_type;
-}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/value.cc b/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/value.cc
deleted file mode 100644
index 73a22584acb..00000000000
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/value.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// { dg-do compile }
-
-// 2010-06-08 Paolo Carlini <paolo.carlini@oracle.com>
-//
-// Copyright (C) 2010-2016 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/>.
-
-#include <type_traits>
-#include <testsuite_tr1.h>
-
-void test01()
-{
- using std::has_trivial_copy_assign;
- using namespace __gnu_test;
-
- static_assert(test_property<has_trivial_copy_assign, int>(true), "");
- static_assert(test_property<has_trivial_copy_assign, float>(true), "");
- static_assert(test_property<has_trivial_copy_assign, EnumType>(true), "");
- static_assert(test_property<has_trivial_copy_assign, int*>(true), "");
- static_assert(test_property<has_trivial_copy_assign, int(*)(int)>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- int (ClassType::*)>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- int (ClassType::*) (int)>(true), "");
- static_assert(test_property<has_trivial_copy_assign, int[2]>(true), "");
- static_assert(test_property<has_trivial_copy_assign, float[][3]>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- EnumType[2][3][4]>(true), "");
- static_assert(test_property<has_trivial_copy_assign, int*[3]>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- int(*[][2])(int)>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- int (ClassType::*[2][3])>(true), "");
- static_assert(test_property<has_trivial_copy_assign,
- int (ClassType::*[][2][3]) (int)>(true), "");
-
- // Negative tests.
- static_assert(test_property<has_trivial_copy_assign, void>(false), "");
-}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/value.cc b/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/value.cc
deleted file mode 100644
index 5f7456e0b5a..00000000000
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/value.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// { dg-do compile }
-
-// 2004-12-30 Paolo Carlini <pcarlini@suse.de>
-//
-// Copyright (C) 2004-2016 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/>.
-
-// 4.5.3 Type properties
-
-#include <type_traits>
-#include <testsuite_tr1.h>
-
-void test01()
-{
- using std::has_trivial_copy_constructor;
- using namespace __gnu_test;
-
- // Positive tests.
- static_assert(test_category<has_trivial_copy_constructor, int>(true), "");
- static_assert(test_category<has_trivial_copy_constructor, float>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- EnumType>(true), "");
- static_assert(test_category<has_trivial_copy_constructor, int*>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int(*)(int)>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int (ClassType::*)>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int (ClassType::*) (int)>(true), "");
- static_assert(test_category<has_trivial_copy_constructor, int[2]>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- float[][3]>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- EnumType[2][3][4]>(true), "");
- static_assert(test_category<has_trivial_copy_constructor, int*[3]>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int(*[][2])(int)>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int (ClassType::*[2][3])>(true), "");
- static_assert(test_category<has_trivial_copy_constructor,
- int (ClassType::*[][2][3]) (int)>(true), "");
-
- // Negative tests.
- static_assert(test_category<has_trivial_copy_constructor, void>(false), "");
-}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/typedefs.cc
deleted file mode 100644
index 80f0b6cfb57..00000000000
--- a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/typedefs.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// 2004-12-26 Paolo Carlini <pcarlini@suse.de>
-//
-// Copyright (C) 2004-2016 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/>.
-
-//
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-// { dg-do compile }
-
-void test01()
-{
- // Check for required typedefs
- typedef std::has_trivial_default_constructor<int> test_type;
- typedef test_type::value_type value_type;
- typedef test_type::type type;
- typedef test_type::type::value_type type_value_type;
- typedef test_type::type::type type_type;
-}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/value.cc b/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/value.cc
deleted file mode 100644
index dae437b3639..00000000000
--- a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/value.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// { dg-do compile }
-
-// 2004-12-26 Paolo Carlini <pcarlini@suse.de>
-//
-// Copyright (C) 2004-2016 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/>.
-
-// 4.5.3 Type properties
-
-#include <type_traits>
-#include <testsuite_tr1.h>
-
-void test01()
-{
- using std::has_trivial_default_constructor;
- using namespace __gnu_test;
-
- // Positive tests.
- static_assert(test_category<has_trivial_default_constructor, int>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- float>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- EnumType>(true), "");
- static_assert(test_category<has_trivial_default_constructor, int*>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int(*)(int)>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int (ClassType::*)>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int (ClassType::*) (int)>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int[2]>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- float[][3]>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- EnumType[2][3][4]>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int*[3]>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int(*[][2])(int)>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int (ClassType::*[2][3])>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- int (ClassType::*[][2][3]) (int)>(true), "");
- static_assert(test_category<has_trivial_default_constructor,
- ClassType>(true), "");
-
- // Negative tests.
- static_assert(test_category<has_trivial_default_constructor,
- void>(false), "");
-}
diff --git a/libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc b/libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
index 0696fad436d..1c65a4b4aa1 100644
--- a/libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
@@ -22,15 +22,12 @@
namespace gnu
{
- // C++0x changes from TR1.
- using std::has_trivial_constructor;
- using std::has_nothrow_constructor;
- using std::has_trivial_copy;
- using std::has_nothrow_copy;
+ // C++11 changes from TR1.
+ using std::has_trivial_constructor; // { dg-error "has not been declared" }
+ using std::has_trivial_default_constructor; // { dg-error "has not been declared" }
+ using std::has_nothrow_constructor; // { dg-error "has not been declared" }
+ using std::has_trivial_copy; // { dg-error "has not been declared" }
+ using std::has_trivial_copy_constructor; // { dg-error "has not been declared" }
+ using std::has_trivial_copy_assign; // { dg-error "has not been declared" }
+ using std::has_nothrow_copy; // { dg-error "has not been declared" }
}
-
-// { dg-error "has not been declared" "" { target *-*-* } 26 }
-// { dg-error "has not been declared" "" { target *-*-* } 27 }
-// { dg-error "has not been declared" "" { target *-*-* } 28 }
-// { dg-error "has not been declared" "" { target *-*-* } 29 }
-
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation.cc
index 0a5654c9bf4..0ce5bfe72a8 100644
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation.cc
@@ -1,8 +1,7 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
+// { dg-options "-std=gnu++17" }
// { dg-do compile }
-// 2007-04-30 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2007-2016 Free Software Foundation, Inc.
+// Copyright (C) 2016 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
@@ -19,13 +18,12 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-
// NB: This file is for testing type_traits with NO OTHER INCLUDES.
#include <type_traits>
namespace std
{
- typedef short test_type;
- template struct has_trivial_copy_constructor<test_type>;
+ struct test_type { };
+ template struct is_callable<test_type(), int>;
}
diff --git a/libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation_ext.cc b/libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation_ext.cc
new file mode 100644
index 00000000000..a3d3f496de8
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation_ext.cc
@@ -0,0 +1,28 @@
+// { dg-do compile { target c++11 } }
+
+// Copyright (C) 2016 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/>.
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+namespace std
+{
+ struct test_type { };
+ template struct __is_callable<test_type(), int>;
+}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs.cc
index cd632136258..9f21dfb90ae 100644
--- a/libstdc++-v3/testsuite/20_util/has_trivial_default_constructor/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs.cc
@@ -1,31 +1,30 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
+// { dg-options "-std=gnu++17" }
// { dg-do compile }
-// 2007-04-30 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2007-2016 Free Software Foundation, Inc.
+// Copyright (C) 2016 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/>.
-
// NB: This file is for testing type_traits with NO OTHER INCLUDES.
#include <type_traits>
-namespace std
+void test01()
{
- typedef short test_type;
- template struct has_trivial_default_constructor<test_type>;
+ // Check for required typedefs
+ typedef std::is_callable<int(), void> test_type;
+ static_assert( std::is_base_of_v<std::false_type, test_type> );
}
diff --git a/libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs_ext.cc b/libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs_ext.cc
new file mode 100644
index 00000000000..e582be0674a
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs_ext.cc
@@ -0,0 +1,29 @@
+// { dg-do compile { target c++11 } }
+
+// Copyright (C) 2016 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/>.
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+void test01()
+{
+ // Check for required typedefs
+ typedef std::__is_callable<int(), void> test_type;
+ static_assert( std::is_base_of<std::false_type, test_type>::value, "" );
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_callable/value.cc b/libstdc++-v3/testsuite/20_util/is_callable/value.cc
new file mode 100644
index 00000000000..aafd55f06be
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_callable/value.cc
@@ -0,0 +1,191 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <type_traits>
+
+#ifndef IS_CALLABLE_DEFINED
+template<typename T, typename R = void>
+ constexpr bool is_callable()
+ {
+ static_assert(std::is_callable<T, R>::value == std::is_callable_v<T, R>);
+ return std::is_callable_v<T, R>;
+ }
+#endif
+
+void test01()
+{
+ using func_type_v0 = void(*)();
+
+ static_assert( is_callable< func_type_v0() >(), "");
+ static_assert( is_callable< func_type_v0(), void >(), "");
+ static_assert( ! is_callable< func_type_v0(), void* >(), "");
+ static_assert( ! is_callable< func_type_v0(), int >(), "");
+
+ static_assert( ! is_callable< func_type_v0(int) >(), "");
+ static_assert( ! is_callable< func_type_v0(int), void >(), "");
+ static_assert( ! is_callable< func_type_v0(int), void* >(), "");
+ static_assert( ! is_callable< func_type_v0(int), int >(), "");
+
+ using func_type_i0 = int(*)();
+
+ static_assert( is_callable< func_type_i0() >(), "");
+ static_assert( is_callable< func_type_i0(), void >(), "");
+ static_assert( is_callable< func_type_i0(), int >(), "");
+ static_assert( ! is_callable< func_type_i0(), int& >(), "");
+ static_assert( is_callable< func_type_i0(), long >(), "");
+
+ static_assert( ! is_callable< func_type_i0(int) >(), "");
+ static_assert( ! is_callable< func_type_i0(int), void >(), "");
+ static_assert( ! is_callable< func_type_i0(int), int >(), "");
+ static_assert( ! is_callable< func_type_i0(int), int& >(), "");
+ static_assert( ! is_callable< func_type_i0(int), long >(), "");
+
+ using func_type_l0 = int&(*)();
+
+ static_assert( is_callable< func_type_l0() >(), "");
+ static_assert( is_callable< func_type_l0(), void >(), "");
+ static_assert( is_callable< func_type_l0(), int >(), "");
+ static_assert( is_callable< func_type_l0(), int& >(), "");
+ static_assert( ! is_callable< func_type_l0(), int&& >(), "");
+ static_assert( is_callable< func_type_l0(), long >(), "");
+ static_assert( ! is_callable< func_type_l0(), long& >(), "");
+
+ static_assert( ! is_callable< func_type_l0(int) >(), "");
+ static_assert( ! is_callable< func_type_l0(int), void >(), "");
+ static_assert( ! is_callable< func_type_l0(int), int >(), "");
+ static_assert( ! is_callable< func_type_l0(int), int& >(), "");
+ static_assert( ! is_callable< func_type_l0(int), long >(), "");
+
+ using func_type_ii = int(*)(int);
+
+ static_assert( ! is_callable< func_type_ii() >(), "");
+ static_assert( ! is_callable< func_type_ii(), int >(), "");
+ static_assert( ! is_callable< func_type_ii(), int& >(), "");
+ static_assert( ! is_callable< func_type_ii(), long >(), "");
+
+ static_assert( is_callable< func_type_ii(int) >(), "");
+ static_assert( is_callable< func_type_ii(int), int >(), "");
+ static_assert( ! is_callable< func_type_ii(int), int& >(), "");
+ static_assert( is_callable< func_type_ii(int), long >(), "");
+
+ using func_type_il = int(*)(int&);
+
+ static_assert( ! is_callable< func_type_il() >(), "");
+
+ static_assert( ! is_callable< func_type_il(int) >(), "");
+ static_assert( ! is_callable< func_type_il(int), int >(), "");
+ static_assert( ! is_callable< func_type_il(int), int& >(), "");
+ static_assert( ! is_callable< func_type_il(int), long >(), "");
+
+ static_assert( is_callable< func_type_il(int&) >(), "");
+ static_assert( is_callable< func_type_il(int&), int >(), "");
+ static_assert( ! is_callable< func_type_il(int&), int& >(), "");
+ static_assert( is_callable< func_type_il(int&), long >(), "");
+
+ using func_type_ir = int(*)(int&&);
+
+ static_assert( ! is_callable< func_type_ir() >(), "");
+
+ static_assert( is_callable< func_type_ir(int) >(), "");
+ static_assert( is_callable< func_type_ir(int), int >(), "");
+ static_assert( ! is_callable< func_type_ir(int), int& >(), "");
+ static_assert( is_callable< func_type_ir(int), long >(), "");
+
+ static_assert( ! is_callable< func_type_ir(int&) >(), "");
+ static_assert( ! is_callable< func_type_ir(int&), int >(), "");
+ static_assert( ! is_callable< func_type_ir(int&), int& >(), "");
+ static_assert( ! is_callable< func_type_ir(int&), long >(), "");
+
+ struct X { };
+
+ using mem_type_i = int X::*;
+
+ static_assert( ! is_callable< mem_type_i() >(), "");
+
+ static_assert( ! is_callable< mem_type_i(int) >(), "");
+ static_assert( ! is_callable< mem_type_i(int), int >(), "");
+ static_assert( ! is_callable< mem_type_i(int), int& >(), "");
+ static_assert( ! is_callable< mem_type_i(int), long >(), "");
+
+ static_assert( ! is_callable< mem_type_i(int&) >(), "");
+ static_assert( ! is_callable< mem_type_i(int&), int >(), "");
+ static_assert( ! is_callable< mem_type_i(int&), int& >(), "");
+ static_assert( ! is_callable< mem_type_i(int&), long >(), "");
+
+ static_assert( is_callable< mem_type_i(X&) >(), "");
+ static_assert( is_callable< mem_type_i(X&), int >(), "");
+ static_assert( is_callable< mem_type_i(X&), int& >(), "");
+ static_assert( is_callable< mem_type_i(X&), long >(), "");
+
+ using memfun_type_i = int (X::*)();
+
+ static_assert( ! is_callable< memfun_type_i() >(), "");
+
+ static_assert( ! is_callable< memfun_type_i(int) >(), "");
+
+ static_assert( ! is_callable< memfun_type_i(int&) >(), "");
+
+ static_assert( is_callable< memfun_type_i(X&) >(), "");
+ static_assert( is_callable< memfun_type_i(X&), int >(), "");
+ static_assert( ! is_callable< memfun_type_i(X&), int& >(), "");
+ static_assert( is_callable< memfun_type_i(X&), long >(), "");
+ static_assert( is_callable< memfun_type_i(X*) >(), "");
+
+ static_assert( ! is_callable< memfun_type_i(const X&) >(), "");
+ static_assert( ! is_callable< memfun_type_i(const X&), int >(), "");
+ static_assert( ! is_callable< memfun_type_i(X&, int) >(), "");
+
+ using memfun_type_iic = int& (X::*)(int&) const;
+
+ static_assert( ! is_callable< memfun_type_iic() >(), "");
+ static_assert( ! is_callable< memfun_type_iic(int) >(), "");
+ static_assert( ! is_callable< memfun_type_iic(int&) >(), "");
+ static_assert( ! is_callable< memfun_type_iic(X&, int) >(), "");
+ static_assert( ! is_callable< memfun_type_iic(const X&, int) >(), "");
+ static_assert( ! is_callable< memfun_type_iic(const X&, int&, int) >(), "");
+
+ static_assert( is_callable< memfun_type_iic(const X&, int&) >(), "");
+ static_assert( is_callable< memfun_type_iic(const X&, int&), int >(), "");
+ static_assert( is_callable< memfun_type_iic(const X&, int&), int& >(), "");
+ static_assert( is_callable< memfun_type_iic(const X&, int&), long >(), "");
+ static_assert( ! is_callable< memfun_type_iic(const X&, int&), long& >(),"");
+ static_assert( is_callable< memfun_type_iic(const X*, int&) >(), "");
+
+ struct F {
+ int& operator()();
+ long& operator()() const;
+ short& operator()(int) &&;
+ char& operator()(int) const&;
+ private:
+ void operator()(int, int);
+ };
+ using CF = const F;
+
+ static_assert( is_callable< F(), int& >(), "");
+ static_assert( is_callable< F&(), int& >(), "");
+ static_assert( is_callable< CF(), long& >(), "");
+ static_assert( is_callable< CF&(), long& >(), "");
+ static_assert( is_callable< F(int), short& >(), "");
+ static_assert( is_callable< F&(int), char& >(), "");
+ static_assert( is_callable< CF(int), char& >(), "");
+ static_assert( is_callable< CF&(int), char& >(), "");
+
+ static_assert( ! is_callable< F(int, int) >(), "");
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_callable/value_ext.cc b/libstdc++-v3/testsuite/20_util/is_callable/value_ext.cc
new file mode 100644
index 00000000000..3884d6c517e
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_callable/value_ext.cc
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 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-do compile { target c++11 } }
+
+#include <type_traits>
+
+template<typename T, typename R = void>
+ constexpr bool is_callable() { return std::__is_callable<T, R>::value; }
+
+#define IS_CALLABLE_DEFINED
+#include "value.cc"
diff --git a/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc b/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
index 8ed73fcce2a..c2736fae3f7 100644
--- a/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
@@ -47,6 +47,7 @@ void test01()
static_assert(test_category<is_floating_point, double>(true), "");
static_assert(test_category<is_floating_point, long double>(true), "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_FLOAT128
static_assert(test_category<is_floating_point, __float128>(true), "");
@@ -57,6 +58,7 @@ void test01()
static_assert(test_category<is_floating_point,
unsigned __int128>(false), "");
#endif
+#endif
// Sanity check.
static_assert(test_category<is_floating_point, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/is_integral/value.cc b/libstdc++-v3/testsuite/20_util/is_integral/value.cc
index 7d1cb9e5444..56974dcd502 100644
--- a/libstdc++-v3/testsuite/20_util/is_integral/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_integral/value.cc
@@ -51,6 +51,7 @@ void test01()
static_assert(test_category<is_integral, double>(false), "");
static_assert(test_category<is_integral, long double>(false), "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
static_assert(test_category<is_integral, __int128>(true), "");
@@ -60,6 +61,7 @@ void test01()
#ifdef _GLIBCXX_USE_FLOAT128
static_assert(test_category<is_integral, __float128>(false), "");
#endif
+#endif
// Sanity check.
static_assert(test_category<is_integral, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation.cc
index 6393089c3aa..dbcdd9fd34c 100644
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_assign/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation.cc
@@ -1,8 +1,7 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
+// { dg-options "-std=gnu++17" }
// { dg-do compile }
-// 2010-06-08 Paolo Carlini <paolo.carlini@oracle.com>
-// Copyright (C) 2010-2016 Free Software Foundation, Inc.
+// Copyright (C) 2016 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
@@ -25,6 +24,6 @@
namespace std
{
- typedef short test_type;
- template struct has_trivial_copy_assign<test_type>;
+ struct test_type { };
+ template struct is_nothrow_callable<test_type(), int>;
}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation_ext.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation_ext.cc
new file mode 100644
index 00000000000..9e4f74f5d20
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation_ext.cc
@@ -0,0 +1,28 @@
+// { dg-do compile { target c++11 } }
+
+// Copyright (C) 2016 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/>.
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+namespace std
+{
+ struct test_type { };
+ template struct __is_nothrow_callable<test_type(), int>;
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc
new file mode 100644
index 00000000000..395eb156e12
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc
@@ -0,0 +1,30 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2016 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/>.
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+void test01()
+{
+ // Check for required typedefs
+ typedef std::is_nothrow_callable<int(), void> test_type;
+ static_assert( std::is_base_of_v<std::false_type, test_type> );
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc
new file mode 100644
index 00000000000..23df15ebd58
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc
@@ -0,0 +1,29 @@
+// { dg-do compile { target c++11 } }
+
+// Copyright (C) 2016 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/>.
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+void test01()
+{
+ // Check for required typedefs
+ typedef std::__is_nothrow_callable<int(), void> test_type;
+ static_assert( std::is_base_of<std::false_type, test_type>::value, "" );
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value.cc
new file mode 100644
index 00000000000..b24d369d39d
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value.cc
@@ -0,0 +1,92 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <type_traits>
+
+#ifndef IS_NT_CALLABLE_DEFINED
+template<typename T, typename R = void>
+ constexpr bool is_nt_callable()
+ {
+ static_assert(std::is_nothrow_callable<T, R>::value
+ == std::is_nothrow_callable_v<T, R>);
+ return std::is_nothrow_callable_v<T, R>;
+ }
+#endif
+
+void test01()
+{
+ using func_type = void(*)();
+ static_assert( ! is_nt_callable< func_type() >(), "");
+
+#if __cpp_noexcept_function_type
+ using func_type_nt = void(*)() noexcept;
+ static_assert( is_nt_callable< func_type_nt() >(), "");
+#endif
+
+ struct X { };
+ using mem_type = int X::*;
+
+ static_assert( ! is_nt_callable< mem_type() >(), "");
+ static_assert( ! is_nt_callable< mem_type(int) >(), "");
+ static_assert( ! is_nt_callable< mem_type(int&) >(), "");
+
+ static_assert( is_nt_callable< mem_type(X&) >(), "");
+ static_assert( is_nt_callable< mem_type(X&), int >(), "");
+ static_assert( is_nt_callable< mem_type(X&), int& >(), "");
+ static_assert( is_nt_callable< mem_type(X&), long >(), "");
+ static_assert( is_nt_callable< mem_type(X*), int& >(), "");
+
+ using memfun_type = int (X::*)();
+
+ static_assert( ! is_nt_callable< memfun_type() >(), "");
+ static_assert( ! is_nt_callable< memfun_type(int) >(), "");
+ static_assert( ! is_nt_callable< memfun_type(int&) >(), "");
+ static_assert( ! is_nt_callable< memfun_type(X&) >(), "");
+ static_assert( ! is_nt_callable< memfun_type(X*) >(), "");
+
+#if __cpp_noexcept_function_type
+ using memfun_type_nt = int (X::*)() noexcept;
+
+ static_assert( ! is_nt_callable< memfun_type_nt() >(), "");
+ static_assert( ! is_nt_callable< memfun_type_nt(int) >(), "");
+ static_assert( ! is_nt_callable< memfun_type_nt(int&) >(), "");
+ static_assert( is_nt_callable< memfun_type_nt(X&) >(), "");
+ static_assert( is_nt_callable< memfun_type_nt(X*) >(), "");
+#endif
+
+ struct F {
+ int& operator()();
+ long& operator()() const noexcept;
+ short& operator()(int) &&;
+ char& operator()(int) const& noexcept;
+ private:
+ void operator()(int, int) noexcept;
+ };
+ using CF = const F;
+
+ static_assert( ! is_nt_callable< F(), int& >(), "");
+ static_assert( is_nt_callable< CF(), long& >(), "");
+ static_assert( ! is_nt_callable< F(int), short& >(), "");
+ static_assert( is_nt_callable< F&(int), char& >(), "");
+ static_assert( is_nt_callable< CF(int), char& >(), "");
+ static_assert( is_nt_callable< CF&(int), char& >(), "");
+
+ static_assert( ! is_nt_callable< F(int, int) >(), "");
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value_ext.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value_ext.cc
new file mode 100644
index 00000000000..8d84db629d1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_callable/value_ext.cc
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 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-do compile { target c++11 } }
+
+#include <type_traits>
+
+template<typename T, typename R = void>
+ constexpr bool is_nt_callable()
+ { return std::__is_nothrow_callable<T, R>::value; }
+
+#define IS_NT_CALLABLE_DEFINED
+#include "value.cc"
diff --git a/libstdc++-v3/testsuite/20_util/is_signed/value.cc b/libstdc++-v3/testsuite/20_util/is_signed/value.cc
index ab09d0cb4b3..2e251035faa 100644
--- a/libstdc++-v3/testsuite/20_util/is_signed/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_signed/value.cc
@@ -50,6 +50,7 @@ void test01()
static_assert(test_category<is_signed, double>(true), "");
static_assert(test_category<is_signed, long double>(true), "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
static_assert(test_category<is_signed, __int128>(true), "");
@@ -59,6 +60,7 @@ void test01()
#ifdef _GLIBCXX_USE_FLOAT128
static_assert(test_category<is_signed, __float128>(true), "");
#endif
+#endif
// Sanity check.
static_assert(test_category<is_signed, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc b/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
index 3ced5bb730f..75bec3b379a 100644
--- a/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
@@ -50,6 +50,7 @@ void test01()
static_assert(test_category<is_unsigned, double>(false), "");
static_assert(test_category<is_unsigned, long double>(false), "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
static_assert(test_category<is_unsigned, unsigned __int128>(true), "");
@@ -59,6 +60,7 @@ void test01()
#ifdef _GLIBCXX_USE_FLOAT128
static_assert(test_category<is_unsigned, __float128>(false), "");
#endif
+#endif
// Sanity check.
static_assert(test_category<is_unsigned, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
index be8d4b05844..40b9fb8b73d 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
@@ -67,6 +67,7 @@ void test01()
static_assert( sizeof(test24_type) == sizeof(test_enum),
"make_signed<test_enum> makes type of same size" );
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
typedef make_signed<unsigned __int128>::type test25_type;
@@ -77,4 +78,5 @@ void test01()
static_assert( is_same<test26_type, __int128>::value,
"make_signed<__int128>" );
#endif
+#endif
}
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index 2378db19e6a..1da917336c2 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -1,5 +1,4 @@
// { dg-options "-std=gnu++11 -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++11 -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-* } }
// { dg-do compile }
// 2007-05-03 Benjamin Kosnik <bkoz@redhat.com>
@@ -60,6 +59,7 @@ void test01()
typedef make_signed<test_enum>::type test24_type;
static_assert(is_same<test24_type, short>::value, "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
typedef make_signed<unsigned __int128>::type test25_type;
@@ -68,4 +68,5 @@ void test01()
typedef make_signed<__int128>::type test26_type;
static_assert(is_same<test26_type, __int128>::value, "");
#endif
+#endif
}
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 772457992ec..69e21b64035 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
@@ -48,4 +48,4 @@ void test01()
// { dg-error "required from here" "" { target *-*-* } 40 }
// { dg-error "required from here" "" { target *-*-* } 42 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1924 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1920 }
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
index 5971cab8966..09b63bbd3f1 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
@@ -61,6 +61,7 @@ void test01()
static_assert(is_unsigned<test24_type>::value, "");
static_assert(sizeof(test24_type) == sizeof(test_enum), "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
typedef make_unsigned<unsigned __int128>::type test25_type;
@@ -69,4 +70,5 @@ void test01()
typedef make_unsigned<__int128>::type test26_type;
static_assert(is_same<test26_type, unsigned __int128>::value, "");
#endif
+#endif
}
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index 19aa5d31b49..bb40fcc1e28 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -1,5 +1,4 @@
// { dg-options "-std=gnu++11 -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++11 -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-* } }
// { dg-do compile }
// 2007-05-03 Benjamin Kosnik <bkoz@redhat.com>
@@ -60,6 +59,7 @@ void test01()
typedef make_unsigned<test_enum>::type test24_type;
static_assert(is_same<test24_type, unsigned short>::value, "");
+#ifndef __STRICT_ANSI__
// GNU Extensions.
#ifdef _GLIBCXX_USE_INT128
typedef make_unsigned<unsigned __int128>::type test25_type;
@@ -68,4 +68,5 @@ void test01()
typedef make_unsigned<__int128>::type test26_type;
static_assert(is_same<test26_type, unsigned __int128>::value, "");
#endif
+#endif
}
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 75fadf40b04..5240c3e93eb 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
@@ -48,5 +48,5 @@ void test01()
// { dg-error "required from here" "" { target *-*-* } 40 }
// { dg-error "required from here" "" { target *-*-* } 42 }
-// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1820 }
-// { dg-error "declaration of" "" { target *-*-* } 1777 }
+// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1816 }
+// { dg-error "declaration of" "" { target *-*-* } 1773 }
diff --git a/libstdc++-v3/testsuite/20_util/owner_less/void.cc b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
new file mode 100644
index 00000000000..4facbf57001
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
@@ -0,0 +1,48 @@
+// Copyright (C) 2016 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-do compile { target c++11 } }
+
+#include <memory>
+
+#if __cplusplus >= 201402L
+// The feature-test macro is only defined for C++14 and later.
+# if __cpp_lib_transparent_operators < 201510
+# error "__cpp_lib_transparent_operators < 201510"
+# endif
+#endif
+
+void
+test01()
+{
+ using namespace std;
+
+ static_assert(is_same<owner_less<>, owner_less<void>>::value,
+ "owner_less<> uses void specialization");
+
+ shared_ptr<int> sp1;
+ shared_ptr<void> sp2;
+ shared_ptr<long> sp3;
+ weak_ptr<int> wp1;
+
+ owner_less<> cmp;
+ cmp(sp1, sp2);
+ cmp(sp1, wp1);
+ cmp(sp1, sp3);
+ cmp(wp1, sp1);
+ cmp(wp1, wp1);
+}
diff --git a/libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc b/libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
index f980b87ea6a..ea251b83385 100644
--- a/libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
@@ -1,5 +1,4 @@
-// { dg-do compile }
-// { dg-options "-std=gnu++14" }
+// { dg-do compile { target c++11 } }
// Copyright (C) 2013-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc b/libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
index c23bb91d4c0..e7e140d436b 100644
--- a/libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
+++ b/libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
@@ -36,10 +36,6 @@ void test_trivial()
// Negative
/*
- static_assert(std::has_trivial_default_constructor<pair_type>::value,
- "! triv default");
- static_assert(std::has_trivial_copy_assign<pair_type>::value,
- "! triv assign");
static_assert(std::is_trivial<pair_type>::value, "! triv");
static_assert(std::is_pod<pair_type>::value, "! pod");
*/
diff --git a/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc b/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
index 5f3e68b1f1f..a101d2938a7 100644
--- a/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
@@ -31,24 +31,21 @@ test01()
void
test02()
{
- std::ratio<INTMAX_MIN, 1> r1 __attribute__((unused));
+ std::ratio<INTMAX_MIN, 1> r1 __attribute__((unused)); // { dg-error "required from here" }
}
void
test03()
{
- std::ratio<1, INTMAX_MIN> r1 __attribute__((unused));
+ std::ratio<1, INTMAX_MIN> r1 __attribute__((unused)); // { dg-error "required from here"
}
void
test04()
{
- std::ratio<1,0> r1 __attribute__((unused));
+ std::ratio<1,0> r1 __attribute__((unused)); // { dg-error "required from here"
}
-// { dg-error "required from here" "" { target *-*-* } 34 }
-// { dg-error "required from here" "" { target *-*-* } 40 }
-// { dg-error "required from here" "" { target *-*-* } 46 }
// { dg-error "denominator cannot be zero" "" { target *-*-* } 265 }
// { dg-error "out of range" "" { target *-*-* } 266 }
// { dg-error "overflow in constant expression" "" { target *-*-* } 61 }
diff --git a/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc b/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
index 0efa556ffdf..1a6bc52d7e0 100644
--- a/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
@@ -42,7 +42,7 @@ test02()
// { dg-error "required from here" "" { target *-*-* } 29 }
// { dg-error "expected initializer" "" { target *-*-* } 36 }
// { dg-error "expected initializer" "" { target *-*-* } 38 }
-// { dg-error "overflow in addition" "" { target *-*-* } 435 }
+// { dg-error "overflow in addition" "" { target *-*-* } 451 }
// { dg-error "overflow in multiplication" "" { target *-*-* } 97 }
// { dg-error "overflow in multiplication" "" { target *-*-* } 99 }
// { dg-error "overflow in multiplication" "" { target *-*-* } 101 }
diff --git a/libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc b/libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
new file mode 100644
index 00000000000..1158a67dd39
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
@@ -0,0 +1,49 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <ratio>
+
+using namespace std;
+
+// These tests are rather simple, the front-end tests already test
+// variable templates, and the library tests for the underlying
+// traits are more elaborate. These are just simple sanity tests.
+
+static_assert(ratio_equal_v<ratio<1, 3>, ratio<2, 6>>
+ && ratio_equal<ratio<1, 3>, ratio<2, 6>>::value, "");
+
+static_assert(ratio_not_equal_v<ratio<1, 3>, ratio<2, 5>>
+ && ratio_not_equal<ratio<1, 3>, ratio<2, 5>>::value, "");
+
+static_assert(ratio_less_v<ratio<1, 4>, ratio<1, 3>>
+ && ratio_less<ratio<1, 4>, ratio<1, 3>>::value, "");
+
+static_assert(ratio_less_equal_v<ratio<1, 4>, ratio<1, 4>>
+ && ratio_less_equal_v<ratio<1, 4>, ratio<1, 3>>
+ && ratio_less_equal<ratio<1, 4>, ratio<1, 4>>::value
+ && ratio_less_equal<ratio<1, 4>, ratio<1, 3>>::value, "");
+
+static_assert(ratio_greater_v<ratio<1, 3>, ratio<1, 4>>
+ && ratio_greater<ratio<1, 3>, ratio<1, 4>>::value, "");
+
+static_assert(ratio_greater_equal_v<ratio<1, 4>, ratio<1, 4>>
+ && ratio_greater_equal_v<ratio<1, 3>, ratio<1, 4>>
+ && ratio_greater_equal<ratio<1, 4>, ratio<1, 4>>::value
+ && ratio_greater_equal<ratio<1, 3>, ratio<1, 4>>::value, "");
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
index edd3ffeeb03..f1f399c5f36 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
@@ -21,7 +21,6 @@
// 20.7.12.2 Template class shared_ptr [util.smartptr.shared]
#include <memory>
-#include <testsuite_hooks.h>
struct A { };
std::auto_ptr<A> source() { return std::auto_ptr<A>(); }
@@ -29,27 +28,19 @@ std::auto_ptr<A> source() { return std::auto_ptr<A>(); }
// 20.7.12.2.3 shared_ptr assignment [util.smartptr.shared.assign]
// Assignment from rvalue auto_ptr
-int
+void
test01()
{
- bool test __attribute__((unused)) = true;
-
std::shared_ptr<A> a;
a = source();
-
- return 0;
}
-int
+void
test02()
{
- bool test __attribute__((unused)) = true;
-
std::shared_ptr<A> a;
std::auto_ptr<A> au;
a = std::move(au);
-
- return 0;
}
int
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
index 4dd514e5926..58334375c38 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
@@ -21,7 +21,6 @@
// 20.7.12.2 Template class shared_ptr [util.smartptr.shared]
#include <memory>
-#include <testsuite_hooks.h>
struct A { };
std::unique_ptr<A> source() { return std::unique_ptr<A>(); }
@@ -29,27 +28,19 @@ std::unique_ptr<A> source() { return std::unique_ptr<A>(); }
// 20.7.12.2.3 shared_ptr assignment [util.smartptr.shared.assign]
// Assignment from rvalue unique_ptr
-int
+void
test01()
{
- bool test __attribute__((unused)) = true;
-
std::shared_ptr<A> a;
a = source();
-
- return 0;
}
-int
+void
test02()
{
- bool test __attribute__((unused)) = true;
-
std::shared_ptr<A> a;
std::unique_ptr<A> u;
a = std::move(u);
-
- return 0;
}
int
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
index 395094f8bbe..1b3dc1d550b 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
@@ -32,7 +32,7 @@ void test01()
{
X* px = 0;
std::shared_ptr<X> p1(px); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 889 }
+ // { dg-error "incomplete" "" { target *-*-* } 893 }
std::shared_ptr<X> p9(ap()); // { dg-error "here" }
// { dg-error "incomplete" "" { target *-*-* } 307 }
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
index 8843ffea429..399d2f08387 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
@@ -25,5 +25,5 @@
void test01()
{
std::shared_ptr<void> p((void*)nullptr); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 888 }
+ // { dg-error "incomplete" "" { target *-*-* } 892 }
}
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
new file mode 100644
index 00000000000..38f95022dbd
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <memory>
+
+using std::shared_ptr;
+using std::weak_ptr;
+using std::is_same_v;
+
+static_assert( is_same_v<shared_ptr<int>::weak_type, weak_ptr<int>> );
+static_assert( is_same_v<shared_ptr<void>::weak_type, weak_ptr<void>> );
+
+struct X { };
+static_assert( is_same_v<shared_ptr<X>::weak_type, weak_ptr<X>> );
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
index d5b9d4fa91f..a853307b7c5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
@@ -25,11 +25,11 @@
#include <memory>
#include <random>
#include <vector>
-#include <testsuite_hooks.h>
#include <iostream>
#include <cstdlib>
-
-#include <pthread.h>
+#include <thread>
+#include <atomic>
+#include <testsuite_hooks.h>
#ifdef _GLIBCXX_HAVE_UNISTD_H
#include <unistd.h> // To test for _POSIX_THREAD_PRIORITY_SCHEDULING
@@ -50,19 +50,13 @@ const unsigned long HAMMER_REPEAT = 100000;
const unsigned long KILL_ONE_IN = 1000;
struct A
- {
- static _Atomic_word counter;
- A()
- {
- __gnu_cxx::__atomic_add(&counter, 1);
- }
- ~A()
- {
- __gnu_cxx::__atomic_add(&counter, -1);
- }
- };
+{
+ static std::atomic<int> counter;
+ A() { counter.fetch_add(1, std::memory_order_relaxed); }
+ ~A() { counter.fetch_sub(1, std::memory_order_relaxed); }
+};
-_Atomic_word A::counter = 0;
+std::atomic<int> A::counter{ 0 };
typedef std::shared_ptr<A> sp_A_t;
typedef std::weak_ptr<A> wp_A_t;
@@ -80,16 +74,10 @@ struct shared_and_weak_pools
{ }
};
-void* thread_hammer_and_kill(void* opaque_pools)
+void thread_hammer_and_kill(shared_and_weak_pools& pools)
{
- shared_and_weak_pools& pools = *static_cast<shared_and_weak_pools*>(opaque_pools);
- // Using the same parameters as in the RNG test cases.
- std::mersenne_twister_engine<
- unsigned long, 32, 624, 397, 31,
- 0x9908b0dful, 11,
- 0xfffffffful, 7,
- 0x9d2c5680ul, 15,
- 0xefc60000ul, 18, 1812433253ul> rng;
+ std::mt19937 urbg;
+ std::uniform_int_distribution<> dist(0, KILL_ONE_IN - 1);
sp_vector_t::iterator cur_shared = pools.shared_pool.begin();
wp_vector_t::iterator cur_weak = pools.weak_pool.begin();
@@ -107,26 +95,16 @@ void* thread_hammer_and_kill(void* opaque_pools)
break;
}
- if (rng() % KILL_ONE_IN == 0)
+ if (dist(urbg) == 0)
{
cur_shared->reset();
++cur_shared;
}
}
- return 0;
}
-void* thread_hammer(void* opaque_weak)
+void thread_hammer(wp_vector_t& weak_pool)
{
- wp_vector_t& weak_pool = *static_cast<wp_vector_t*>(opaque_weak);
- // Using the same parameters as in the RNG test cases.
- std::mersenne_twister_engine<
- unsigned long, 32, 624, 397, 31,
- 0x9908b0dful, 11,
- 0xfffffffful, 7,
- 0x9d2c5680ul, 15,
- 0xefc60000ul, 18, 1812433253ul> rng;
-
wp_vector_t::iterator cur_weak = weak_pool.begin();
for (unsigned int i = 0; i < HAMMER_REPEAT; ++i)
@@ -142,51 +120,38 @@ void* thread_hammer(void* opaque_weak)
break;
}
}
- return 0;
}
-int
+void
test01()
{
bool test __attribute__((unused)) = true;
sp_vector_t obj_pool(POOL_SIZE);
- for(sp_vector_t::iterator cur = obj_pool.begin(); cur != obj_pool.end(); ++cur)
- {
- cur->reset(new A);
- }
+ for(auto& obj : obj_pool)
+ obj.reset(new A);
+
// Obtain weak references.
std::vector<wp_vector_t> weak_pool(HAMMER_MAX_THREADS, wp_vector_t(obj_pool.begin(), obj_pool.end()));
// Launch threads with pointer to weak reference.
- pthread_t threads[HAMMER_MAX_THREADS];
+ std::thread threads[HAMMER_MAX_THREADS];
#if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500
pthread_setconcurrency (HAMMER_MAX_THREADS);
#endif
- pthread_attr_t tattr;
- pthread_attr_init(&tattr);
-
shared_and_weak_pools pools(obj_pool, weak_pool[0]);
- pthread_create(threads, &tattr, thread_hammer_and_kill, static_cast<void*>(&pools));
+ threads[0] = std::thread(thread_hammer_and_kill, std::ref(pools));
for (unsigned int worker = 1; worker < HAMMER_MAX_THREADS; worker++)
- {
- if (pthread_create(&threads[worker], &tattr,
- thread_hammer, static_cast<void*>(&weak_pool[worker])))
- std::abort();
- }
+ threads[worker] = std::thread(thread_hammer, std::ref(weak_pool[worker]));
+
// Wait for threads to complete, then check integrity of reference.
- void* status;
- for (unsigned int worker = 0; worker < HAMMER_MAX_THREADS; worker++)
- {
- if (pthread_join(threads[worker], &status))
- std::abort();
- }
+ for (auto& thread : threads)
+ thread.join();
+
obj_pool.clear();
VERIFY( A::counter == 0 );
-
- return 0;
}
int
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
index 9a01716b741..404fc46d50e 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
@@ -25,11 +25,11 @@
#include <memory>
#include <random>
#include <vector>
-#include <testsuite_hooks.h>
#include <iostream>
#include <cstdlib>
-
-#include <pthread.h>
+#include <thread>
+#include <atomic>
+#include <testsuite_hooks.h>
#ifdef _GLIBCXX_HAVE_UNISTD_H
#include <unistd.h> // To test for _POSIX_THREAD_PRIORITY_SCHEDULING
@@ -50,19 +50,13 @@ const unsigned long HAMMER_REPEAT = 100000;
const unsigned long KILL_ONE_IN = 1000;
struct A
- {
- static _Atomic_word counter;
- A()
- {
- __gnu_cxx::__atomic_add(&counter, 1);
- }
- ~A()
- {
- __gnu_cxx::__atomic_add(&counter, -1);
- }
- };
+{
+ static std::atomic<int> counter;
+ A() { counter.fetch_add(1, std::memory_order_relaxed); }
+ ~A() { counter.fetch_sub(1, std::memory_order_relaxed); }
+};
-_Atomic_word A::counter = 0;
+std::atomic<int> A::counter{0};
using std::_S_mutex;
@@ -82,16 +76,10 @@ struct shared_and_weak_pools
{ }
};
-void* thread_hammer_and_kill(void* opaque_pools)
+void thread_hammer_and_kill(shared_and_weak_pools& pools)
{
- shared_and_weak_pools& pools = *static_cast<shared_and_weak_pools*>(opaque_pools);
- // Using the same parameters as in the RNG test cases.
- std::mersenne_twister_engine<
- unsigned long, 32, 624, 397, 31,
- 0x9908b0dful, 11,
- 0xfffffffful, 7,
- 0x9d2c5680ul, 15,
- 0xefc60000ul, 18, 1812433253ul> rng;
+ std::mt19937 urbg;
+ std::uniform_int_distribution<> dist(0, KILL_ONE_IN - 1);
sp_vector_t::iterator cur_shared = pools.shared_pool.begin();
wp_vector_t::iterator cur_weak = pools.weak_pool.begin();
@@ -109,26 +97,16 @@ void* thread_hammer_and_kill(void* opaque_pools)
break;
}
- if (rng() % KILL_ONE_IN == 0)
+ if (dist(urbg) == 0)
{
cur_shared->reset();
++cur_shared;
}
}
- return 0;
}
-void* thread_hammer(void* opaque_weak)
+void thread_hammer(wp_vector_t& weak_pool)
{
- wp_vector_t& weak_pool = *static_cast<wp_vector_t*>(opaque_weak);
- // Using the same parameters as in the RNG test cases.
- std::mersenne_twister_engine<
- unsigned long, 32, 624, 397, 31,
- 0x9908b0dful, 11,
- 0xfffffffful, 7,
- 0x9d2c5680ul, 15,
- 0xefc60000ul, 18, 1812433253ul> rng;
-
wp_vector_t::iterator cur_weak = weak_pool.begin();
for (unsigned int i = 0; i < HAMMER_REPEAT; ++i)
@@ -144,51 +122,38 @@ void* thread_hammer(void* opaque_weak)
break;
}
}
- return 0;
}
-int
+void
test01()
{
bool test __attribute__((unused)) = true;
sp_vector_t obj_pool(POOL_SIZE);
- for(sp_vector_t::iterator cur = obj_pool.begin(); cur != obj_pool.end(); ++cur)
- {
- cur->reset(new A);
- }
+ for(auto& obj : obj_pool)
+ obj.reset(new A);
+
// Obtain weak references.
std::vector<wp_vector_t> weak_pool(HAMMER_MAX_THREADS, wp_vector_t(obj_pool.begin(), obj_pool.end()));
// Launch threads with pointer to weak reference.
- pthread_t threads[HAMMER_MAX_THREADS];
+ std::thread threads[HAMMER_MAX_THREADS];
#if defined(__sun) && defined(__svr4__) && _XOPEN_VERSION >= 500
pthread_setconcurrency (HAMMER_MAX_THREADS);
#endif
- pthread_attr_t tattr;
- pthread_attr_init(&tattr);
-
shared_and_weak_pools pools(obj_pool, weak_pool[0]);
- pthread_create(threads, &tattr, thread_hammer_and_kill, static_cast<void*>(&pools));
+ threads[0] = std::thread(thread_hammer_and_kill, std::ref(pools));
for (unsigned int worker = 1; worker < HAMMER_MAX_THREADS; worker++)
- {
- if (pthread_create(&threads[worker], &tattr,
- thread_hammer, static_cast<void*>(&weak_pool[worker])))
- std::abort();
- }
+ threads[worker] = std::thread(thread_hammer, std::ref(weak_pool[worker]));
+
// Wait for threads to complete, then check integrity of reference.
- void* status;
- for (unsigned int worker = 0; worker < HAMMER_MAX_THREADS; worker++)
- {
- if (pthread_join(threads[worker], &status))
- std::abort();
- }
+ for (auto& thread : threads)
+ thread.join();
+
obj_pool.clear();
VERIFY( A::counter == 0 );
-
- return 0;
}
int
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
index 179e7471707..e2196444cf3 100644
--- a/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++03" }
+// { dg-options "-std=gnu++98" }
#include <vector>
#include <stdexcept>
diff --git a/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc b/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
new file mode 100644
index 00000000000..bf596e92fc1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
@@ -0,0 +1,59 @@
+// Copyright (C) 2016 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-do run { target c++11 } }
+
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+#include <chrono>
+
+#if __cpp_lib_chrono < 201510
+# error "__cpp_lib_chrono < 201510"
+#endif
+
+using namespace std::chrono_literals;
+using std::chrono::seconds;
+using std::chrono::milliseconds;
+
+constexpr std::chrono::system_clock::time_point base{};
+
+static_assert( std::chrono::floor<seconds>(base + 1000ms) == (base + 1s) );
+static_assert( std::chrono::floor<seconds>(base + 1001ms) == (base + 1s) );
+static_assert( std::chrono::floor<seconds>(base + 1500ms) == (base + 1s) );
+static_assert( std::chrono::floor<seconds>(base + 1999ms) == (base + 1s) );
+static_assert( std::chrono::floor<seconds>(base + 2000ms) == (base + 2s) );
+static_assert( std::chrono::floor<seconds>(base + 2001ms) == (base + 2s) );
+static_assert( std::chrono::floor<seconds>(base + 2500ms) == (base + 2s) );
+
+static_assert( std::chrono::ceil<seconds>(base + 1000ms) == (base + 1s) );
+static_assert( std::chrono::ceil<seconds>(base + 1001ms) == (base + 2s) );
+static_assert( std::chrono::ceil<seconds>(base + 1500ms) == (base + 2s) );
+static_assert( std::chrono::ceil<seconds>(base + 1999ms) == (base + 2s) );
+static_assert( std::chrono::ceil<seconds>(base + 2000ms) == (base + 2s) );
+static_assert( std::chrono::ceil<seconds>(base + 2001ms) == (base + 3s) );
+static_assert( std::chrono::ceil<seconds>(base + 2500ms) == (base + 3s) );
+
+static_assert( std::chrono::round<seconds>(base + 1000ms) == (base + 1s) );
+static_assert( std::chrono::round<seconds>(base + 1001ms) == (base + 1s) );
+static_assert( std::chrono::round<seconds>(base + 1499ms) == (base + 1s) );
+static_assert( std::chrono::round<seconds>(base + 1500ms) == (base + 2s) );
+static_assert( std::chrono::round<seconds>(base + 1999ms) == (base + 2s) );
+static_assert( std::chrono::round<seconds>(base + 2000ms) == (base + 2s) );
+static_assert( std::chrono::round<seconds>(base + 2001ms) == (base + 2s) );
+static_assert( std::chrono::round<seconds>(base + 2500ms) == (base + 2s) );
+static_assert( std::chrono::round<seconds>(base + 2501ms) == (base + 3s) );
diff --git a/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc b/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
new file mode 100644
index 00000000000..c12309cd253
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
@@ -0,0 +1,67 @@
+// Copyright (C) 2014-2016 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++17" }
+
+#include <tuple>
+#include <testsuite_hooks.h>
+
+#if __cpp_lib_apply < 201603
+# error "__cpp_lib_apply < 201603"
+#endif
+
+void
+test01()
+{
+ auto t = std::make_tuple(1, '2', 3.0);
+ std::apply( [&](int& i, char& c, double& d) {
+ VERIFY(&i == &std::get<int>(t));
+ VERIFY(&c == &std::get<char>(t));
+ VERIFY(&d == &std::get<double>(t));
+ }, t);
+}
+
+constexpr int func(int i, int j) { return i + j; }
+
+void
+test02()
+{
+ constexpr auto t = std::make_tuple(1, 2);
+ constexpr int i = std::apply(func, t);
+ VERIFY( i == 3 );
+}
+
+struct F
+{
+ int f(int i, int j) const { return i + j; }
+};
+
+void
+test03()
+{
+ auto t = std::make_tuple(F{}, 1, 2);
+ int r = std::apply(&F::f, t);
+ VERIFY( r == 3 );
+}
+
+int
+main()
+{
+ test01();
+ test02();
+ test03();
+}
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
index f57eae90549..8dd29b60194 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
@@ -15,6 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
+// { dg-do compile { target c++11 } }
+
#include <tuple>
struct S {
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
index fe9bea678a4..a9bf9542dbf 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
@@ -15,6 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
+// { dg-do compile { target c++11 } }
+
#include <tuple>
using namespace std;
@@ -27,4 +29,3 @@ int main() {
tuple<Something> t1;
tuple<Something> t2 = t1;
}
-
diff --git a/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc b/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
new file mode 100644
index 00000000000..5bcf5761c36
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
@@ -0,0 +1,61 @@
+// Copyright (C) 2016 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 "-fno-show-column" }
+// { dg-do compile { target c++14 } }
+// { dg-error "in range" "" { target *-*-* } 1280 }
+
+#include <tuple>
+
+void
+test01()
+{
+ using test_type = std::tuple<>;
+ test_type t;
+ std::get<0>(t); // { dg-error "no match" }
+ std::get<0>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<0>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+ std::get<5>(t); // { dg-error "no match" }
+ std::get<5>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<5>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+}
+
+void
+test02()
+{
+ using test_type = std::tuple<int>;
+ test_type t;
+ std::get<1>(t); // { dg-error "no match" }
+ std::get<1>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<1>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+ std::get<5>(t); // { dg-error "no match" }
+ std::get<5>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<5>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+}
+
+void
+test03()
+{
+ using test_type = std::tuple<int, int, int, int>;
+ test_type t;
+ std::get<5>(t); // { dg-error "no match" }
+ std::get<5>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<5>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+ std::get<6>(t); // { dg-error "no match" }
+ std::get<6>(const_cast<const test_type&>(t)); // { dg-error "no match" }
+ std::get<6>(static_cast<test_type&&>(t)); // { dg-error "no match" }
+}
diff --git a/libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc b/libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
index aea73ffa3bb..124bf754fec 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
@@ -36,10 +36,6 @@ void test_trivial()
// Negative
/*
- static_assert(std::has_trivial_default_constructor<tuple_type>::value,
- "! triv default");
- static_assert(std::has_trivial_copy_assign<tuple_type>::value,
- "! triv assign");
static_assert(std::is_trivial<tuple_type>::value, "! triv");
static_assert(std::is_pod<tuple_type>::value, "! pod");
*/
diff --git a/libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc b/libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
new file mode 100644
index 00000000000..29ce5c1701f
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
@@ -0,0 +1,33 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <tuple>
+
+using namespace std;
+
+// These tests are rather simple, the front-end tests already test
+// variable templates, and the library tests for the underlying
+// traits are more elaborate. These are just simple sanity tests.
+
+static_assert(tuple_size_v<tuple<int>> == 1
+ && tuple_size<tuple<int>>::value == 1, "");
+
+static_assert(tuple_size_v<tuple<int, int>> == 2
+ && tuple_size<tuple<int, int>>::value == 2, "");
diff --git a/libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc b/libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
new file mode 100644
index 00000000000..cc6e790895f
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
@@ -0,0 +1,29 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <memory>
+#include <string>
+
+using namespace std;
+
+static_assert(uses_allocator<int, allocator<int>>::value
+ == uses_allocator_v<int, allocator<int>>);
+static_assert(uses_allocator<string, allocator<string>>::value
+ == uses_allocator_v<string, allocator<string>>);
diff --git a/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
new file mode 100644
index 00000000000..5a497f12445
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
@@ -0,0 +1,344 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <type_traits>
+
+using namespace std;
+
+// These tests are rather simple, the front-end tests already test
+// variable templates, and the library tests for the underlying
+// traits are more elaborate. These are just simple sanity tests.
+
+static_assert(is_void_v<void> && is_void<void>::value, "");
+static_assert(!is_void_v<int> && !is_void<int>::value, "");
+
+static_assert(is_null_pointer_v<nullptr_t>
+ && is_null_pointer<nullptr_t>::value, "");
+static_assert(!is_null_pointer_v<void*>
+ && !is_null_pointer<void*>::value, "");
+
+static_assert(is_integral_v<int> && is_integral<int>::value, "");
+static_assert(!is_integral_v<int*> && !is_integral<int*>::value, "");
+
+static_assert(is_floating_point_v<float>
+ && is_floating_point<float>::value, "");
+static_assert(!is_floating_point_v<int>
+ && !is_floating_point<int>::value, "");
+
+static_assert(is_array_v<char[42]> && is_array<char[42]>::value, "");
+static_assert(!is_array_v<char*> && !is_array<char*>::value, "");
+
+static_assert(is_pointer_v<int*> && is_pointer<int*>::value, "");
+static_assert(!is_pointer_v<int> && !is_pointer<int>::value, "");
+
+static_assert(is_lvalue_reference_v<int&>
+ && is_lvalue_reference<int&>::value, "");
+static_assert(!is_lvalue_reference_v<int>
+ && !is_lvalue_reference<int>::value, "");
+
+static_assert(is_rvalue_reference_v<int&&>
+ && is_rvalue_reference<int&&>::value, "");
+static_assert(!is_rvalue_reference_v<int>
+ && !is_rvalue_reference<int>::value, "");
+
+struct EmptyFinal final {};
+
+static_assert(is_member_object_pointer_v<int (EmptyFinal::*)>
+ && is_member_object_pointer<int (EmptyFinal::*)>::value, "");
+static_assert(!is_member_object_pointer_v<void*>
+ && !is_member_object_pointer<void*>::value, "");
+
+static_assert(is_member_function_pointer_v<int (EmptyFinal::*)()>
+ && is_member_function_pointer<int (EmptyFinal::*)()>::value, "");
+static_assert(!is_member_function_pointer_v<void*>
+ && !is_member_function_pointer<void*>::value, "");
+
+enum Enum {};
+
+static_assert(is_enum_v<Enum> && is_enum<Enum>::value, "");
+static_assert(!is_enum_v<int> && !is_enum<int>::value, "");
+
+union Union;
+
+static_assert(is_union_v<Union> && is_union<Union>::value, "");
+static_assert(!is_union_v<int> && !is_union<int>::value, "");
+
+static_assert(is_class_v<EmptyFinal> && is_class<EmptyFinal>::value, "");
+static_assert(!is_class_v<int> && !is_class<int>::value, "");
+
+static_assert(is_function_v<void()> && is_function<void()>::value, "");
+static_assert(!is_function_v<void(*)()> && !is_function<void(*)()>::value, "");
+
+static_assert(is_reference_v<int&> && is_reference<int&>::value, "");
+static_assert(!is_reference_v<int> && !is_reference<int>::value, "");
+
+static_assert(is_arithmetic_v<int> && is_arithmetic<int>::value, "");
+static_assert(!is_arithmetic_v<void*> && !is_arithmetic<void*>::value, "");
+
+static_assert(is_fundamental_v<int> && is_fundamental<int>::value, "");
+static_assert(!is_fundamental_v<EmptyFinal>
+ && !is_fundamental<EmptyFinal>::value, "");
+
+static_assert(is_object_v<int> && is_object<int>::value, "");
+static_assert(!is_object_v<int&> && !is_object<int&>::value, "");
+
+static_assert(is_scalar_v<int> && is_scalar<int>::value, "");
+static_assert(!is_scalar_v<int&> && !is_scalar<int&>::value, "");
+
+static_assert(is_compound_v<EmptyFinal>
+ && is_compound<EmptyFinal>::value, "");
+static_assert(!is_compound_v<int> && !is_compound<int>::value, "");
+
+static_assert(is_member_pointer_v<int (EmptyFinal::*)>
+ && is_member_pointer<int (EmptyFinal::*)>::value, "");
+static_assert(!is_member_pointer_v<void*>
+ && !is_member_pointer<void*>::value, "");
+
+static_assert(is_const_v<const int> && is_const<const int>::value, "");
+static_assert(!is_const_v<int> && !is_const<int>::value, "");
+
+static_assert(is_volatile_v<volatile int>
+ && is_volatile<volatile int>::value, "");
+static_assert(!is_volatile_v<int> && !is_volatile<int>::value, "");
+
+struct NType
+{
+ NType(int);
+ ~NType();
+ int i;
+private:
+ NType(const NType&);
+ NType& operator=(const NType&);
+ int i2;
+};
+
+static_assert(is_trivial_v<int> && is_trivial<int>::value, "");
+static_assert(!is_trivial_v<NType> && !is_trivial<NType>::value, "");
+
+static_assert(is_trivially_copyable_v<int>
+ && is_trivially_copyable<int>::value, "");
+static_assert(!is_trivially_copyable_v<NType>
+ && !is_trivially_copyable<NType>::value, "");
+
+static_assert(is_standard_layout_v<int>
+ && is_standard_layout<int>::value, "");
+static_assert(!is_standard_layout_v<NType>
+ && !is_standard_layout<NType>::value, "");
+
+static_assert(is_pod_v<int>
+ && is_pod<int>::value, "");
+static_assert(!is_pod_v<NType>
+ && !is_pod<NType>::value, "");
+
+static_assert(is_literal_type_v<int>
+ && is_literal_type<int>::value, "");
+static_assert(!is_literal_type_v<NType>
+ && !is_literal_type<NType>::value, "");
+
+static_assert(is_empty_v<EmptyFinal>
+ && is_empty<EmptyFinal>::value, "");
+static_assert(!is_empty_v<NType>
+ && !is_empty<NType>::value, "");
+
+struct Abstract {protected: virtual ~Abstract() = 0;};
+struct Poly : Abstract {virtual ~Poly();};
+
+static_assert(is_polymorphic_v<Poly>
+ && is_polymorphic<Poly>::value, "");
+static_assert(!is_polymorphic_v<EmptyFinal>
+ && !is_polymorphic<EmptyFinal>::value, "");
+
+
+
+static_assert(is_abstract_v<Abstract>
+ && is_abstract<Abstract>::value, "");
+static_assert(!is_abstract_v<EmptyFinal>
+ && !is_abstract<EmptyFinal>::value, "");
+
+static_assert(is_final_v<EmptyFinal>
+ && is_final<EmptyFinal>::value, "");
+static_assert(!is_final_v<Abstract>
+ && !is_final<Abstract>::value, "");
+
+static_assert(is_signed_v<int> && is_signed<int>::value, "");
+static_assert(!is_signed_v<unsigned int>
+ && !is_signed<unsigned int>::value, "");
+
+static_assert(is_constructible_v<int, int>
+ && is_constructible<int, int>::value, "");
+static_assert(!is_constructible_v<int, void*>
+ && !is_constructible<int, void*>::value, "");
+
+static_assert(is_default_constructible_v<int>
+ && is_default_constructible<int>::value, "");
+static_assert(!is_default_constructible_v<NType>
+ && !is_default_constructible<NType>::value, "");
+
+static_assert(is_copy_constructible_v<int>
+ && is_copy_constructible<int>::value, "");
+static_assert(!is_copy_constructible_v<NType>
+ && !is_copy_constructible<NType>::value, "");
+
+static_assert(is_move_constructible_v<int>
+ && is_copy_constructible<int>::value, "");
+static_assert(!is_move_constructible_v<NType>
+ && !is_copy_constructible<NType>::value, "");
+
+static_assert(is_assignable_v<int&, int>
+ && is_assignable<int&, int>::value, "");
+static_assert(!is_assignable_v<int, int>
+ && !is_assignable<int, int>::value, "");
+
+static_assert(is_copy_assignable_v<int>
+ && is_copy_assignable<int>::value, "");
+static_assert(!is_copy_assignable_v<NType>
+ && !is_copy_assignable<NType>::value, "");
+
+static_assert(is_move_assignable_v<int>
+ && is_move_assignable<int>::value, "");
+static_assert(!is_move_assignable_v<NType>
+ && !is_move_assignable<NType>::value, "");
+
+static_assert(is_destructible_v<int>
+ && is_destructible<int>::value, "");
+static_assert(!is_destructible_v<Abstract>
+ && !is_destructible<Abstract>::value, "");
+
+static_assert(is_trivially_constructible_v<int, int>
+ && is_trivially_constructible<int, int>::value, "");
+static_assert(!is_trivially_constructible_v<NType, NType>
+ && !is_trivially_constructible<NType, NType>::value, "");
+
+static_assert(is_trivially_default_constructible_v<int>
+ && is_trivially_default_constructible<int>::value, "");
+static_assert(!is_trivially_default_constructible_v<NType>
+ && !is_trivially_default_constructible<NType>::value, "");
+
+static_assert(is_trivially_copy_constructible_v<int>
+ && is_trivially_copy_constructible<int>::value, "");
+static_assert(!is_trivially_copy_constructible_v<NType>
+ && !is_trivially_copy_constructible<NType>::value, "");
+
+static_assert(is_trivially_move_constructible_v<int>
+ && is_trivially_move_constructible<int>::value, "");
+static_assert(!is_trivially_move_constructible_v<NType>
+ && !is_trivially_move_constructible<NType>::value, "");
+
+static_assert(is_trivially_assignable_v<int&, int>
+ && is_trivially_assignable<int&, int>::value, "");
+static_assert(!is_trivially_assignable_v<NType, NType>
+ && !is_trivially_assignable<NType, NType>::value, "");
+
+static_assert(is_trivially_copy_assignable_v<int>
+ && is_trivially_copy_assignable<int>::value, "");
+static_assert(!is_trivially_copy_assignable_v<NType>
+ && !is_trivially_copy_assignable<NType>::value, "");
+
+static_assert(is_trivially_move_assignable_v<int>
+ && is_trivially_move_assignable<int>::value, "");
+static_assert(!is_trivially_move_assignable_v<NType>
+ && !is_trivially_move_assignable<NType>::value, "");
+
+static_assert(is_trivially_destructible_v<int>
+ && is_trivially_destructible<int>::value, "");
+static_assert(!is_trivially_destructible_v<Abstract>
+ && !is_trivially_destructible<Abstract>::value, "");
+
+static_assert(is_nothrow_constructible_v<int, int>
+ && is_nothrow_constructible<int, int>::value, "");
+static_assert(!is_nothrow_constructible_v<NType, NType>
+ && !is_nothrow_constructible<NType, NType>::value, "");
+
+static_assert(is_nothrow_default_constructible_v<int>
+ && is_nothrow_default_constructible<int>::value, "");
+static_assert(!is_nothrow_default_constructible_v<NType>
+ && !is_nothrow_default_constructible<NType>::value, "");
+
+static_assert(is_nothrow_copy_constructible_v<int>
+ && is_nothrow_copy_constructible<int>::value, "");
+static_assert(!is_nothrow_copy_constructible_v<NType>
+ && !is_nothrow_copy_constructible<NType>::value, "");
+
+static_assert(is_nothrow_move_constructible_v<int>
+ && is_nothrow_move_constructible<int>::value, "");
+static_assert(!is_nothrow_move_constructible_v<NType>
+ && !is_nothrow_move_constructible<NType>::value, "");
+
+static_assert(is_nothrow_assignable_v<int&, int>
+ && is_nothrow_assignable<int&, int>::value, "");
+static_assert(!is_nothrow_assignable_v<NType, NType>
+ && !is_nothrow_assignable<NType, NType>::value, "");
+
+static_assert(is_nothrow_copy_assignable_v<int>
+ && is_nothrow_copy_assignable<int>::value, "");
+static_assert(!is_nothrow_copy_assignable_v<NType>
+ && !is_nothrow_copy_assignable<NType>::value, "");
+
+static_assert(is_nothrow_move_assignable_v<int>
+ && is_nothrow_move_assignable<int>::value, "");
+static_assert(!is_nothrow_move_assignable_v<NType>
+ && !is_nothrow_move_assignable<NType>::value, "");
+
+static_assert(has_virtual_destructor_v<Abstract>
+ && has_virtual_destructor<Abstract>::value, "");
+static_assert(!has_virtual_destructor_v<NType>
+ && !has_virtual_destructor<NType>::value, "");
+
+static_assert(alignment_of_v<int> == alignof(int)
+ && alignment_of<int>::value == alignof(int) , "");
+
+static_assert(rank_v<int[1][1]> == rank<int[1][1]>::value, "");
+
+static_assert(extent_v<int[1][2], 1> == 2
+ && extent<int[1][2], 1>::value == 2, "");
+
+static_assert(is_same_v<int, int> && is_same<int, int>::value, "");
+static_assert(!is_same_v<int, char> && !is_same<int, char>::value, "");
+
+static_assert(is_base_of_v<Abstract, Poly>
+ && is_base_of<Abstract, Poly>::value, "");
+static_assert(!is_base_of_v<Abstract, NType>
+ && !is_base_of<Abstract, NType>::value, "");
+
+static_assert(is_convertible_v<int&, const int&>
+ && is_convertible<int&, const int&>::value, "");
+static_assert(!is_convertible_v<const int&, int&>
+ && !is_convertible<const int&, int&>::value, "");
+
+static_assert(negation_v<false_type>, "");
+static_assert(!negation_v<true_type>, "");
+static_assert(conjunction_v<>, "");
+static_assert(!disjunction_v<>, "");
+static_assert(conjunction_v<true_type>, "");
+static_assert(!conjunction_v<false_type>, "");
+static_assert(disjunction_v<true_type>, "");
+static_assert(!disjunction_v<false_type>, "");
+static_assert(conjunction_v<true_type, true_type>, "");
+static_assert(!conjunction_v<true_type, false_type>, "");
+static_assert(disjunction_v<false_type, true_type>, "");
+static_assert(!disjunction_v<false_type, false_type>, "");
+static_assert(conjunction_v<true_type, true_type,
+ true_type>, "");
+static_assert(!conjunction_v<true_type, true_type,
+ false_type>, "");
+static_assert(disjunction_v<false_type, false_type,
+ true_type>, "");
+static_assert(!disjunction_v<false_type, false_type,
+ false_type>, "");
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
index 2ed238a3361..110f4d9d92d 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
@@ -21,9 +21,9 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::propagating_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
index fefa77f85db..3ac15bbf821 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
@@ -21,9 +21,9 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::propagating_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
index 3306438f81d..1563abbb2dd 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
@@ -22,7 +22,7 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
+#if _GLIBCXX_USE_CXX11_ABI
using C = wchar_t;
const C c = L'a';
using traits = std::char_traits<C>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
index 84504bc40f9..1cee2ac3340 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
@@ -21,9 +21,9 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::uneq_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
index d1efc0bf9a3..8c94d798604 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
@@ -21,9 +21,9 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::propagating_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
index 0ed6940db99..6c462a6bd69 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
@@ -21,9 +21,9 @@
#include <string>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::propagating_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
index dd496e93165..667d47505da 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
@@ -21,9 +21,9 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
-#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
-using C = char;
-const C c = 'a';
+#if _GLIBCXX_USE_CXX11_ABI
+using C = wchar_t;
+const C c = L'a';
using traits = std::char_traits<C>;
using __gnu_test::propagating_allocator;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
new file mode 100644
index 00000000000..181ef7e2446
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
@@ -0,0 +1,39 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.cons]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::string_view s("foo");
+ std::string s2(s);
+
+ VERIFY(s==s2);
+}
+
+int main()
+{
+ test02();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
new file mode 100644
index 00000000000..f037e538221
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
@@ -0,0 +1,39 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.cons]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::wstring_view s(L"foo");
+ std::wstring s2(s);
+
+ VERIFY(s==s2);
+}
+
+int main()
+{
+ test02();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
new file mode 100644
index 00000000000..2a94452a10a
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
@@ -0,0 +1,45 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("foo");
+ std::string str2;
+ str2 += str1;
+ VERIFY (str2 == str1);
+ std::string str3;
+ str3.append(str1);
+ VERIFY (str3 == str1);
+ std::string str4;
+ str4.append(str1, 1, 2);
+ VERIFY (str4 == "oo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
new file mode 100644
index 00000000000..5512f060383
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
@@ -0,0 +1,45 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"foo");
+ std::wstring str2;
+ str2 += str1;
+ VERIFY (str2 == str1);
+ std::wstring str3;
+ str3.append(str1);
+ VERIFY (str3 == str1);
+ std::wstring str4;
+ str4.append(str1, 1, 2);
+ VERIFY (str4 == L"oo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
new file mode 100644
index 00000000000..b8955b5cbf3
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
@@ -0,0 +1,42 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("foo");
+ std::string str2;
+ str2.assign(str1);
+ VERIFY (str2 == str1);
+ std::string str4;
+ str4.assign(str1, 1, 2);
+ VERIFY (str4 == "oo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
new file mode 100644
index 00000000000..bde158fb97d
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
@@ -0,0 +1,42 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"foo");
+ std::wstring str2;
+ str2.assign(str1);
+ VERIFY (str2 == str1);
+ std::wstring str4;
+ str4.assign(str1, 1, 2);
+ VERIFY (str4 == L"oo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
new file mode 100644
index 00000000000..71e5165e666
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
@@ -0,0 +1,46 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("foo");
+ std::string str2;
+ str2.insert(0, str1);
+ VERIFY (str2 == str1);
+ str2.insert(3, str1);
+ VERIFY (str2 == "foofoo");
+ std::string str4{str1};
+ str4.insert(3, str1, 1, 2);
+ VERIFY (str4 == "foooo");
+ str4.insert(5, str1, 1, 2);
+ VERIFY (str4 == "foooooo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
new file mode 100644
index 00000000000..6cddcbe9372
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
@@ -0,0 +1,46 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"foo");
+ std::wstring str2;
+ str2.insert(0, str1);
+ VERIFY (str2 == str1);
+ str2.insert(3, str1);
+ VERIFY (str2 == L"foofoo");
+ std::wstring str4{str1};
+ str4.insert(3, str1, 1, 2);
+ VERIFY (str4 == L"foooo");
+ str4.insert(5, str1, 1, 2);
+ VERIFY (str4 == L"foooooo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
new file mode 100644
index 00000000000..004b2358b3c
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
@@ -0,0 +1,54 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("foo");
+ std::string str2("bar");
+ str2.replace(0, 3, str1);
+ VERIFY (str2 == str1);
+ str2 = "foobar";
+ str2.replace(3, 3, str1);
+ VERIFY (str2 == "foofoo");
+ str2 = "foobar";
+ str2.replace(3, 3, str1, 0, 3);
+ VERIFY (str2 == "foofoo");
+ str2 = "foobar";
+ str2.replace(3, 1024, str1, 0, 3);
+ VERIFY (str2 == "foofoo");
+ str2 = "foobar";
+ str2.replace(3, 3, str1, 0, 1024);
+ VERIFY (str2 == "foofoo");
+ str2 = "foobar";
+ str2.replace(str2.begin()+3, str2.begin()+6, str1);
+ VERIFY (str2 == "foofoo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
new file mode 100644
index 00000000000..88d2666da00
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
@@ -0,0 +1,54 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.modifiers]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"foo");
+ std::wstring str2(L"bar");
+ str2.replace(0, 3, str1);
+ VERIFY (str2 == str1);
+ str2 = L"foobar";
+ str2.replace(3, 3, str1);
+ VERIFY (str2 == L"foofoo");
+ str2 = L"foobar";
+ str2.replace(3, 3, str1, 0, 3);
+ VERIFY (str2 == L"foofoo");
+ str2 = L"foobar";
+ str2.replace(3, 1024, str1, 0, 3);
+ VERIFY (str2 == L"foofoo");
+ str2 = L"foobar";
+ str2.replace(3, 3, str1, 0, 1024);
+ VERIFY (str2 == L"foofoo");
+ str2 = L"foobar";
+ str2.replace(str2.begin()+3, str2.begin()+6, str1);
+ VERIFY (str2 == L"foofoo");
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
new file mode 100644
index 00000000000..65474d0e50e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
@@ -0,0 +1,56 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string::compare]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("foobar");
+ std::string str2("foobar");
+
+ auto x = str2.compare(str1);
+ VERIFY (x == 0);
+
+ str1 = "bar";
+ x = str2.compare(str1);
+ VERIFY (x > 0);
+
+ str1 = "foobar";
+ str2 = "bar";
+ x = str2.compare(str1);
+ VERIFY (x < 0);
+ x = str2.compare(0, 3, str1, 3, 3);
+ VERIFY (x == 0);
+
+ str1 = "bar";
+ str2 = "foobar";
+ x = str2.compare(3, 3, str1);
+ VERIFY (x == 0);
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
new file mode 100644
index 00000000000..f7a976070bf
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
@@ -0,0 +1,56 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string::compare]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"foobar");
+ std::wstring str2(L"foobar");
+
+ auto x = str2.compare(str1);
+ VERIFY (x == 0);
+
+ str1 = L"bar";
+ x = str2.compare(str1);
+ VERIFY (x > 0);
+
+ str1 = L"foobar";
+ str2 = L"bar";
+ x = str2.compare(str1);
+ VERIFY (x < 0);
+ x = str2.compare(0, 3, str1, 3, 3);
+ VERIFY (x == 0);
+
+ str1 = L"bar";
+ str2 = L"foobar";
+ x = str2.compare(3, 3, str1);
+ VERIFY (x == 0);
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
new file mode 100644
index 00000000000..7608a0dcb4f
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 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++17" }
+
+// C++17 21.3.1.7 [string.ops] string operations
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ std::string s;
+ char* p = s.data();
+ VERIFY( *p == '\0' );
+ s = "a string that is longer than a short string";
+ p = s.data();
+ VERIFY( p == &s.front() );
+}
+
+int
+main()
+{
+ test01();
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
new file mode 100644
index 00000000000..3c977e05464
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 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++17" }
+
+// C++17 21.3.1.7 [string.ops] string operations
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ std::wstring s;
+ wchar_t* p = s.data();
+ VERIFY( *p == L'\0' );
+ s = L"a string that is longer than a short string";
+ p = s.data();
+ VERIFY( p == &s.front() );
+}
+
+int
+main()
+{
+ test01();
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
new file mode 100644
index 00000000000..930c61a9b5f
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
@@ -0,0 +1,88 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string::find]
+// [string::rfind]
+// [string::find.first.of]
+// [string::find.last.of]
+// [string::find.first.not.of]
+// [string::find.last.not.of]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::string_view str1("bar");
+ std::string str2("foobar");
+
+ auto x = str2.find(str1);
+ VERIFY (x == 3);
+
+ x = str2.find(str1, 1);
+ VERIFY (x == 3);
+
+ str2 = "barbar";
+ x = str2.rfind(str1);
+ VERIFY (x == 3);
+
+ x = str2.rfind(str1, 0);
+ VERIFY (x == 0);
+
+ x = str2.rfind(str1, 3);
+ VERIFY (x == 3);
+
+ str2 = "foobarxyz";
+ str1 = "zyx";
+ x = str2.find_first_of(str1);
+ VERIFY (x == 6);
+
+ str2 = "foobarxyzfooxyz";
+ x = str2.find_first_of(str1);
+ VERIFY (x == 6);
+ x = str2.find_first_of(str1, 9);
+ VERIFY (x == 12);
+ x = str2.find_last_of(str1);
+ VERIFY (x == 14);
+ x = str2.find_last_of(str1, 10);
+ VERIFY (x == 8);
+
+ str2 = "abcabcabcxxx";
+ str1 = "cba";
+ x = str2.find_first_not_of(str1);
+ VERIFY (x == 9);
+
+ str2 = "abcabcabcxxxabcabcxxx";
+ x = str2.find_first_not_of(str1, 12);
+ VERIFY (x == 18);
+
+ str1 = "x";
+ x = str2.find_last_not_of(str1);
+ VERIFY (x == 17);
+ x = str2.find_last_not_of(str1, 11);
+ VERIFY (x == 8);
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
new file mode 100644
index 00000000000..701cc4cca1b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
@@ -0,0 +1,88 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string::find]
+// [string::rfind]
+// [string::find.first.of]
+// [string::find.last.of]
+// [string::find.first.not.of]
+// [string::find.last.not.of]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test __attribute__((unused)) = true;
+ std::wstring_view str1(L"bar");
+ std::wstring str2(L"foobar");
+
+ auto x = str2.find(str1);
+ VERIFY (x == 3);
+
+ x = str2.find(str1, 1);
+ VERIFY (x == 3);
+
+ str2 = L"barbar";
+ x = str2.rfind(str1);
+ VERIFY (x == 3);
+
+ x = str2.rfind(str1, 0);
+ VERIFY (x == 0);
+
+ x = str2.rfind(str1, 3);
+ VERIFY (x == 3);
+
+ str2 = L"foobarxyz";
+ str1 = L"zyx";
+ x = str2.find_first_of(str1);
+ VERIFY (x == 6);
+
+ str2 = L"foobarxyzfooxyz";
+ x = str2.find_first_of(str1);
+ VERIFY (x == 6);
+ x = str2.find_first_of(str1, 9);
+ VERIFY (x == 12);
+ x = str2.find_last_of(str1);
+ VERIFY (x == 14);
+ x = str2.find_last_of(str1, 10);
+ VERIFY (x == 8);
+
+ str2 = L"abcabcabcxxx";
+ str1 = L"cba";
+ x = str2.find_first_not_of(str1);
+ VERIFY (x == 9);
+
+ str2 = L"abcabcabcxxxabcabcxxx";
+ x = str2.find_first_not_of(str1, 12);
+ VERIFY (x == 18);
+
+ str1 = L"x";
+ x = str2.find_last_not_of(str1);
+ VERIFY (x == 17);
+ x = str2.find_last_not_of(str1, 11);
+ VERIFY (x == 8);
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
new file mode 100644
index 00000000000..33520ba85a7
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
@@ -0,0 +1,41 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.accessors]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+int test01(void)
+{
+ bool test __attribute__((unused)) = true;
+
+ std::string_view str1("foo");;
+ std::string str2;
+
+ str2 = str1;
+ VERIFY( str1 == str2 );
+ return 0;
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
new file mode 100644
index 00000000000..235025306ca
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
@@ -0,0 +1,41 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2016 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/>.
+
+// [string.accessors]
+
+#include <string>
+#include <testsuite_hooks.h>
+
+int test01(void)
+{
+ bool test __attribute__((unused)) = true;
+
+ std::wstring_view str1(L"foo");;
+ std::wstring str2;
+
+ str2 = str1;
+ VERIFY( str1 == str2 );
+ return 0;
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
new file mode 100644
index 00000000000..74baee3e1f1
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
@@ -0,0 +1,164 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// string_view size, length
+
+#include <string_view>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+template<typename T>
+ struct A { };
+
+template<typename T>
+ bool
+ operator==(const A<T>&, const A<T>&) { return true; }
+
+template<typename T>
+ bool
+ operator<(const A<T>&, const A<T>&) { return true; }
+
+struct B { };
+
+// char_traits specialization
+namespace std
+{
+ template<>
+ struct char_traits<A<B> >
+ {
+ typedef A<B> char_type;
+ // Unsigned as wint_t in unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ {
+ for (size_t __i = 0; __i < __n; ++__i)
+ if (!eq(__s1[__i], __s2[__i]))
+ return lt(__s1[__i], __s2[__i]) ? -1 : 1;
+ return 0;
+ }
+
+ static size_t
+ length(const char_type* __s)
+ {
+ const char_type* __p = __s;
+ while (__p)
+ ++__p;
+ return (__p - __s);
+ }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ {
+ for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
+ if (*__p == __a) return __p;
+ return 0;
+ }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ {
+ for (char_type* __p = __s; __p < __s + __n; ++__p)
+ assign(*__p, __a);
+ return __s;
+ }
+
+ static char_type
+ to_char_type(const int_type&)
+ { return char_type(); }
+
+ static int_type
+ to_int_type(const char_type&) { return int_type(); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast<int_type>(-1); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
+ };
+} // namespace std
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::basic_string_view<A<B>> str02;
+ typedef std::basic_string_view< A<B> >::size_type size_type_o;
+ size_type_o sz03;
+ size_type_o sz04;
+
+ // non-POD types: size, length, max_size, empty()
+ bool b01 = str02.empty();
+ VERIFY( b01 == true );
+ sz03 = str02.size();
+ sz04 = str02.length();
+ VERIFY( sz03 == sz04 );
+ str02.data();
+ sz03 = str02.size();
+ sz04 = str02.length();
+ VERIFY( sz03 == sz04 );
+
+ sz03 = str02.max_size();
+ VERIFY( sz03 >= sz04 );
+
+ sz03 = str02.size();
+ str02 = {};
+ b01 = str02.empty();
+ VERIFY( b01 == true );
+ sz04 = str02.size();
+ VERIFY( sz03 >= sz04 );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
new file mode 100644
index 00000000000..0534bfb4c88
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
@@ -0,0 +1,69 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view constructors.
+
+#include <string_view>
+#include <string>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+ typedef std::string_view::size_type csize_type;
+
+ // basic_string_view()
+ const std::string_view str00{};
+ VERIFY( str00.length() == 0 );
+ VERIFY( str00.data() == nullptr );
+
+ // basic_string_view(const char*)
+ const char str_lit01[] = "rodeo beach, marin";
+ const std::string_view str01{str_lit01};
+ VERIFY( str01.length() == 18 );
+ VERIFY( str01.data() == str_lit01 );
+ const std::string_view str02{"baker beach, san francisco"};
+ VERIFY( str02.length() == 26 );
+
+ // basic_string_view(const string_view&)
+ std::string_view str04{str01};
+ VERIFY( str04.length() == str01.length() );
+ VERIFY( str04.data() == str01.data() );
+
+ // basic_string_view(const char* s)
+ csize_type len_lit01 = strlen(str_lit01);
+ std::string_view str05{str_lit01, len_lit01};
+ VERIFY( str05.length() == len_lit01 );
+ VERIFY( str05.data() == str_lit01 );
+
+ // basic_string_view(basic_string& s)
+ std::string istr07(10, 'z');
+ std::string_view str07{istr07};
+ VERIFY( str07.length() == 10 );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
new file mode 100644
index 00000000000..331dd426625
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
@@ -0,0 +1,48 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view constructors.
+
+#include <new>
+#include <string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+void
+test03()
+{
+ bool test [[gnu::unused]] = true;
+ const char* with_nulls = "This contains \0 a zero byte.";
+
+ // These are tests to see how basic_string_view handles data with NUL
+ // bytes. Obviously basic_string_view(char*) will halt at the first one, but
+ // nothing else should.
+ std::string_view s1(with_nulls, 28);
+ VERIFY( s1.size() == 28 );
+ std::string_view s2(s1);
+ VERIFY( s2.size() == 28 );
+}
+
+int
+main()
+{
+ test03();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
new file mode 100644
index 00000000000..604adedd817
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
@@ -0,0 +1,41 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view constructors.
+
+#include <string_view>
+#include <vector>
+#include <testsuite_hooks.h>
+
+void
+test05()
+{
+ bool test [[gnu::unused]] = true;
+
+ char const * s = 0;
+ std::string_view zero_length_built_with_NULL(s, 0);
+}
+
+int
+main()
+{
+ test05();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
new file mode 100644
index 00000000000..ba8bb9037ef
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
@@ -0,0 +1,69 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view constructors.
+
+#include <string_view>
+#include <string>
+#include <cwchar>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+ typedef std::wstring_view::size_type csize_type;
+
+ // basic_string_view()
+ const std::wstring_view str00{};
+ VERIFY( str00.length() == 0 );
+ VERIFY( str00.data() == nullptr );
+
+ // basic_string_view(const char*)
+ const wchar_t str_lit01[] = L"rodeo beach, marin";
+ const std::wstring_view str01{str_lit01};
+ VERIFY( str01.length() == 18 );
+ VERIFY( str01.data() == str_lit01 );
+ const std::wstring_view str02{L"baker beach, san francisco"};
+ VERIFY( str02.length() == 26 );
+
+ // basic_string_view(const string_view&)
+ std::wstring_view str04{str01};
+ VERIFY( str04.length() == str01.length() );
+ VERIFY( str04.data() == str01.data() );
+
+ // basic_string_view(const char* s)
+ csize_type len_lit01 = wcslen(str_lit01);
+ std::wstring_view str05{str_lit01, len_lit01};
+ VERIFY( str05.length() == len_lit01 );
+ VERIFY( str05.data() == str_lit01 );
+
+ // basic_string_view(basic_string& s)
+ std::wstring istr07(10, L'z');
+ std::wstring_view str07{istr07};
+ VERIFY( str07.length() == 10 );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/typedefs.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
index 1d055061522..7dbc60c66c2 100644
--- a/libstdc++-v3/testsuite/20_util/has_trivial_copy_constructor/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
@@ -1,36 +1,46 @@
-// { dg-options "-std=gnu++11 -Wno-deprecated" }
-// 2004-12-30 Paolo Carlini <pcarlini@suse.de>
-//
-// Copyright (C) 2004-2016 Free Software Foundation, Inc.
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
-//
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+// basic_string_view constructors.
-#include <type_traits>
+#include <string_view>
+#include <testsuite_hooks.h>
-// { dg-do compile }
-
-void test01()
+void
+test03()
{
- // Check for required typedefs
- typedef std::has_trivial_copy_constructor<int> test_type;
- typedef test_type::value_type value_type;
- typedef test_type::type type;
- typedef test_type::type::value_type type_value_type;
- typedef test_type::type::type type_type;
+ bool test [[gnu::unused]] = true;
+ const wchar_t* with_nulls = L"This contains \0 a zero byte.";
+
+ // These are tests to see how basic_string_view handles data with NUL
+ // bytes. Obviously basic_string_view(char*) will halt at the first one, but
+ // nothing else should.
+ std::wstring_view s1 (with_nulls, 28);
+ VERIFY( s1.size() == 28 );
+ std::wstring_view s2 (s1);
+ VERIFY( s2.size() == 28 );
+}
+
+int
+main()
+{
+ test03();
+
+ return 0;
}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
new file mode 100644
index 00000000000..4fed4e222d8
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
@@ -0,0 +1,40 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view constructors.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test05()
+{
+ bool test [[gnu::unused]] = true;
+
+ wchar_t const * s = 0;
+ std::wstring_view zero_length_built_with_NULL(s, 0);
+}
+
+int
+main()
+{
+ test05();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
new file mode 100644
index 00000000000..1638b0e1104
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
@@ -0,0 +1,74 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string element access
+
+#include <string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ typedef std::string_view::const_reference cref;
+ typedef std::string_view::reference ref;
+ csize_type csz01, csz02;
+
+ const std::string_view str01("tamarindo, costa rica");
+ std::string_view str02("41st street beach, capitola, california");
+ std::string_view str03;
+
+ // const_reference operator[] (size_type pos) const;
+ csz01 = str01.size();
+ cref cref1 = str01[csz01 - 1];
+ VERIFY( cref1 == 'a' );
+ // Undefined behavior at size().
+ //cref cref2 = str01[csz01];
+ //VERIFY( cref2 == char() );
+
+ // const_reference at(size_type pos) const;
+ csz01 = str01.size();
+ cref cref3 = str01.at(csz01 - 1);
+ VERIFY( cref3 == 'a' );
+ try
+ {
+ str01.at(csz01);
+ VERIFY( false ); // Should not get here, as exception thrown.
+ }
+ catch (std::out_of_range& fail)
+ {
+ VERIFY( true );
+ }
+ catch (...)
+ {
+ VERIFY( false );
+ }
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
new file mode 100644
index 00000000000..e2a1e69f3dc
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
@@ -0,0 +1,30 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-options "-std=gnu++17 -O0" }
+// { dg-require-debug-mode "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+int
+main()
+{
+ typedef std::string_view string_view_type;
+ string_view_type s;
+ s[0]; // abort
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
new file mode 100644
index 00000000000..c0f820617d9
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
@@ -0,0 +1,40 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 3 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/>.
+//
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+main()
+{
+ bool test [[gnu::unused]] = true;
+
+ {
+ std::string_view empty;
+ VERIFY( empty.empty() );
+ }
+
+ {
+ const std::string_view empty;
+ VERIFY( empty.empty() );
+ }
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
new file mode 100644
index 00000000000..308d1e07f7b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+// { dg-require-string-conversions "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::string_view str("ramifications");
+ const std::string_view cstr("melodien");
+
+ VERIFY( str.front() == 'r' );
+ VERIFY( str.back() == 's' );
+ VERIFY( cstr.front() == 'm' );
+ VERIFY( cstr.back() == 'n' );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
new file mode 100644
index 00000000000..7e035fe39cf
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
@@ -0,0 +1,75 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view element access
+
+#include <string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ typedef std::wstring_view::const_reference cref;
+ typedef std::wstring_view::reference ref;
+ csize_type csz01, csz02;
+
+ const std::wstring_view str01(L"tamarindo, costa rica");
+ std::wstring_view str02(L"41st street beach, capitola, california");
+ std::wstring_view str03;
+
+ // const_reference operator[] (size_type pos) const;
+ csz01 = str01.size();
+ cref cref1 = str01[csz01 - 1];
+ VERIFY( cref1 == L'a' );
+ // Undefined behavior at size().
+ //cref cref2 = str01[csz01];
+ //VERIFY( cref2 == wchar_t() );
+
+ // const_reference at(size_type pos) const;
+ csz01 = str01.size();
+ cref cref3 = str01.at(csz01 - 1);
+ VERIFY( cref3 == L'a' );
+ try
+ {
+ str01.at(csz01);
+ VERIFY( false ); // Should not get here, as exception thrown.
+ }
+ catch (std::out_of_range& fail)
+ {
+ VERIFY( true );
+ }
+ catch (...)
+ {
+ VERIFY( false );
+ }
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
new file mode 100644
index 00000000000..0c4aab77468
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
@@ -0,0 +1,32 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-options "-std=gnu++17 -O0" }
+// { dg-require-debug-mode "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+// libstdc++/21674
+// NB: Should work without any inlining or optimizations (ie. -O0).
+int
+main()
+{
+ typedef std::wstring_view string_view_type;
+ string_view_type s;
+ s[0]; // abort
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
new file mode 100644
index 00000000000..c8896e1b27f
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
@@ -0,0 +1,40 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+//
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+main()
+{
+ bool test [[gnu::unused]] = true;
+
+ {
+ std::wstring_view empty;
+ VERIFY( empty.empty() );
+ }
+
+ {
+ const std::wstring_view empty;
+ VERIFY( empty.empty() );
+ }
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
new file mode 100644
index 00000000000..b3340619424
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+// { dg-require-string-conversions "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::wstring_view str(L"ramifications");
+ const std::wstring_view cstr(L"melodien");
+
+ VERIFY( str.front() == L'r' );
+ VERIFY( str.back() == L's' );
+ VERIFY( cstr.front() == L'm' );
+ VERIFY( cstr.back() == L'n' );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
new file mode 100644
index 00000000000..10594ed5bbd
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
@@ -0,0 +1,25 @@
+// -*- C++ -*-
+
+// Copyright (C) 2013-2016 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/>.
+
+// NB: This issue affected only debug-mode.
+
+// { dg-options "-std=gnu++17 -fno-rtti" }
+// { dg-do compile }
+
+#include <string_view>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
new file mode 100644
index 00000000000..7cef69487be
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
@@ -0,0 +1,69 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, istreams, and ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+#include <string_view>
+#include <stdexcept>
+#include <sstream>
+#include <fstream>
+#include <iostream>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ typedef std::string_view::const_reference cref;
+ typedef std::string_view::reference ref;
+
+ const std::string_view str01("sailing grand traverse bay\n"
+ "\t\t\t from Elk Rapids to the point reminds me of miles");
+
+ // ostream& operator<<(ostream&, const basic_string_view&)
+ std::ostringstream ostrs01;
+ try
+ {
+ ostrs01 << str01;
+ VERIFY( ostrs01.str() == str01 );
+ }
+ catch(std::exception& fail)
+ {
+ VERIFY( false );
+ }
+
+ std::string_view hello_world;
+ std::cout << hello_world;
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
new file mode 100644
index 00000000000..441a40398c3
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
@@ -0,0 +1,93 @@
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+// { dg-options "-std=gnu++17" }
+// { dg-require-fileio "" }
+
+#include <string_view>
+#include <string>
+#include <fstream>
+#include <iostream>
+#include <testsuite_hooks.h>
+
+// testing basic_filebuf::xsputn via stress testing with large string_views
+// based on a bug report libstdc++ 9
+// mode == out
+void
+test05(std::size_t size)
+{
+ bool test [[gnu::unused]] = true;
+
+ const char filename[] = "inserters_extractors-2.txt";
+ const char fillc = 'f';
+ std::ofstream ofs(filename);
+ std::string str(size, fillc);
+ std::string_view strv{str};
+
+ // sanity checks
+ VERIFY( str.size() == size );
+ VERIFY( ofs.good() );
+
+ // stress test
+ ofs << str << std::endl;
+ if (!ofs.good())
+ test = false;
+
+ ofs << str << std::endl;
+ if (!ofs.good())
+ test = false;
+
+ VERIFY( str.size() == size );
+ VERIFY( ofs.good() );
+
+ ofs.close();
+
+ // sanity check on the written file
+ std::ifstream ifs(filename);
+ std::size_t count = 0;
+ char c;
+ while (count <= (2 * size) + 4)
+ {
+ ifs >> c;
+ if (ifs.good() && c == fillc)
+ {
+ ++count;
+ c = '0';
+ }
+ else
+ break;
+ }
+
+ VERIFY( count == 2 * size );
+}
+
+int
+main()
+{
+ test05(1);
+ test05(1000);
+ test05(10000);
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
new file mode 100644
index 00000000000..9a8e814bbcc
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
@@ -0,0 +1,56 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, and ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+#include <string_view>
+#include <sstream>
+#include <iomanip>
+#include <testsuite_hooks.h>
+
+// libstdc++/2830
+void
+test09()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::string_view foo{"peace\0\0\0& love"};
+
+ std::ostringstream oss1;
+ oss1 << foo;
+ VERIFY( oss1.str() == foo );
+
+ std::ostringstream oss2;
+ oss2.width(20);
+ oss2 << foo;
+ VERIFY( oss2.str() != foo );
+ VERIFY( oss2.str().size() == 20 );
+}
+
+int
+main()
+{
+ test09();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
new file mode 100644
index 00000000000..27a52f90c80
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
@@ -0,0 +1,77 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// class basic_istream::sentry
+
+#include <string_view>
+#include <ostream>
+#include <sstream>
+#include <locale>
+#include <typeinfo>
+#include <testsuite_hooks.h>
+#include <testsuite_character.h>
+
+void
+test01()
+{
+ using namespace std;
+
+ using __gnu_test::pod_ushort;
+ typedef basic_string_view<pod_ushort> string_type;
+ typedef basic_stringbuf<pod_ushort> stringbuf_type;
+ typedef basic_ostream<pod_ushort> ostream_type;
+
+ bool test [[gnu::unused]] = true;
+
+ string_type str;
+ stringbuf_type strbuf01;
+ ostream_type stream(&strbuf01);
+
+ try
+ {
+ stream << str;
+ }
+ catch (std::bad_cast& obj)
+ {
+ // Ok, throws bad_cast because locale has no ctype facet.
+ }
+ catch (...)
+ {
+ VERIFY( false );
+ }
+
+ const std::locale loc(std::locale::classic(), new std::ctype<pod_ushort>);
+ stream.imbue(loc);
+ try
+ {
+ stream << str;
+ }
+ catch (...)
+ {
+ VERIFY( false );
+ }
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
new file mode 100644
index 00000000000..37af0bc1054
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
@@ -0,0 +1,74 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, and ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+#include <string_view>
+#include <stdexcept>
+#include <sstream>
+#include <fstream>
+#include <iostream>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ typedef std::wstring_view::const_reference cref;
+ typedef std::wstring_view::reference ref;
+
+ const std::wstring_view str01(L"sailing grand traverse bay\n"
+ L"\t\t\t from Elk Rapids to the point reminds me of miles");
+ const std::wstring_view str02(L"sailing");
+ const std::wstring_view str03(L"grand");
+ const std::wstring_view str04(L"traverse");
+ const std::wstring_view str05;
+ std::wstring_view str10;
+
+ // ostream& operator<<(ostream&, const basic_string_view&)
+ std::wostringstream ostrs01;
+ try
+ {
+ ostrs01 << str01;
+ VERIFY( ostrs01.str() == str01 );
+ }
+ catch(std::exception& fail)
+ {
+ VERIFY( false );
+ }
+
+ std::wstring_view hello_world;
+ std::wcout << hello_world;
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
new file mode 100644
index 00000000000..86fe7278547
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
@@ -0,0 +1,91 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, istreams, and ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+#include <string_view>
+#include <string>
+#include <fstream>
+#include <iostream>
+#include <testsuite_hooks.h>
+
+// testing basic_filebuf::xsputn via stress testing with large string_views
+// based on a bug report libstdc++ 9
+// mode == out
+void
+test05(std::size_t size)
+{
+ bool test [[gnu::unused]] = true;
+
+ const char filename[] = "inserters_extractors-2.txt";
+ const wchar_t fillc = L'f';
+ std::wofstream ofs(filename);
+ std::wstring str(size, fillc);
+ std::wstring_view strv(str);
+
+ // sanity checks
+ VERIFY( str.size() == size );
+ VERIFY( ofs.good() );
+
+ // stress test
+ ofs << str << std::endl;
+ if (!ofs.good())
+ test = false;
+
+ ofs << str << std::endl;
+ if (!ofs.good())
+ test = false;
+
+ VERIFY( str.size() == size );
+ VERIFY( ofs.good() );
+
+ ofs.close();
+
+ // sanity check on the written file
+ std::wifstream ifs(filename);
+ std::size_t count = 0;
+ wchar_t c;
+ while (count <= (2 * size) + 4)
+ {
+ ifs >> c;
+ if (ifs.good() && c == fillc)
+ {
+ ++count;
+ c = '0';
+ }
+ else
+ break;
+ }
+
+ VERIFY( count == 2 * size );
+}
+
+int
+main()
+{
+ test05(1);
+ test05(1000);
+ test05(10000);
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
new file mode 100644
index 00000000000..e3af23cf287
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
@@ -0,0 +1,55 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// inserters
+
+// NB: This file is predicated on sstreams, istreams, and ostreams
+// working, not to mention other major details like char_traits, and
+// all of the string_view class.
+
+#include <string_view>
+#include <sstream>
+#include <iomanip>
+#include <testsuite_hooks.h>
+
+void
+test09()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::wstring_view foo{L"peace\0\0\0& love"};
+
+ std::wostringstream oss1;
+ oss1 << foo;
+ VERIFY( oss1.str() == foo );
+
+ std::wostringstream oss2;
+ oss2.width(20);
+ oss2 << foo;
+ VERIFY( oss2.str() != foo );
+ VERIFY( oss2.str().size() == 20 );
+}
+
+int
+main()
+{
+ test09();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
new file mode 100644
index 00000000000..5f2bd755af9
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::string_view;
+
+ string_view str0{"olympus mons"};
+ string_view::pointer p = str0.data();
+ str0.remove_prefix(4);
+ VERIFY( str0.data() == p + 4);
+ VERIFY( str0.length() == 8 );
+ VERIFY( str0 == string_view{"pus mons"} );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
new file mode 100644
index 00000000000..2f7169431c6
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::wstring_view;
+
+ wstring_view str0{L"olympus mons"};
+ wstring_view::pointer p = str0.data();
+ str0.remove_prefix(4);
+ VERIFY( str0.data() == p + 4);
+ VERIFY( str0.length() == 8 );
+ VERIFY( str0 == wstring_view{L"pus mons"} );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
new file mode 100644
index 00000000000..a6eb5c52a5d
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::string_view;
+
+ string_view str0{"olympus mons"};
+ string_view::pointer p = str0.data();
+ str0.remove_suffix(2);
+ VERIFY( str0.data() == p);
+ VERIFY( str0.length() == 10 );
+ VERIFY( str0 == string_view{"olympus mo"} );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
new file mode 100644
index 00000000000..3162e2bbc06
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
@@ -0,0 +1,44 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::wstring_view;
+
+ wstring_view str0{L"olympus mons"};
+ wstring_view::pointer p = str0.data();
+ str0.remove_suffix(2);
+ VERIFY( str0.data() == p);
+ VERIFY( str0.length() == 10 );
+ VERIFY( str0 == wstring_view{L"olympus mo"} );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
new file mode 100644
index 00000000000..77188b3eba1
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
@@ -0,0 +1,134 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::compare
+// int compare(const basic_string_view& str) const;
+// int compare(size_type pos1, size_type n1, const basic_string_view& str) const;
+// int compare(size_type pos1, size_type n1, const basic_string_view& str,
+// size_type pos2, size_type n2) const;
+// int compare(const charT* s) const;
+// int compare(size_type pos1, size_type n1,
+// const charT* s, size_type n2 = npos) const;
+
+// NB compare should be thought of as a lexographical compare, ie how
+// things would be sorted in a dictionary.
+
+#include <string_view>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+enum want_value {lt=0, z=1, gt=2};
+
+int
+test_value(int result, want_value expected);
+
+int
+test_value(int result, want_value expected)
+{
+ bool test [[gnu::unused]] = true;
+ bool pass = false;
+
+ switch (expected) {
+ case lt:
+ if (result < 0)
+ pass = true;
+ break;
+ case z:
+ if (!result)
+ pass = true;
+ break;
+ case gt:
+ if (result > 0)
+ pass = true;
+ break;
+ default:
+ pass = false; //should not get here
+ }
+ VERIFY(pass);
+ return 0;
+}
+
+
+int
+test01()
+{
+ using std::string_view;
+
+ string_view str_0("costa rica");
+ string_view str_1("costa marbella");
+ string_view str_2;
+
+ //sanity check
+ test_value(strcmp("costa marbella", "costa rica"), lt);
+ test_value(strcmp("costa rica", "costa rica"), z);
+ test_value(strcmp(str_1.data(), str_0.data()), lt);
+ test_value(strcmp(str_0.data(), str_1.data()), gt);
+ test_value(strncmp(str_1.data(), str_0.data(), 6), z);
+ test_value(strncmp(str_1.data(), str_0.data(), 14), lt);
+ test_value(memcmp(str_1.data(), str_0.data(), 6), z);
+ test_value(memcmp(str_1.data(), str_0.data(), 14), lt);
+ test_value(memcmp("costa marbella", "costa rica", 14), lt);
+
+ // int compare(const basic_string_view& str) const;
+ test_value(str_0.compare(str_1), gt); //because r>m
+ test_value(str_1.compare(str_0), lt); //because m<r
+ str_2 = str_0;
+ test_value(str_2.compare(str_0), z);
+ str_2 = "cost";
+ test_value(str_2.compare(str_0), lt);
+ str_2 = "costa ricans";
+ test_value(str_2.compare(str_0), gt);
+
+ // int compare(size_type pos1, size_type n1, const basic_string_view& str) const;
+ test_value(str_1.compare(0, 6, str_0), lt);
+ str_2 = "cost";
+ test_value(str_1.compare(0, 4, str_2), z);
+ test_value(str_1.compare(0, 5, str_2), gt);
+
+ // int compare(size_type pos1, size_type n1, const basic_string_view& str,
+ // size_type pos2, size_type n2) const;
+ test_value(str_1.compare(0, 6, str_0, 0, 6), z);
+ test_value(str_1.compare(0, 7, str_0, 0, 7), lt);
+ test_value(str_0.compare(0, 7, str_1, 0, 7), gt);
+
+ // int compare(const charT* s) const;
+ test_value(str_0.compare("costa marbella"), gt);
+ test_value(str_1.compare("costa rica"), lt);
+ str_2 = str_0;
+ test_value(str_2.compare("costa rica"), z);
+ test_value(str_2.compare("cost"), gt);
+ test_value(str_2.compare("costa ricans"), lt);
+
+ // int compare(size_type pos, size_type n1, const charT* str,
+ // size_type n2 = npos) const;
+ test_value(str_1.compare(0, 6, "costa rica", 0, 6), z);
+ test_value(str_1.compare(0, 7, "costa rica", 0, 7), lt);
+ test_value(str_0.compare(0, 7, "costa marbella", 0, 7), gt);
+
+ return 0;
+}
+
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
new file mode 100644
index 00000000000..9e22a46b00b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
@@ -0,0 +1,51 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::compare [lib.string_view::compare]
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// libstdc++/13650
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::string_view;
+
+ const char lit_01[]{ 'w', 'e', '\0', 'r', 'd' };
+ const char lit_02[]{ 'w', 'e', 'i', '\0', 'd' };
+
+ const char lit_ref_a[]{ 'w', 'e', '\0', 'q', 'd' };
+ const string_view str_a(lit_ref_a, 5);
+ VERIFY( str_a.compare(0, 5, lit_01, 5) < 0 );
+
+ const char lit_ref_b[]{ 'w', 'e', 'i' };
+ const string_view str_b(lit_ref_b, 3);
+ VERIFY( str_b.compare(0, 3, lit_02, 5) < 0 );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
new file mode 100644
index 00000000000..8bf70ec79d7
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
@@ -0,0 +1,134 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::compare
+// int compare(const basic_string_view& str) const;
+// int compare(size_type pos1, size_type n1, const basic_string_view& str) const;
+// int compare(size_type pos1, size_type n1, const basic_string_view& str,
+// size_type pos2, size_type n2) const;
+// int compare(const charT* s) const;
+// int compare(size_type pos1, size_type n1,
+// const charT* s, size_type n2 = npos) const;
+
+// NB compare should be thought of as a lexographical compare, ie how
+// things would be sorted in a dictionary.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+enum want_value {lt=0, z=1, gt=2};
+
+int
+test_value(int result, want_value expected);
+
+int
+test_value(int result, want_value expected)
+{
+ bool test [[gnu::unused]] = true;
+ bool pass = false;
+
+ switch (expected) {
+ case lt:
+ if (result < 0)
+ pass = true;
+ break;
+ case z:
+ if (!result)
+ pass = true;
+ break;
+ case gt:
+ if (result > 0)
+ pass = true;
+ break;
+ default:
+ pass = false; //should not get here
+ }
+
+ VERIFY(pass);
+ return 0;
+}
+
+
+int
+test01()
+{
+ using std::wstring_view;
+
+ wstring_view str_0(L"costa rica");
+ wstring_view str_1(L"costa marbella");
+ wstring_view str_2;
+
+ //sanity check
+ test_value(wcscmp(L"costa marbella", L"costa rica"), lt);
+ test_value(wcscmp(L"costa rica", L"costa rica"), z);
+ test_value(wcscmp(str_1.data(), str_0.data()), lt);
+ test_value(wcscmp(str_0.data(), str_1.data()), gt);
+ test_value(wcsncmp(str_1.data(), str_0.data(), 6), z);
+ test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt);
+ test_value(wmemcmp(str_1.data(), str_0.data(), 6), z);
+ test_value(wmemcmp(str_1.data(), str_0.data(), 14), lt);
+ test_value(wmemcmp(L"costa marbella", L"costa rica", 14), lt);
+
+ // int compare(const basic_string_view& str) const;
+ test_value(str_0.compare(str_1), gt); //because r>m
+ test_value(str_1.compare(str_0), lt); //because m<r
+ str_2 = str_0;
+ test_value(str_2.compare(str_0), z);
+ str_2 = L"cost";
+ test_value(str_2.compare(str_0), lt);
+ str_2 = L"costa ricans";
+ test_value(str_2.compare(str_0), gt);
+
+ // int compare(size_type pos1, size_type n1, const basic_string_view& str) const;
+ test_value(str_1.compare(0, 6, str_0), lt);
+ str_2 = L"cost";
+ test_value(str_1.compare(0, 4, str_2), z);
+ test_value(str_1.compare(0, 5, str_2), gt);
+
+ // int compare(size_type pos1, size_type n1, const basic_string_view& str,
+ // size_type pos2, size_type n2) const;
+ test_value(str_1.compare(0, 6, str_0, 0, 6), z);
+ test_value(str_1.compare(0, 7, str_0, 0, 7), lt);
+ test_value(str_0.compare(0, 7, str_1, 0, 7), gt);
+
+ // int compare(const charT* s) const;
+ test_value(str_0.compare(L"costa marbella"), gt);
+ test_value(str_1.compare(L"costa rica"), lt);
+ str_2 = str_0;
+ test_value(str_2.compare(L"costa rica"), z);
+ test_value(str_2.compare(L"cost"), gt);
+ test_value(str_2.compare(L"costa ricans"), lt);
+
+ // int compare(size_type pos, size_type n1, const charT* str,
+ // size_type n2 = npos) const;
+ test_value(str_1.compare(0, 6, L"costa rica", 0, 6), z);
+ test_value(str_1.compare(0, 7, L"costa rica", 0, 7), lt);
+ test_value(str_0.compare(0, 7, L"costa marbella", 0, 7), gt);
+
+ return 0;
+}
+
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
new file mode 100644
index 00000000000..fc3c197ca8b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
@@ -0,0 +1,51 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::compare [lib.string_view::compare]
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// libstdc++/13650
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ using std::wstring_view;
+
+ const wchar_t lit_01[] = { L'w', L'e', L'\0', L'r', L'd' };
+ const wchar_t lit_02[] = { L'w', L'e', L'i', L'\0', L'd' };
+
+ const wchar_t lit_ref_a[] = { L'w', L'e', L'\0', L'q', L'd' };
+ const wstring_view str_a(lit_ref_a, 5);
+ VERIFY( str_a.compare(0, 5, lit_01, 5) < 0 );
+
+ const wchar_t lit_ref_b[] = { L'w', L'e', L'i' };
+ const wstring_view str_b(lit_ref_b, 3);
+ VERIFY( str_b.compare(0, 3, lit_02, 5) < 0 );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
new file mode 100644
index 00000000000..a583e13a2b1
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
@@ -0,0 +1,49 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::copy
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+
+ const char str_lit01[] = "123456789A";
+ const std::string_view str01(str_lit01);
+ char buffer[4] = { 0 };
+
+ csize_type len = str01.copy(buffer, sizeof(buffer), 8);
+ VERIFY( 2 == len );
+ VERIFY( '9' == buffer[0] );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
new file mode 100644
index 00000000000..94fa0d43083
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
@@ -0,0 +1,50 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::copy
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ csize_type csz01;
+
+ const wchar_t str_lit01[] = L"123456789A";
+ const std::wstring_view str01(str_lit01);
+ wchar_t buffer[4] = { 0 };
+
+ csize_type len = str01.copy(buffer, sizeof(buffer), 8);
+ VERIFY( 2 == len );
+ VERIFY( L'9' == buffer[0] );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
new file mode 100644
index 00000000000..63eba230ffa
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
@@ -0,0 +1,45 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2014 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/>.
+
+// string_view operations
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::string_view empty;
+
+ VERIFY( empty.size() == 0 );
+ const std::string_view::value_type* p = empty.data();
+ VERIFY( p == nullptr );
+
+ return 0;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
new file mode 100644
index 00000000000..86da7df69b0
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
@@ -0,0 +1,45 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2014 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/>.
+
+// string_view operations
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::wstring_view empty;
+
+ VERIFY( empty.size() == 0 );
+ const std::wstring_view::value_type* p = empty.data();
+ VERIFY( p == nullptr );
+
+ return 0;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
new file mode 100644
index 00000000000..835c78b3897
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
@@ -0,0 +1,98 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ typedef std::string_view::const_reference cref;
+ typedef std::string_view::reference ref;
+ csize_type npos = std::string_view::npos;
+ csize_type csz01, csz02;
+
+ const char str_lit01[] = "mave";
+ const std::string_view str01("mavericks, santa cruz");
+ std::string_view str02(str_lit01);
+ std::string_view str03("s, s");
+ std::string_view str04;
+
+ // size_type find(const string_view&, size_type pos = 0) const;
+ csz01 = str01.find(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str01, 4);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str02, 3);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find(str03, 3);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find(str03, 12);
+ VERIFY( csz01 == npos );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ csz01 = str01.find(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str04, 5);
+ VERIFY( csz01 == 5 );
+ csz01 = str01.find(str04, str01.size());
+ VERIFY( csz01 == str01.size() );
+ csz01 = str01.find(str04, str01.size()+1);
+ VERIFY( csz01 == npos );
+
+ // size_type find(const char* s, size_type pos, size_type n) const;
+ csz01 = str01.find(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str_lit01, 3, 0);
+ VERIFY( csz01 == 3 );
+
+ // size_type find(const char* s, size_type pos = 0) const;
+ csz01 = str01.find(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str_lit01, 3);
+ VERIFY( csz01 == npos );
+
+ // size_type find(char c, size_type pos = 0) const;
+ csz01 = str01.find('z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+ csz01 = str01.find('/');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
new file mode 100644
index 00000000000..4417bfe7a3d
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
@@ -0,0 +1,97 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find_first_of
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test02()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ csize_type npos = std::string_view::npos;
+ csize_type csz01, csz02;
+
+ const char str_lit01[] = "mave";
+ const std::string_view str01("mavericks, santa cruz");
+ std::string_view str02(str_lit01);
+ std::string_view str03("s, s");
+ std::string_view str04;
+
+ // size_type find_first_of(const string_view&, size_type pos = 0) const;
+ std::string_view str05("xena rulez");
+ csz01 = str01.find_first_of(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str01, 4);
+ VERIFY( csz01 == 4 );
+ csz01 = str01.find_first_of(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str02, 3);
+ VERIFY( csz01 == 3 );
+ csz01 = str01.find_first_of(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_of(str03, 3);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_of(str03, 12);
+ VERIFY( csz01 == 16 );
+ csz01 = str01.find_first_of(str05, 0);
+ VERIFY( csz01 == 1 );
+ csz01 = str01.find_first_of(str05, 4);
+ VERIFY( csz01 == 4 );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ // However, str1.find_first_of(str2,pos) finds the first character in
+ // str1 (starting at pos) that exists in str2, which is none for empty str2
+ csz01 = str01.find_first_of(str04, 0);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_of(str04, 5);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_of(const char* s, size_type pos, size_type n) const;
+ csz01 = str01.find_first_of(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str_lit01, 3, 0);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_of(const char* s, size_type pos = 0) const;
+ csz01 = str01.find_first_of(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str_lit01, 3);
+ VERIFY( csz01 == 3 );
+
+ // size_type find_first_of(char c, size_type pos = 0) const;
+ csz01 = str01.find_first_of('z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+
+ return test;
+}
+
+int
+main()
+{
+ test02();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
new file mode 100644
index 00000000000..4861065042c
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
@@ -0,0 +1,97 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find_first_not_of
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test03()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ csize_type npos = std::string_view::npos;
+ csize_type csz01;
+
+ const std::string_view str01("Bob Rock, per me");
+ const char str_lit01[] = "Bob Rock";
+ std::string_view str02("ovvero Trivi");
+ std::string_view str03(str_lit01);
+ std::string_view str04;
+
+ // size_type find_first_not_of(const string_view&, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of(str01);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_not_of(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str02, 10);
+ VERIFY( csz01 == 10 );
+ csz01 = str01.find_first_not_of(str02, 12);
+ VERIFY( csz01 == 14 );
+ csz01 = str01.find_first_not_of(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_not_of(str03, 15);
+ VERIFY( csz01 == 15 );
+ csz01 = str01.find_first_not_of(str03, 16);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_not_of(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str04, 12);
+ VERIFY( csz01 == 12 );
+ csz01 = str03.find_first_not_of(str01, 0);
+ VERIFY( csz01 == npos );
+ csz01 = str04.find_first_not_of(str02, 0);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_not_of(const char* s, size_type pos, size_type n) const;
+ csz01 = str01.find_first_not_of(str_lit01, 0, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str_lit01, 0, 8);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_not_of(str_lit01, 10, 0);
+ VERIFY( csz01 == 10 );
+
+ // size_type find_first_not_of(const char* s, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of(str_lit01);
+ VERIFY( csz01 == 8 );
+ csz01 = str02.find_first_not_of(str_lit01, 2);
+ VERIFY( csz01 == 2 );
+
+ // size_type find_first_not_of(char c, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of('B');
+ VERIFY( csz01 == 1 );
+ csz01 = str01.find_first_not_of('o', 1);
+ VERIFY( csz01 == 2 );
+ csz01 = str02.find_first_not_of('z');
+ VERIFY( csz01 == 0 );
+ csz01 = str04.find_first_not_of('S');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test03();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
new file mode 100644
index 00000000000..6d491224808
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
@@ -0,0 +1,46 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// libstdc++/31401
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ csize_type npos = std::string_view::npos;
+
+ std::string_view use = "anu";
+ csize_type pos1 = use.find("a", npos);
+
+ VERIFY( pos1 == npos );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
new file mode 100644
index 00000000000..fb147a0a838
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
@@ -0,0 +1,98 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ typedef std::wstring_view::const_reference cref;
+ typedef std::wstring_view::reference ref;
+ csize_type npos = std::wstring_view::npos;
+ csize_type csz01, csz02;
+
+ const wchar_t str_lit01[] = L"mave";
+ const std::wstring_view str01(L"mavericks, santa cruz");
+ std::wstring_view str02(str_lit01);
+ std::wstring_view str03(L"s, s");
+ std::wstring_view str04;
+
+ // size_type find(const wstring_view&, size_type pos = 0) const;
+ csz01 = str01.find(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str01, 4);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str02, 3);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find(str03, 3);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find(str03, 12);
+ VERIFY( csz01 == npos );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ csz01 = str01.find(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str04, 5);
+ VERIFY( csz01 == 5 );
+ csz01 = str01.find(str04, str01.size());
+ VERIFY( csz01 == str01.size() );
+ csz01 = str01.find(str04, str01.size()+1);
+ VERIFY( csz01 == npos );
+
+ // size_type find(const wchar_t* s, size_type pos, size_type n) const;
+ csz01 = str01.find(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str_lit01, 3, 0);
+ VERIFY( csz01 == 3 );
+
+ // size_type find(const wchar_t* s, size_type pos = 0) const;
+ csz01 = str01.find(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find(str_lit01, 3);
+ VERIFY( csz01 == npos );
+
+ // size_type find(wchar_t c, size_type pos = 0) const;
+ csz01 = str01.find(L'z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+ csz01 = str01.find(L'/');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
new file mode 100644
index 00000000000..0373a9c429e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
@@ -0,0 +1,97 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find_first_of
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test02()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ csize_type npos = std::wstring_view::npos;
+ csize_type csz01, csz02;
+
+ const wchar_t str_lit01[] = L"mave";
+ const std::wstring_view str01(L"mavericks, santa cruz");
+ std::wstring_view str02(str_lit01);
+ std::wstring_view str03(L"s, s");
+ std::wstring_view str04;
+
+ // size_type find_first_of(const wstring_view&, size_type pos = 0) const;
+ std::wstring_view str05(L"xena rulez");
+ csz01 = str01.find_first_of(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str01, 4);
+ VERIFY( csz01 == 4 );
+ csz01 = str01.find_first_of(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str02, 3);
+ VERIFY( csz01 == 3 );
+ csz01 = str01.find_first_of(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_of(str03, 3);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_of(str03, 12);
+ VERIFY( csz01 == 16 );
+ csz01 = str01.find_first_of(str05, 0);
+ VERIFY( csz01 == 1 );
+ csz01 = str01.find_first_of(str05, 4);
+ VERIFY( csz01 == 4 );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ // However, str1.find_first_of(str2,pos) finds the first character in
+ // str1 (starting at pos) that exists in str2, which is none for empty str2
+ csz01 = str01.find_first_of(str04, 0);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_of(str04, 5);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const;
+ csz01 = str01.find_first_of(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str_lit01, 3, 0);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_of(const wchar_t* s, size_type pos = 0) const;
+ csz01 = str01.find_first_of(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_of(str_lit01, 3);
+ VERIFY( csz01 == 3 );
+
+ // size_type find_first_of(wchar_t c, size_type pos = 0) const;
+ csz01 = str01.find_first_of(L'z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+
+ return test;
+}
+
+int
+main()
+{
+ test02();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
new file mode 100644
index 00000000000..82357b807d1
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
@@ -0,0 +1,97 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find_first_not_of
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+bool
+test03()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ csize_type npos = std::wstring_view::npos;
+ csize_type csz01;
+
+ const std::wstring_view str01(L"Bob Rock, per me");
+ const wchar_t str_lit01[] = L"Bob Rock";
+ std::wstring_view str02(L"ovvero Trivi");
+ std::wstring_view str03(str_lit01);
+ std::wstring_view str04;
+
+ // size_type find_first_not_of(const string_view&, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of(str01);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_not_of(str02, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str02, 10);
+ VERIFY( csz01 == 10 );
+ csz01 = str01.find_first_not_of(str02, 12);
+ VERIFY( csz01 == 14 );
+ csz01 = str01.find_first_not_of(str03, 0);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_not_of(str03, 15);
+ VERIFY( csz01 == 15 );
+ csz01 = str01.find_first_not_of(str03, 16);
+ VERIFY( csz01 == npos );
+ csz01 = str01.find_first_not_of(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str04, 12);
+ VERIFY( csz01 == 12 );
+ csz01 = str03.find_first_not_of(str01, 0);
+ VERIFY( csz01 == npos );
+ csz01 = str04.find_first_not_of(str02, 0);
+ VERIFY( csz01 == npos );
+
+ // size_type find_first_not_of(const char* s, size_type pos, size_type n) const;
+ csz01 = str01.find_first_not_of(str_lit01, 0, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.find_first_not_of(str_lit01, 0, 8);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.find_first_not_of(str_lit01, 10, 0);
+ VERIFY( csz01 == 10 );
+
+ // size_type find_first_not_of(const char* s, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of(str_lit01);
+ VERIFY( csz01 == 8 );
+ csz01 = str02.find_first_not_of(str_lit01, 2);
+ VERIFY( csz01 == 2 );
+
+ // size_type find_first_not_of(char c, size_type pos = 0) const;
+ csz01 = str01.find_first_not_of(L'B');
+ VERIFY( csz01 == 1 );
+ csz01 = str01.find_first_not_of(L'o', 1);
+ VERIFY( csz01 == 2 );
+ csz01 = str02.find_first_not_of(L'z');
+ VERIFY( csz01 == 0 );
+ csz01 = str04.find_first_not_of(L'S');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test03();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
new file mode 100644
index 00000000000..95671de5292
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
@@ -0,0 +1,46 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view find
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// libstdc++/31401
+void
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ csize_type npos = std::wstring_view::npos;
+
+ std::wstring_view use = L"anu";
+ csize_type pos1 = use.find(L"a", npos);
+
+ VERIFY( pos1 == npos );
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
new file mode 100644
index 00000000000..1f886e72138
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
@@ -0,0 +1,98 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view rfind
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ typedef std::string_view::const_reference cref;
+ typedef std::string_view::reference ref;
+ csize_type npos = std::string_view::npos;
+ csize_type csz01, csz02;
+
+ const char str_lit01[] = "mave";
+ const std::string_view str01("mavericks, santa cruz");
+ std::string_view str02(str_lit01);
+ std::string_view str03("s, s");
+ std::string_view str04;
+
+ // size_type rfind(const string_view&, size_type pos = 0) const;
+ csz01 = str01.rfind(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str01, 4);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str02,3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str02);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str03);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.rfind(str03, 3);
+ VERIFY( csz01 == npos );
+ csz01 = str01.rfind(str03, 12);
+ VERIFY( csz01 == 8 );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ csz01 = str01.rfind(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str04, 5);
+ VERIFY( csz01 == 5 );
+ csz01 = str01.rfind(str04, str01.size());
+ VERIFY( csz01 == str01.size() );
+ csz01 = str01.rfind(str04, str01.size()+1);
+ VERIFY( csz01 == str01.size() );
+
+ // size_type rfind(const char* s, size_type pos, size_type n) const;
+ csz01 = str01.rfind(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str_lit01, 3, 0);
+ VERIFY( csz01 == 3 );
+
+ // size_type rfind(const char* s, size_type pos = 0) const;
+ csz01 = str01.rfind(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str_lit01, 3);
+ VERIFY( csz01 == 0 );
+
+ // size_type rfind(char c, size_type pos = 0) const;
+ csz01 = str01.rfind('z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+ csz01 = str01.rfind('/');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
new file mode 100644
index 00000000000..031a01b83f0
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
@@ -0,0 +1,57 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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.
+// { dg-options "-std=gnu++17" }
+
+// 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view::find_last_of
+
+bool
+test02()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::string_view z("ab");
+ std::string_view::size_type pos;
+ pos = z.find_last_of("ab");
+ VERIFY( pos == 1 );
+ pos = z.find_last_of("Xa");
+ VERIFY( pos == 0 );
+ pos = z.find_last_of("Xb");
+ VERIFY( pos == 1 );
+ pos = z.find_last_of("XYZ");
+ VERIFY( pos == std::string_view::npos );
+ pos = z.find_last_of('a');
+ VERIFY( pos == 0 );
+ pos = z.find_last_of('b');
+ VERIFY( pos == 1 );
+ pos = z.find_last_of('X');
+ VERIFY( pos == std::string_view::npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test02();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
new file mode 100644
index 00000000000..ecd34001d80
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
@@ -0,0 +1,70 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view::find_last_not_of
+
+bool
+test03()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ std::string_view::size_type pos;
+ csize_type npos = std::string_view::npos;
+
+ std::string_view x;
+ pos = x.find_last_not_of('X');
+ VERIFY( pos == npos );
+ pos = x.find_last_not_of("XYZ");
+ VERIFY( pos == npos );
+
+ std::string_view y("a");
+ pos = y.find_last_not_of('X');
+ VERIFY( pos == 0 );
+ pos = y.find_last_not_of('a');
+ VERIFY( pos == npos );
+ pos = y.find_last_not_of("XYZ");
+ VERIFY( pos == 0 );
+ pos = y.find_last_not_of("a");
+ VERIFY( pos == npos );
+
+ std::string_view z("ab");
+ pos = z.find_last_not_of('X');
+ VERIFY( pos == 1 );
+ pos = z.find_last_not_of("XYZ");
+ VERIFY( pos == 1 );
+ pos = z.find_last_not_of('b');
+ VERIFY( pos == 0 );
+ pos = z.find_last_not_of("Xb");
+ VERIFY( pos == 0 );
+ pos = z.find_last_not_of("Xa");
+ VERIFY( pos == 1 );
+
+ return test;
+}
+int
+main()
+{
+ test03();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
new file mode 100644
index 00000000000..ee28bdc8417
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
@@ -0,0 +1,98 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view rfind
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ typedef std::wstring_view::const_reference cref;
+ typedef std::wstring_view::reference ref;
+ csize_type npos = std::wstring_view::npos;
+ csize_type csz01, csz02;
+
+ const wchar_t str_lit01[] = L"mave";
+ const std::wstring_view str01(L"mavericks, santa cruz");
+ std::wstring_view str02(str_lit01);
+ std::wstring_view str03(L"s, s");
+ std::wstring_view str04;
+
+ // size_type rfind(const wstring_view&, size_type pos = 0) const;
+ csz01 = str01.rfind(str01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str01, 4);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str02,3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str02);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str03);
+ VERIFY( csz01 == 8 );
+ csz01 = str01.rfind(str03, 3);
+ VERIFY( csz01 == npos );
+ csz01 = str01.rfind(str03, 12);
+ VERIFY( csz01 == 8 );
+
+ // An empty string_view consists of no characters
+ // therefore it should be found at every point in a string_view,
+ // except beyond the end
+ csz01 = str01.rfind(str04, 0);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str04, 5);
+ VERIFY( csz01 == 5 );
+ csz01 = str01.rfind(str04, str01.size());
+ VERIFY( csz01 == str01.size() );
+ csz01 = str01.rfind(str04, str01.size()+1);
+ VERIFY( csz01 == str01.size() );
+
+ // size_type rfind(const wchar_t* s, size_type pos, size_type n) const;
+ csz01 = str01.rfind(str_lit01, 0, 3);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str_lit01, 3, 0);
+ VERIFY( csz01 == 3 );
+
+ // size_type rfind(const wchar_t* s, size_type pos = 0) const;
+ csz01 = str01.rfind(str_lit01);
+ VERIFY( csz01 == 0 );
+ csz01 = str01.rfind(str_lit01, 3);
+ VERIFY( csz01 == 0 );
+
+ // size_type rfind(wchar_t c, size_type pos = 0) const;
+ csz01 = str01.rfind(L'z');
+ csz02 = str01.size() - 1;
+ VERIFY( csz01 == csz02 );
+ csz01 = str01.rfind(L'/');
+ VERIFY( csz01 == npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
new file mode 100644
index 00000000000..4f173ff12ae
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
@@ -0,0 +1,56 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view::find_last_of
+
+bool
+test02()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::wstring_view::size_type pos;
+ std::wstring_view z(L"ab");
+ pos = z.find_last_of(L"ab");
+ VERIFY( pos == 1 );
+ pos = z.find_last_of(L"Xa");
+ VERIFY( pos == 0 );
+ pos = z.find_last_of(L"Xb");
+ VERIFY( pos == 1 );
+ pos = z.find_last_of(L"XYZ");
+ VERIFY( pos == std::wstring_view::npos );
+ pos = z.find_last_of(L'a');
+ VERIFY( pos == 0 );
+ pos = z.find_last_of(L'b');
+ VERIFY( pos == 1 );
+ pos = z.find_last_of(L'X');
+ VERIFY( pos == std::wstring_view::npos );
+
+ return test;
+}
+
+int
+main()
+{
+ test02();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
new file mode 100644
index 00000000000..0b9ea548429
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
@@ -0,0 +1,70 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+// basic_string_view::find_last_not_of
+
+bool
+test03()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ std::wstring_view::size_type pos;
+ csize_type npos = std::wstring_view::npos;
+
+ std::wstring_view x;
+ pos = x.find_last_not_of(L'X');
+ VERIFY( pos == npos );
+ pos = x.find_last_not_of(L"XYZ");
+ VERIFY( pos == npos );
+
+ std::wstring_view y(L"a");
+ pos = y.find_last_not_of(L'X');
+ VERIFY( pos == 0 );
+ pos = y.find_last_not_of(L'a');
+ VERIFY( pos == npos );
+ pos = y.find_last_not_of(L"XYZ");
+ VERIFY( pos == 0 );
+ pos = y.find_last_not_of(L"a");
+ VERIFY( pos == npos );
+
+ std::wstring_view z(L"ab");
+ pos = z.find_last_not_of(L'X');
+ VERIFY( pos == 1 );
+ pos = z.find_last_not_of(L"XYZ");
+ VERIFY( pos == 1 );
+ pos = z.find_last_not_of(L'b');
+ VERIFY( pos == 0 );
+ pos = z.find_last_not_of(L"Xb");
+ VERIFY( pos == 0 );
+ pos = z.find_last_not_of(L"Xa");
+ VERIFY( pos == 1 );
+
+ return test;
+}
+int
+main()
+{
+ test03();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
new file mode 100644
index 00000000000..617877f46db
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
@@ -0,0 +1,55 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2014-2016 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/>.
+
+// basic_string_view::to_string
+
+#include <string_view>
+#include <string>
+#include <algorithm>
+#include <testsuite_hooks.h>
+#include <testsuite_allocator.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ const char str_lit[] = "123456789A";
+ const std::string_view sv(str_lit);
+ char buffer[4] = { 0 };
+
+ std::string s1{sv};
+ VERIFY( s1 == str_lit );
+ using test_alloc = __gnu_test::tracker_allocator<char>;
+ std::basic_string<char, std::char_traits<char>, test_alloc>
+ s2{sv, test_alloc{}};
+ static_assert( std::is_same<decltype(s2)::allocator_type, test_alloc>::value,
+ "to_string() uses custom allocator" );
+ VERIFY( std::equal(s1.begin(), s1.end(), s2.begin(), s2.end()) );
+ auto s3 = static_cast<std::string>(sv);
+ VERIFY( s3 == s1 );
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
new file mode 100644
index 00000000000..08832cd9cb5
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
@@ -0,0 +1,83 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::substr
+
+#include <string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::string_view::size_type csize_type;
+ typedef std::string_view::const_reference cref;
+ typedef std::string_view::reference ref;
+ csize_type csz01;
+
+ const char str_lit01[] = "rockaway, pacifica";
+ const std::string_view str01(str_lit01);
+ std::string_view str02;
+
+ // basic_string_view<charT, _Traits, _Alloc>
+ // substr(size_type pos = 0, size_type n = npos) const;
+ csz01 = str01.size();
+ str02 = str01.substr(0, 1);
+ VERIFY( str02 == "r" );
+ str02 = str01.substr(10);
+ VERIFY( str02 == "pacifica" );
+
+ try
+ {
+ str02 = str01.substr(csz01 + 1);
+ VERIFY( false );
+ }
+ catch(std::out_of_range& fail)
+ {
+ VERIFY( true );
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ try
+ {
+ str02 = str01.substr(csz01);
+ VERIFY( str02.size() == 0 );
+ VERIFY( str02.begin() == str01.end() );
+ VERIFY( true );
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
new file mode 100644
index 00000000000..d8e6cb03a5b
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
@@ -0,0 +1,83 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view::substr
+
+#include <string_view>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+bool
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ typedef std::wstring_view::size_type csize_type;
+ typedef std::wstring_view::const_reference cref;
+ typedef std::wstring_view::reference ref;
+ csize_type csz01;
+
+ const wchar_t str_lit01[] = L"rockaway, pacifica";
+ const std::wstring_view str01(str_lit01);
+ std::wstring_view str02;
+
+ // basic_string_view<charT, _Traits, _Alloc>
+ // substr(size_type pos = 0, size_type n = npos) const;
+ csz01 = str01.size();
+ str02 = str01.substr(0, 1);
+ VERIFY( str02 == L"r" );
+ str02 = str01.substr(10);
+ VERIFY( str02 == L"pacifica" );
+
+ try
+ {
+ str02 = str01.substr(csz01 + 1);
+ VERIFY( false );
+ }
+ catch(std::out_of_range& fail)
+ {
+ VERIFY( true );
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ try
+ {
+ str02 = str01.substr(csz01);
+ VERIFY( str02.size() == 0 );
+ VERIFY( str02.begin() == str01.end() );
+ VERIFY( true );
+ }
+ catch(...)
+ {
+ VERIFY( false );
+ }
+
+ return test;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
new file mode 100644
index 00000000000..04c02e9dfbe
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
@@ -0,0 +1,246 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string non-member functions
+
+// operator==
+/*
+template<class charT, class traits, class Allocator>
+ bool operator==(const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator==(const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator==(const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+*/
+
+// operator!=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator!=(const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator!=(const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator!=(const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+*/
+
+// operator<
+/*
+template<class charT, class traits, class Allocator>
+ bool operator< (const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator< (const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator< (const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+*/
+
+// operator>
+/*
+template<class charT, class traits, class Allocator>
+ bool operator> (const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator> (const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator> (const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+*/
+
+// operator<=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator<=(const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator<=(const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator<=(const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+*/
+
+// operator>=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator>=(const basic_string<charT,traits,Allocator>& lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator>=(const basic_string<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator>=(const charT* lhs,
+ const basic_string<charT,traits,Allocator>& rhs);
+*/
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::string_view str_0("costa rica");
+ std::string_view str_1("costa marbella");
+ std::string_view str_2("cost");
+ std::string_view str_3("costa ricans");
+ std::string_view str_4;
+
+ str_4 = str_0;
+ //comparisons between string objects
+ VERIFY( !(str_0 == str_1) );
+ VERIFY( !(str_0 == str_2) );
+ VERIFY( !(str_0 == str_3) );
+ VERIFY( !(str_1 == str_0) );
+ VERIFY( !(str_2 == str_0) );
+ VERIFY( !(str_3 == str_0) );
+ VERIFY( str_4 == str_0 );
+ VERIFY( str_0 == str_4 );
+
+ VERIFY( str_0 != str_1 );
+ VERIFY( str_0 != str_2 );
+ VERIFY( str_0 != str_3 );
+ VERIFY( str_1 != str_0 );
+ VERIFY( str_2 != str_0 );
+ VERIFY( str_3 != str_0 );
+ VERIFY( !(str_0 != str_4) );
+ VERIFY( !(str_4 != str_0) );
+
+ VERIFY( str_0 > str_1 ); //true cuz r>m
+ VERIFY( str_0 > str_2 );
+ VERIFY( !(str_0 > str_3) );
+ VERIFY( !(str_1 > str_0) ); //false cuz m<r
+ VERIFY( !(str_2 > str_0) );
+ VERIFY( str_3 > str_0 );
+ VERIFY( !(str_0 > str_4) );
+ VERIFY( !(str_4 > str_0) );
+
+ VERIFY( !(str_0 < str_1) ); //false cuz r>m
+ VERIFY( !(str_0 < str_2) );
+ VERIFY( str_0 < str_3 );
+ VERIFY( str_1 < str_0 ); //true cuz m<r
+ VERIFY( str_2 < str_0 );
+ VERIFY( !(str_3 < str_0) );
+ VERIFY( !(str_0 < str_4) );
+ VERIFY( !(str_4 < str_0) );
+
+ VERIFY( str_0 >= str_1 ); //true cuz r>m
+ VERIFY( str_0 >= str_2 );
+ VERIFY( !(str_0 >= str_3) );
+ VERIFY( !(str_1 >= str_0) );//false cuz m<r
+ VERIFY( !(str_2 >= str_0) );
+ VERIFY( str_3 >= str_0 );
+ VERIFY( str_0 >= str_4 );
+ VERIFY( str_4 >= str_0 );
+
+ VERIFY( !(str_0 <= str_1) );//false cuz r>m
+ VERIFY( !(str_0 <= str_2) );
+ VERIFY( str_0 <= str_3 );
+ VERIFY( str_1 <= str_0 );//true cuz m<r
+ VERIFY( str_2 <= str_0 );
+ VERIFY( !(str_3 <= str_0) );
+ VERIFY( str_0 <= str_4 );
+ VERIFY( str_4 <= str_0 );
+
+ //comparisons between string object and string literal
+ VERIFY( !(str_0 == "costa marbella") );
+ VERIFY( !(str_0 == "cost") );
+ VERIFY( !(str_0 == "costa ricans") );
+ VERIFY( !("costa marbella" == str_0) );
+ VERIFY( !("cost" == str_0) );
+ VERIFY( !("costa ricans" == str_0) );
+ VERIFY( "costa rica" == str_0 );
+ VERIFY( str_0 == "costa rica" );
+
+ VERIFY( str_0 != "costa marbella" );
+ VERIFY( str_0 != "cost" );
+ VERIFY( str_0 != "costa ricans" );
+ VERIFY( "costa marbella" != str_0 );
+ VERIFY( "cost" != str_0 );
+ VERIFY( "costa ricans" != str_0 );
+ VERIFY( !("costa rica" != str_0) );
+ VERIFY( !(str_0 != "costa rica") );
+
+ VERIFY( str_0 > "costa marbella" ); //true cuz r>m
+ VERIFY( str_0 > "cost" );
+ VERIFY( !(str_0 > "costa ricans") );
+ VERIFY( !("costa marbella" > str_0) );//false cuz m<r
+ VERIFY( !("cost" > str_0) );
+ VERIFY( "costa ricans" > str_0 );
+ VERIFY( !("costa rica" > str_0) );
+ VERIFY( !(str_0 > "costa rica") );
+
+ VERIFY( !(str_0 < "costa marbella") );//false cuz r>m
+ VERIFY( !(str_0 < "cost") );
+ VERIFY( str_0 < "costa ricans" );
+ VERIFY( "costa marbella" < str_0 );//true cuz m<r
+ VERIFY( "cost" < str_0 );
+ VERIFY( !("costa ricans" < str_0) );
+ VERIFY( !("costa rica" < str_0) );
+ VERIFY( !(str_0 < "costa rica") );
+
+ VERIFY( str_0 >= "costa marbella" );//true cuz r>m
+ VERIFY( str_0 >= "cost" );
+ VERIFY( !(str_0 >= "costa ricans") );
+ VERIFY( !("costa marbella" >= str_0) );//false cuz m<r
+ VERIFY( !("cost" >= str_0) );
+ VERIFY( "costa ricans" >= str_0 );
+ VERIFY( "costa rica" >= str_0 );
+ VERIFY( str_0 >= "costa rica" );
+
+ VERIFY( !(str_0 <= "costa marbella") );//false cuz r>m
+ VERIFY( !(str_0 <= "cost") );
+ VERIFY( str_0 <= "costa ricans" );
+ VERIFY( "costa marbella" <= str_0 );//true cuz m<r
+ VERIFY( "cost" <= str_0 );
+ VERIFY( !("costa ricans" <= str_0) );
+ VERIFY( "costa rica" <= str_0 );
+ VERIFY( str_0 <= "costa rica" );
+
+ return 0;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
new file mode 100644
index 00000000000..5e9f7e4cb76
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
@@ -0,0 +1,246 @@
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// basic_string_view non-member functions
+
+// operator==
+/*
+template<class charT, class traits, class Allocator>
+ bool operator==(const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator==(const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator==(const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+*/
+
+// operator!=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator!=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator!=(const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator!=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+*/
+
+// operator<
+/*
+template<class charT, class traits, class Allocator>
+ bool operator< (const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator< (const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator< (const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+*/
+
+// operator>
+/*
+template<class charT, class traits, class Allocator>
+ bool operator> (const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator> (const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator> (const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+*/
+
+// operator<=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator<=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator<=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator<=(const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+*/
+
+// operator>=
+/*
+template<class charT, class traits, class Allocator>
+ bool operator>=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator>=(const basic_string_view<charT,traits,Allocator>& lhs,
+ const charT* rhs);
+
+template<class charT, class traits, class Allocator>
+ bool operator>=(const charT* lhs,
+ const basic_string_view<charT,traits,Allocator>& rhs);
+*/
+
+#include <string_view>
+#include <testsuite_hooks.h>
+
+int
+test01()
+{
+ bool test [[gnu::unused]] = true;
+
+ std::wstring_view str_0(L"costa rica");
+ std::wstring_view str_1(L"costa marbella");
+ std::wstring_view str_2(L"cost");
+ std::wstring_view str_3(L"costa ricans");
+ std::wstring_view str_4;
+
+ str_4 = str_0;
+ //comparisons between string_view objects
+ VERIFY( !(str_0 == str_1) );
+ VERIFY( !(str_0 == str_2) );
+ VERIFY( !(str_0 == str_3) );
+ VERIFY( !(str_1 == str_0) );
+ VERIFY( !(str_2 == str_0) );
+ VERIFY( !(str_3 == str_0) );
+ VERIFY( str_4 == str_0 );
+ VERIFY( str_0 == str_4 );
+
+ VERIFY( str_0 != str_1 );
+ VERIFY( str_0 != str_2 );
+ VERIFY( str_0 != str_3 );
+ VERIFY( str_1 != str_0 );
+ VERIFY( str_2 != str_0 );
+ VERIFY( str_3 != str_0 );
+ VERIFY( !(str_0 != str_4) );
+ VERIFY( !(str_4 != str_0) );
+
+ VERIFY( str_0 > str_1 ); //true cuz r>m
+ VERIFY( str_0 > str_2 );
+ VERIFY( !(str_0 > str_3) );
+ VERIFY( !(str_1 > str_0) ); //false cuz m<r
+ VERIFY( !(str_2 > str_0) );
+ VERIFY( str_3 > str_0 );
+ VERIFY( !(str_0 > str_4) );
+ VERIFY( !(str_4 > str_0) );
+
+ VERIFY( !(str_0 < str_1) ); //false cuz r>m
+ VERIFY( !(str_0 < str_2) );
+ VERIFY( str_0 < str_3 );
+ VERIFY( str_1 < str_0 ); //true cuz m<r
+ VERIFY( str_2 < str_0 );
+ VERIFY( !(str_3 < str_0) );
+ VERIFY( !(str_0 < str_4) );
+ VERIFY( !(str_4 < str_0) );
+
+ VERIFY( str_0 >= str_1 ); //true cuz r>m
+ VERIFY( str_0 >= str_2 );
+ VERIFY( !(str_0 >= str_3) );
+ VERIFY( !(str_1 >= str_0) );//false cuz m<r
+ VERIFY( !(str_2 >= str_0) );
+ VERIFY( str_3 >= str_0 );
+ VERIFY( str_0 >= str_4 );
+ VERIFY( str_4 >= str_0 );
+
+ VERIFY( !(str_0 <= str_1) );//false cuz r>m
+ VERIFY( !(str_0 <= str_2) );
+ VERIFY( str_0 <= str_3 );
+ VERIFY( str_1 <= str_0 );//true cuz m<r
+ VERIFY( str_2 <= str_0 );
+ VERIFY( !(str_3 <= str_0) );
+ VERIFY( str_0 <= str_4 );
+ VERIFY( str_4 <= str_0 );
+
+ //comparisons between string_view object and string_view literal
+ VERIFY( !(str_0 == L"costa marbella") );
+ VERIFY( !(str_0 == L"cost") );
+ VERIFY( !(str_0 == L"costa ricans") );
+ VERIFY( !(L"costa marbella" == str_0) );
+ VERIFY( !(L"cost" == str_0) );
+ VERIFY( !(L"costa ricans" == str_0) );
+ VERIFY( L"costa rica" == str_0 );
+ VERIFY( str_0 == L"costa rica" );
+
+ VERIFY( str_0 != L"costa marbella" );
+ VERIFY( str_0 != L"cost" );
+ VERIFY( str_0 != L"costa ricans" );
+ VERIFY( L"costa marbella" != str_0 );
+ VERIFY( L"cost" != str_0 );
+ VERIFY( L"costa ricans" != str_0 );
+ VERIFY( !(L"costa rica" != str_0) );
+ VERIFY( !(str_0 != L"costa rica") );
+
+ VERIFY( str_0 > L"costa marbella" ); //true cuz r>m
+ VERIFY( str_0 > L"cost" );
+ VERIFY( !(str_0 > L"costa ricans") );
+ VERIFY( !(L"costa marbella" > str_0) );//false cuz m<r
+ VERIFY( !(L"cost" > str_0) );
+ VERIFY( L"costa ricans" > str_0 );
+ VERIFY( !(L"costa rica" > str_0) );
+ VERIFY( !(str_0 > L"costa rica") );
+
+ VERIFY( !(str_0 < L"costa marbella") );//false cuz r>m
+ VERIFY( !(str_0 < L"cost") );
+ VERIFY( str_0 < L"costa ricans" );
+ VERIFY( L"costa marbella" < str_0 );//true cuz m<r
+ VERIFY( L"cost" < str_0 );
+ VERIFY( !(L"costa ricans" < str_0) );
+ VERIFY( !(L"costa rica" < str_0) );
+ VERIFY( !(str_0 < L"costa rica") );
+
+ VERIFY( str_0 >= L"costa marbella" );//true cuz r>m
+ VERIFY( str_0 >= L"cost" );
+ VERIFY( !(str_0 >= L"costa ricans") );
+ VERIFY( !(L"costa marbella" >= str_0) );//false cuz m<r
+ VERIFY( !(L"cost" >= str_0) );
+ VERIFY( L"costa ricans" >= str_0 );
+ VERIFY( L"costa rica" >= str_0 );
+ VERIFY( str_0 >= L"costa rica" );
+
+ VERIFY( !(str_0 <= L"costa marbella") );//false cuz r>m
+ VERIFY( !(str_0 <= L"cost") );
+ VERIFY( str_0 <= L"costa ricans" );
+ VERIFY( L"costa marbella" <= str_0 );//true cuz m<r
+ VERIFY( L"cost" <= str_0 );
+ VERIFY( !(L"costa ricans" <= str_0) );
+ VERIFY( L"costa rica" <= str_0 );
+ VERIFY( str_0 <= L"costa rica" );
+
+ return 0;
+}
+
+int
+main()
+{
+ test01();
+
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
new file mode 100644
index 00000000000..8640aa3921a
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// 24.6.5, range access [iterator.range]
+
+#include <string_view>
+
+void
+test01()
+{
+ std::string_view s("Hello, World!");
+ std::begin(s);
+ std::end(s);
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
new file mode 100644
index 00000000000..cd3ddfd063e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
@@ -0,0 +1,33 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+// 24.6.5, range access [iterator.range]
+
+#include <string_view>
+
+void
+test01()
+{
+#ifdef _GLIBCXX_USE_WCHAR_T
+ std::wstring_view ws(L"Hello, World!");
+ std::begin(ws);
+ std::end(ws);
+#endif
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
new file mode 100644
index 00000000000..297e64049b6
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
@@ -0,0 +1,26 @@
+// Copyright (C) 2013-2016 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/>.
+
+
+// This file tests explicit instantiation of basic_string
+
+#include <string_view>
+
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+
+template class std::basic_string_view<int, std::char_traits<int>>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
new file mode 100644
index 00000000000..759cf08d781
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+template class std::basic_string_view<char>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
new file mode 100644
index 00000000000..11217073df6
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+// { dg-require-cstdint "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+template class std::basic_string_view<char16_t>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
new file mode 100644
index 00000000000..a9a0947b856
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+// { dg-require-cstdint "" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+template class std::basic_string_view<char32_t>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
new file mode 100644
index 00000000000..0a5aab37cae
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++17" }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+
+template class std::basic_string_view<wchar_t>;
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
new file mode 100644
index 00000000000..4e172a7d685
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
@@ -0,0 +1,47 @@
+
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2013-2016 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/>.
+
+#include <string_view>
+#include <testsuite_containers.h>
+
+namespace __gnu_test
+{
+ template<typename _Tp1, typename _Tp2>
+ struct traits<std::basic_string_view<_Tp1, _Tp2>> : public traits_base
+ {
+ typedef std::true_type is_container;
+ typedef std::true_type is_reversible;
+ };
+}
+
+#include <testsuite_containers.h>
+
+// Check container for required typedefs.
+
+__gnu_test::basic_types<std::string_view> t1b;
+__gnu_test::reversible_types<std::string_view> t1r;
+typedef typename std::string_view::traits_type traits_type1;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+__gnu_test::basic_types<std::wstring_view> t2b;
+__gnu_test::reversible_types<std::wstring_view> t2r;
+typedef typename std::wstring_view::traits_type traits_type2;
+#endif
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
new file mode 100644
index 00000000000..e5d5919e283
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
@@ -0,0 +1,36 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile }
+
+// Copyright (C) 2014-2016 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 moved_to of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <string_view>
+
+template<typename C, typename T>
+ using check1_t = std::basic_string_view<C, T>;
+
+using check2_t = std::string_view;
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+using check3_t = std::u16string_view;
+using check4_t = std::u32string_view;
+#endif
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+using check5_t = std::wstring_view;
+#endif
+
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
new file mode 100644
index 00000000000..f20995159cb
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
@@ -0,0 +1,43 @@
+//
+// Copyright (C) 2013-2016 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++17" }
+// { dg-do compile }
+
+#include <string_view>
+
+struct T
+{
+ typedef std::string_view String_view;
+ typedef String_view::iterator iterator;
+ typedef String_view::const_iterator const_iterator;
+
+ char t(iterator f) { return *f; }
+ char t(const_iterator f) const { return *f; }
+};
+
+void
+f()
+{
+ std::string_view s;
+ T t;
+ T::const_iterator i = s.begin();
+
+ t.t(i);
+}
diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
index 9a1e59fbb7e..25c058657d4 100644
--- a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
// { dg-options "-std=gnu++11" }
// Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
index 7851243df50..49a05e607f2 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1879 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
index 2debd58ec3b..7b52fe2e325 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
index 5aa86269c50..02a2d3b8a72 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <deque>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
index 5742198bb98..90c004062f7 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1963 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
index 5f29e8ec3c1..1fa2106b482 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
@@ -1,6 +1,5 @@
// { dg-do compile }
// { dg-options "-std=gnu++11" }
-// { dg-error "no matching" "" { target *-*-* } 33 }
// Copyright (C) 2009-2016 Free Software Foundation, Inc.
//
@@ -30,5 +29,5 @@ void f()
{
typedef std::forward_list<A> test_type;
test_type l;
- l.assign(10, 1);
+ l.assign(10, 1); // { dg-error "no matching" }
}
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
index 15aeac7ac7f..829c84d5a05 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
@@ -1,6 +1,5 @@
// { dg-do compile }
// { dg-options "-std=gnu++11" }
-// { dg-error "no matching" "" { target *-*-* } 27 }
// Copyright (C) 2009-2016 Free Software Foundation, Inc.
//
@@ -24,5 +23,5 @@
void f()
{
typedef std::forward_list<std::forward_list<int> > test_type;
- test_type l(10, 1);
+ test_type l(10, 1); // { dg-error "no matching" }
}
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
index 9a330a3af1d..2ebcec3002d 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
@@ -1,6 +1,5 @@
// { dg-do compile }
// { dg-options "-std=gnu++11" }
-// { dg-error "no matching" "" { target *-*-* } 28 }
// Copyright (C) 2009-2016 Free Software Foundation, Inc.
//
@@ -25,5 +24,5 @@
void f()
{
typedef std::forward_list<std::forward_list<std::pair<char, char> > > test_type;
- test_type l('a', 'b');
+ test_type l('a', 'b'); // { dg-error "no matching" }
}
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
index 783feb8fb06..cc2f2af0f96 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
@@ -1,6 +1,5 @@
// { dg-do compile }
// { dg-options "-std=gnu++11" }
-// { dg-error "no matching" "" { target *-*-* } 33 }
// Copyright (C) 2009-2016 Free Software Foundation, Inc.
//
@@ -30,5 +29,5 @@ void f()
{
typedef std::forward_list<A> test_type;
test_type l;
- l.insert_after(l.begin(), 10, 1);
+ l.insert_after(l.begin(), 10, 1); // { dg-error "no matching" }
}
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
index b956db648fe..90e3c07e687 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1740 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
index 3400695b9b2..32815f446ec 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
index 313c54a91e3..769d6156d8d 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1682 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
index 75b33f28f0a..fff543e50ae 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
index cef863ba2c8..009cf5e1309 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
@@ -1,7 +1,5 @@
-// XFAIL because of PR libstdc++/55043 fix
-// { dg-do compile { xfail *-*-* } }
-// { dg-excess-errors "" }
-// { dg-options "-std=gnu++11" }
+// { dg-do compile { target c++11 } }
+// { dg-excess-errors "XFAIL because of PR libstdc++/55043 fix" }
// Copyright (C) 2012-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
index 2bf11a2b8e1..b9c48988d76 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
@@ -1,7 +1,5 @@
-// XFAIL because of PR libstdc++/55043 fix
-// { dg-do compile { xfail *-*-* } }
-// { dg-excess-errors "" }
-// { dg-options "-std=gnu++11" }
+// { dg-do compile { target c++11 } }
+// { dg-excess-errors "XFAIL because of PR libstdc++/55043 fix" }
// Copyright (C) 2012-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc b/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
index b92a1521aa2..ddf0f9aa05b 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
@@ -44,14 +44,17 @@ int main()
}
ok = check_construct_destroy("Construct from range", 10, 10) && ok;
+ // For C++11 and later the allocator is used to construct/destroy an
+ // additional temporary object during insertion.
+ const int extra = __cplusplus >= 201102L ? 1 : 0;
{
Container c(arr10, arr10 + 10);
c.reserve(100);
tracker_allocator_counter::reset();
c.insert(c.begin(), arr10[0]);
- ok = check_construct_destroy("Insert element", 2, 1) && ok;
+ ok = check_construct_destroy("Insert element", 1+extra, 0+extra) && ok;
}
- ok = check_construct_destroy("Insert element", 2, 12) && ok;
+ ok = check_construct_destroy("Insert element", 1+extra, 11+extra) && ok;
{
Container c(arr10, arr10 + 10);
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 898431e738e..50e665d17d0 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1325 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index 3e27d5290cc..c8521b773c8 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index 680a84b16f0..bc75eb4ae3f 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <vector>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index 9c9dd600ac0..c73f861be5d 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1366 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
index f22452ecc8a..1554df0d97f 100644
--- a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
@@ -42,6 +42,6 @@ struct A_int_comparer
void test01()
{
- A as[] { 0, 1, 2, 3 };
+ A as[] = { 0, 1, 2, 3 };
std::lower_bound(as, as + 4, 1, A_int_comparer());
}
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
index 1638667d7fa..8db9fdb0e6c 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
@@ -15,8 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-std=gnu++11" }
-// { dg-do compile { xfail uclibc } }
+// { dg-do compile { target c++11 } }
// { dg-excess-errors "" { target uclibc } }
#include <cmath>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
index 4c4cc4e85b8..6480f9383a5 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++98" }
-// { dg-do compile { xfail uclibc } }
+// { dg-do compile }
// { dg-excess-errors "" { target uclibc } }
#include <cmath>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
index cbced7dece2..8a42db4b43b 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
@@ -17,7 +17,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-do compile { xfail uclibc } }
+// { dg-do compile }
// { dg-excess-errors "" { target uclibc } }
// { dg-add-options no_pch }
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
index 23611421340..82c596456fb 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
@@ -17,7 +17,7 @@
// Test to see whether the host provides its own (inline) view of fabs.
// Origin: Kurt Garloff <kurt@garloff.de>, 2001-05-24
-// dg-do link
+// { dg-do link }
#include <cmath>
#include <cstdio>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
new file mode 100644
index 00000000000..481b659f8c2
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
@@ -0,0 +1,111 @@
+// Copyright (C) 2016 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++17" }
+// { dg-do compile }
+
+#include <cmath>
+
+namespace gnu
+{
+ using std::acos;
+ using std::asin;
+ using std::atan;
+ using std::atan2;
+ using std::ceil;
+ using std::cos;
+ using std::cosh;
+ using std::exp;
+ using std::fabs;
+ using std::floor;
+ using std::fmod;
+ using std::frexp;
+ using std::ldexp;
+ using std::log;
+ using std::log10;
+ using std::modf;
+ using std::pow;
+ using std::sin;
+ using std::sinh;
+ using std::sqrt;
+ using std::tan;
+ using std::tanh;
+
+ using std::assoc_laguerre;
+ using std::assoc_laguerref;
+ using std::assoc_laguerrel;
+ using std::assoc_legendre;
+ using std::assoc_legendref;
+ using std::assoc_legendrel;
+ using std::beta;
+ using std::betaf;
+ using std::betal;
+ using std::comp_ellint_1;
+ using std::comp_ellint_1f;
+ using std::comp_ellint_1l;
+ using std::comp_ellint_2;
+ using std::comp_ellint_2f;
+ using std::comp_ellint_2l;
+ using std::comp_ellint_3;
+ using std::comp_ellint_3f;
+ using std::comp_ellint_3l;
+ using std::cyl_bessel_i;
+ using std::cyl_bessel_if;
+ using std::cyl_bessel_il;
+ using std::cyl_bessel_j;
+ using std::cyl_bessel_jf;
+ using std::cyl_bessel_jl;
+ using std::cyl_bessel_k;
+ using std::cyl_bessel_kf;
+ using std::cyl_bessel_kl;
+ using std::cyl_neumann;
+ using std::cyl_neumannf;
+ using std::cyl_neumannl;
+ using std::ellint_1;
+ using std::ellint_1f;
+ using std::ellint_1l;
+ using std::ellint_2;
+ using std::ellint_2f;
+ using std::ellint_2l;
+ using std::ellint_3;
+ using std::ellint_3f;
+ using std::ellint_3l;
+ using std::expint;
+ using std::expintf;
+ using std::expintl;
+ using std::hermite;
+ using std::hermitef;
+ using std::hermitel;
+ using std::laguerre;
+ using std::laguerref;
+ using std::laguerrel;
+ using std::legendre;
+ using std::legendref;
+ using std::legendrel;
+ using std::riemann_zeta;
+ using std::riemann_zetaf;
+ using std::riemann_zetal;
+ using std::sph_bessel;
+ using std::sph_besself;
+ using std::sph_bessell;
+ using std::sph_legendre;
+ using std::sph_legendref;
+ using std::sph_legendrel;
+ using std::sph_neumann;
+ using std::sph_neumannf;
+ using std::sph_neumannl;
+}
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 268832bd179..8910c7e9a90 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
@@ -22,52 +22,28 @@
namespace gnu
{
- // C++0x changes from TR1.
- using std::assoc_laguerre;
- using std::assoc_legendre;
- using std::beta;
- using std::comp_ellint_1;
- using std::comp_ellint_2;
- using std::comp_ellint_3;
- using std::conf_hyperg;
- using std::cyl_bessel_i;
- using std::cyl_bessel_j;
- using std::cyl_bessel_k;
- using std::cyl_neumann;
- using std::ellint_1;
- using std::ellint_2;
- using std::ellint_3;
- using std::expint;
- using std::hermite;
- using std::hyperg;
- using std::laguerre;
- using std::legendre;
- using std::riemann_zeta;
- using std::sph_bessel;
- using std::sph_legendre;
- using std::sph_neumann;
+ // C++11 changes from TR1.
+ using std::assoc_laguerre; // { dg-error "has not been declared" }
+ using std::assoc_legendre; // { dg-error "has not been declared" }
+ using std::beta; // { dg-error "has not been declared" }
+ using std::comp_ellint_1; // { dg-error "has not been declared" }
+ using std::comp_ellint_2; // { dg-error "has not been declared" }
+ using std::comp_ellint_3; // { dg-error "has not been declared" }
+ using std::conf_hyperg; // { dg-error "has not been declared" }
+ using std::cyl_bessel_i; // { dg-error "has not been declared" }
+ using std::cyl_bessel_j; // { dg-error "has not been declared" }
+ using std::cyl_bessel_k; // { dg-error "has not been declared" }
+ using std::cyl_neumann; // { dg-error "has not been declared" }
+ using std::ellint_1; // { dg-error "has not been declared" }
+ using std::ellint_2; // { dg-error "has not been declared" }
+ using std::ellint_3; // { dg-error "has not been declared" }
+ using std::expint; // { dg-error "has not been declared" }
+ using std::hermite; // { dg-error "has not been declared" }
+ using std::hyperg; // { dg-error "has not been declared" }
+ using std::laguerre; // { dg-error "has not been declared" }
+ using std::legendre; // { dg-error "has not been declared" }
+ using std::riemann_zeta; // { dg-error "has not been declared" }
+ using std::sph_bessel; // { dg-error "has not been declared" }
+ using std::sph_legendre; // { dg-error "has not been declared" }
+ using std::sph_neumann; // { dg-error "has not been declared" }
}
-
-// { dg-error "has not been declared" "" { target *-*-* } 26 }
-// { dg-error "has not been declared" "" { target *-*-* } 27 }
-// { dg-error "has not been declared" "" { target *-*-* } 28 }
-// { dg-error "has not been declared" "" { target *-*-* } 29 }
-// { dg-error "has not been declared" "" { target *-*-* } 30 }
-// { dg-error "has not been declared" "" { target *-*-* } 31 }
-// { dg-error "has not been declared" "" { target *-*-* } 32 }
-// { dg-error "has not been declared" "" { target *-*-* } 33 }
-// { dg-error "has not been declared" "" { target *-*-* } 34 }
-// { dg-error "has not been declared" "" { target *-*-* } 35 }
-// { dg-error "has not been declared" "" { target *-*-* } 36 }
-// { dg-error "has not been declared" "" { target *-*-* } 37 }
-// { dg-error "has not been declared" "" { target *-*-* } 38 }
-// { dg-error "has not been declared" "" { target *-*-* } 39 }
-// { dg-error "has not been declared" "" { target *-*-* } 40 }
-// { dg-error "has not been declared" "" { target *-*-* } 41 }
-// { dg-error "has not been declared" "" { target *-*-* } 42 }
-// { dg-error "has not been declared" "" { target *-*-* } 43 }
-// { dg-error "has not been declared" "" { target *-*-* } 44 }
-// { dg-error "has not been declared" "" { target *-*-* } 45 }
-// { dg-error "has not been declared" "" { target *-*-* } 46 }
-// { dg-error "has not been declared" "" { target *-*-* } 47 }
-// { dg-error "has not been declared" "" { target *-*-* } 48 }
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.c b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
index 59f940441e7..59f940441e7 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.c
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
diff --git a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
index 6f4f2722fca..3c7f7bf8256 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
@@ -21,11 +21,10 @@
// { dg-do compile }
// { dg-options "-std=gnu++11" }
// { dg-require-cstdint "" }
-// { dg-error "not a valid type" "" { target *-*-* } 31 }
// 26.4.3.1 class template linear_congruential_engine [rand.eng.lcong]
// 26.4.2.2 Concept RandomNumberEngine [rand.concept.eng]
#include <random>
-std::linear_congruential_engine<double, 48271, 0, 2147483647> x;
+std::linear_congruential_engine<double, 48271, 0, 2147483647> x; // { dg-error "not a valid type" }
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc b/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
index 6936d15045c..8dea41f3c56 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
@@ -20,7 +20,7 @@
#include <valarray>
-// dg-do compile
+// { dg-do compile }
template<typename P>
void copy(P, std::size_t) { }
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
index d786e103438..c0e94877aac 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -75,6 +75,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
index 7d777b89c67..5ca9f5f8759 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -47,6 +47,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
index bb9e96e260c..14a4984105b 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -51,6 +51,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
index 63b6dc61b30..5ee1b422858 100644
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
@@ -22,13 +22,10 @@
// C++0X [28.8.3] class template basic_regex assign()
#include <regex>
-#include <testsuite_hooks.h>
// Tests assign operation from a C-style null-terminated-string.
void test01()
{
- bool test __attribute__((unused)) = true;
-
std::basic_regex<char> re;
const char* cs = "aab";
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
index 5625653d7f9..c2ac9011483 100644
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
@@ -1,4 +1,4 @@
-// { dg-options "-std=gnu++11" }
+// { dg-do run { target c++11 } }
// 2012-08-20 Benjamin Kosnik <bkoz@redhat.com>
//
@@ -31,17 +31,27 @@ test01()
// raw string literals
- //string_type sre0(R"(\d{3}-\d{3}-\d{4})"); // expected fail
+ string_type sre0(R"(\d{3}-\d{3}-\d{4})");
- string_type sre1(R"( this\n and new : forms\n )");
+ string_type sre1(R"( this
+ and new : forms
+ )");
string_type sre2(R"([:num:]{3}-[:num:]{3}-[:num:]{4})");
// 1
- regex_type re(R"( this\n and new : forms\n )", std::regex::basic);
+ regex_type re0(R"(\d{3}-\d{3}-\d{4})", std::regex::ECMAScript);
+
+ regex_type re1(R"( this
+ and new : forms
+ )", std::regex::basic);
+
+ regex_type re2(R"([:num:]{3}-[:num:]{3}-[:num:]{4})", std::regex::basic);
// 2
+ regex_sanity_check(sre0, std::regex::ECMAScript);
regex_sanity_check(sre1);
+ regex_sanity_check(sre2);
}
int main()
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
index 2931e3321e4..fbd49c8a347 100644
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
@@ -24,7 +24,6 @@
#include <string>
#include <regex>
-#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
// Tests C++ string constructor of the basic_regex class.
@@ -39,7 +38,6 @@ void test01()
void test02()
{
- bool test __attribute__((unused)) = true;
typedef std::basic_regex<wchar_t> test_type;
typedef __gnu_test::tracker_allocator<wchar_t> alloc_type;
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
index 560eee35a29..1123731e353 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
@@ -1,6 +1,7 @@
// { dg-do compile { target i?86-*-* x86_64-*-* } }
-// { dg-options "-std=gnu++11 -g0 -fno-exceptions -fno-asynchronous-unwind-tables" }
-// { dg-options "-std=gnu++11 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -march=i486" { target ia32 } }
+// { dg-options "-std=gnu++11 -O2 -g0 -fno-exceptions -fno-asynchronous-unwind-tables" }
+// { dg-additional-options "-march=i486" { target ia32 } }
+// { dg-skip-if "scans fail with LTO" { lto } { "-flto" } }
// { dg-final { scan-assembler-times "xacquire\|\.byte\[^\n\r]*0xf2" 14 } }
// { dg-final { scan-assembler-times "xrelease\|\.byte\[^\n\r]*0xf3" 14 } }
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
index 5f7994375ee..dbea9b9c24c 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
@@ -23,101 +23,56 @@
void test01()
{
// Not global scoped, only namespace std.
- using memory_order;
- using memory_order_relaxed;
- using memory_order_consume;
- using memory_order_acquire;
- using memory_order_release;
- using memory_order_acq_rel;
- using memory_order_seq_cst;
+ using memory_order; // { dg-error "expected nested-name-specifier" }
+ using memory_order_relaxed; // { dg-error "expected nested-name-specifier" }
+ using memory_order_consume; // { dg-error "expected nested-name-specifier" }
+ using memory_order_acquire; // { dg-error "expected nested-name-specifier" }
+ using memory_order_release; // { dg-error "expected nested-name-specifier" }
+ using memory_order_acq_rel; // { dg-error "expected nested-name-specifier" }
+ using memory_order_seq_cst; // { dg-error "expected nested-name-specifier" }
- using atomic_flag;
+ using atomic_flag; // { dg-error "expected nested-name-specifier" }
- using atomic_bool;
- using atomic_char;
- using atomic_schar;
- using atomic_uchar;
- using atomic_short;
- using atomic_ushort;
- using atomic_int;
- using atomic_uint;
- using atomic_long;
- using atomic_ulong;
- using atomic_llong;
- using atomic_ullong;
- using atomic_wchar_t;
- using atomic_char16_t;
- using atomic_char32_t;
+ using atomic_bool; // { dg-error "expected nested-name-specifier" }
+ using atomic_char; // { dg-error "expected nested-name-specifier" }
+ using atomic_schar; // { dg-error "expected nested-name-specifier" }
+ using atomic_uchar; // { dg-error "expected nested-name-specifier" }
+ using atomic_short; // { dg-error "expected nested-name-specifier" }
+ using atomic_ushort; // { dg-error "expected nested-name-specifier" }
+ using atomic_int; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint; // { dg-error "expected nested-name-specifier" }
+ using atomic_long; // { dg-error "expected nested-name-specifier" }
+ using atomic_ulong; // { dg-error "expected nested-name-specifier" }
+ using atomic_llong; // { dg-error "expected nested-name-specifier" }
+ using atomic_ullong; // { dg-error "expected nested-name-specifier" }
+ using atomic_wchar_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_char16_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_char32_t; // { dg-error "expected nested-name-specifier" }
- using atomic_int_least8_t;
- using atomic_uint_least8_t;
- using atomic_int_least16_t;
- using atomic_uint_least16_t;
- using atomic_int_least32_t;
- using atomic_uint_least32_t;
- using atomic_int_least64_t;
- using atomic_uint_least64_t;
- using atomic_int_fast8_t;
- using atomic_uint_fast8_t;
- using atomic_int_fast16_t;
- using atomic_uint_fast16_t;
- using atomic_int_fast32_t;
- using atomic_uint_fast32_t;
- using atomic_int_fast64_t;
- using atomic_uint_fast64_t;
- using atomic_intptr_t;
- using atomic_uintptr_t;
- using atomic_size_t;
- using atomic_ptrdiff_t;
- using atomic_intmax_t;
- using atomic_uintmax_t;
+ using atomic_int_least8_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_least8_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_least16_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_least16_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_least32_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_least32_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_least64_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_least64_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_fast8_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_fast8_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_fast16_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_fast16_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_fast32_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_fast32_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_int_fast64_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uint_fast64_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_intptr_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uintptr_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_size_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_ptrdiff_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_intmax_t; // { dg-error "expected nested-name-specifier" }
+ using atomic_uintmax_t; // { dg-error "expected nested-name-specifier" }
- using atomic_address;
+ using atomic_address; // { dg-error "expected nested-name-specifier" }
+ // Present in C++0x drafts but not final C++11 standard:
+ using std::atomic_address; // { dg-error "has not been declared" }
}
-
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 26 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 27 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 28 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 29 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 30 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 31 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 32 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 34 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 36 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 37 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 38 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 39 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 40 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 41 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 42 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 43 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 44 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 45 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 46 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 47 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 48 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 49 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 50 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 52 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 53 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 54 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 55 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 56 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 57 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 58 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 59 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 60 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 61 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 62 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 63 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 64 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 65 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 66 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 67 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 68 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 69 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 70 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 71 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 72 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 73 }
-// { dg-error "expected nested-name-specifier" "" { target *-*-* } 75 }
diff --git a/libstdc++-v3/testsuite/abi/header_cxxabi.c b/libstdc++-v3/testsuite/abi/header_cxxabi.c
index b424d8f8a99..3b1a7dceda2 100644
--- a/libstdc++-v3/testsuite/abi/header_cxxabi.c
+++ b/libstdc++-v3/testsuite/abi/header_cxxabi.c
@@ -1,4 +1,5 @@
// { dg-do compile }
+// { dg-skip-if "invalid options for C" { *-*-* } { "-std=c++??" "-std=gnu++??" } }
// { dg-options "-x c" }
// Copyright (C) 2006-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc b/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
index 5740fe1bf8b..821cb29b411 100644
--- a/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
+++ b/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
@@ -39,48 +39,50 @@ int main()
int buckets;
- // Add 1 to all counts, because the std::vector used internally by the
- // hashtable creates and destroys a temporary object using the allocator.
+ // For C++11 and later add 1 to all counts, because the std::vector used
+ // internally by the hashtable creates and destroys a temporary object
+ // using its allocator.
+ const int extra = __cplusplus >= 201102L ? 1 : 0;
tracker_allocator_counter::reset();
{
Container c;
buckets = c.bucket_count();
- ok = check_construct_destroy("empty container", buckets+1, 1) && ok;
+ ok = check_construct_destroy("empty container", buckets+extra, extra) && ok;
}
- ok = check_construct_destroy("empty container", buckets+1, buckets+1) && ok;
+ ok = check_construct_destroy("empty container", buckets+extra, buckets+extra) && ok;
tracker_allocator_counter::reset();
{
Container c(arr10, arr10 + 10);
- ok = check_construct_destroy("Construct from range", buckets+10+1, 1) && ok;
+ ok = check_construct_destroy("Construct from range", buckets+10+extra, extra) && ok;
}
- ok = check_construct_destroy("Construct from range", buckets+10+1, buckets+10+1) && ok;
+ ok = check_construct_destroy("Construct from range", buckets+10+extra, buckets+10+extra) && ok;
tracker_allocator_counter::reset();
{
Container c(arr10, arr10 + 10);
c.insert(arr10a[0]);
- ok = check_construct_destroy("Insert element", buckets+11+1, 1) && ok;
+ ok = check_construct_destroy("Insert element", buckets+11+extra, extra) && ok;
}
- ok = check_construct_destroy("Insert element", buckets+11+1, buckets+11+1) && ok;
+ ok = check_construct_destroy("Insert element", buckets+11+extra, buckets+11+extra) && ok;
tracker_allocator_counter::reset();
{
Container c(arr10, arr10 + 10);
c.insert(arr10a, arr10a+3);
- ok = check_construct_destroy("Insert short range", buckets+13+1, 1) && ok;
+ ok = check_construct_destroy("Insert short range", buckets+13+extra, extra) && ok;
}
- ok = check_construct_destroy("Insert short range", buckets+13+1, buckets+13+1) && ok;
+ ok = check_construct_destroy("Insert short range", buckets+13+extra, buckets+13+extra) && ok;
tracker_allocator_counter::reset();
{
Container c(arr10, arr10 + 10);
c.insert(arr10a, arr10a+10);
- ok = check_construct_destroy("Insert long range", buckets+20+1, 1) && ok;
+ ok = check_construct_destroy("Insert long range", buckets+20+extra, extra) && ok;
}
- ok = check_construct_destroy("Insert long range", buckets+20+1, buckets+20+1) && ok;
+ ok = check_construct_destroy("Insert long range", buckets+20+extra, buckets+20+extra) && ok;
return ok ? 0 : 1;
}
diff --git a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
index 2cc31ca03be..c61f7b00f68 100644
--- a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
+++ b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
@@ -11,6 +11,8 @@
#include <complex>
#include <iomanip>
#include <shared_mutex>
+#include <map>
+#include <set>
#ifndef __cpp_lib_integer_sequence
# error "__cpp_lib_integer_sequence"
@@ -38,8 +40,8 @@
#ifndef __cpp_lib_transparent_operators
# error "__cpp_lib_transparent_operators"
-#elif __cpp_lib_transparent_operators != 201210
-# error "__cpp_lib_transparent_operators != 201210"
+#elif __cpp_lib_transparent_operators < 201210
+# error "__cpp_lib_transparent_operators < 201210"
#endif
#ifndef __cpp_lib_result_of_sfinae
@@ -78,11 +80,11 @@
# error "__cpp_lib_complex_udls != 201309"
#endif
-//#ifndef __cpp_lib_generic_associative_lookup
-//# error "__cpp_lib_generic_associative_lookup"
-//#elif __cpp_lib_generic_associative_lookup != 201304
-//# error "__cpp_lib_generic_associative_lookup != 201304"
-//#endif
+#ifndef __cpp_lib_generic_associative_lookup
+# error "__cpp_lib_generic_associative_lookup"
+#elif __cpp_lib_generic_associative_lookup != 201304
+# error "__cpp_lib_generic_associative_lookup != 201304"
+#endif
//#ifndef __cpp_lib_null_iterators
//# error "__cpp_lib_null_iterators"
@@ -119,3 +121,15 @@
#elif __cpp_lib_is_final != 201402
# error "__cpp_lib_is_final != 201402"
#endif
+
+#ifndef __cpp_lib_is_null_pointer
+# error "__cpp_lib_is_null_pointer"
+#elif __cpp_lib_is_null_pointer != 201309
+# error "__cpp_lib_is_null_pointer != 201309"
+#endif
+
+#ifndef __cpp_lib_make_reverse_iterator
+# error "__cpp_lib_make_reverse_iterator"
+#elif __cpp_lib_make_reverse_iterator != 201402
+# error "__cpp_lib_make_reverse_iterator != 201402"
+#endif
diff --git a/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc b/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
index 8ff6b6cea97..7f735e09ddc 100644
--- a/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
+++ b/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
@@ -21,7 +21,6 @@
// 8.2.1 Class template shared_ptr [memory.smartptr.shared]
#include <experimental/memory>
-#include <testsuite_hooks.h>
struct A { virtual ~A() { } };
struct B : A { };
@@ -34,8 +33,6 @@ struct B : A { };
void
test01()
{
- bool test __attribute__((unused)) = true;
-
std::experimental::shared_ptr<A[3]> a;
a = std::experimental::shared_ptr<B[3]> (new B[3]); // { dg-error "no match " }
}
@@ -43,8 +40,6 @@ test01()
void
test02()
{
- bool test __attribute__((unused)) = true;
-
std::experimental::shared_ptr<A[]> a(new A[3]);
std::experimental::shared_ptr<A[2]> spa(a); // { dg-error "no matching" }
}
diff --git a/libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc b/libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
index 2aa7d760c98..390d33ffaf2 100644
--- a/libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
+++ b/libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
@@ -12,7 +12,6 @@
// 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.
-// { dg-options "-std=gnu++14" }
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
diff --git a/libstdc++-v3/testsuite/ext/rope/6.cc b/libstdc++-v3/testsuite/ext/rope/6.cc
new file mode 100644
index 00000000000..77fdc0a4fa1
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/rope/6.cc
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 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-do compile }
+
+#include <ext/rope>
+
+// https://gcc.gnu.org/ml/libstdc++/2016-07/msg00114.html
+void
+test01()
+{
+ __gnu_cxx::crope r(100, 'x');
+ r.dump();
+}
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
index 7119ce74f74..d6108d5fd4b 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
@@ -1,6 +1,7 @@
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
index 276efd6db74..d863ae8df93 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
@@ -1,4 +1,5 @@
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
index e811c5c359b..36f9a2cc4a9 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
index ba381ca3803..8806a3c2b1d 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
@@ -1,6 +1,7 @@
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
index d87fcef03ee..5a7a4a6f670 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
@@ -1,5 +1,6 @@
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__ -ffp-contract=off" }
// { dg-additional-options "-ffloat-store" { target { m68*-*-* || ia32 } } }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
index bf76d7861cc..3748f6ebd3e 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 7bf91f3efec..1780eaff5c1 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -636,8 +636,9 @@ proc v3-build_support { } {
set object_file [file tail $obj]
# Compile with "-w" so that warnings issued by the compiler
# do not prevent compilation.
+ # Disable LTO so that ar/ranlib don't need the LTO plugin.
if { [v3_target_compile $srcdir/util/$f $object_file "object" \
- [list "incdir=$srcdir" "additional_flags=-w"]]
+ [list "incdir=$srcdir" "additional_flags=-w -fno-lto"]]
!= "" } {
error "could not compile $f"
}
@@ -1924,6 +1925,8 @@ proc check_v3_target_little_endian { } {
return $et_little_endian
}
+# Return 1 if the Filesystem TS is supported, 0 otherwise.
+# Cache the result.
proc check_v3_target_filesystem_ts { } {
global cxxflags
global DEFAULT_CXXFLAGS
@@ -1951,7 +1954,7 @@ proc check_v3_target_filesystem_ts { } {
set et_filesystem_ts 0
# Set up and preprocess a C++ test program that depends
- # on debug mode activated.
+ # on the Filesystem TS feature-test macro being defined.
set src filesystem_ts[pid].cc
set f [open $src "w"]
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
index c415ce16596..60c6871811d 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
index 89f317dfaac..d6a4f55fb7c 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
index 2214c62fd09..c2d32b79387 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
index 71af880c60d..d6a0ad1727d 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
index 63a8de3c49d..ec916ff8cfe 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
index 0c60ac64a1b..9028872c87e 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__ -ffp-contract=off" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
index 5c7e6510a49..e088030370d 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
index 9641f3aab5a..06b9a9a7c83 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc b/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
index 3dc9f33a898..07ea9fa8bd8 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc b/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
index 9cc0b3528e8..93348810f79 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc b/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
index eb5e4d02fc3..25e5f063ea1 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc b/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
index a6eb6acad1a..76ee9fcdbed 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
index 33e63c5c400..7d0eb0a2f81 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
index b2bf414bf0f..f9e99528d44 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
index cd95b6b9a97..87987f56bd4 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
index de4ef4b95b5..b3d6bfd1579 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
index e4a912f1b05..72e1d107a69 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
index 649b8e55767..eda301254d0 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
index a00a031c5cb..9fe4058f4d6 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
index 4707bab5e9f..6d198ff14e3 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
index 0bc697cf554..62be47da3bd 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
index 694bf42fbd6..6ac640fbe07 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
index 0bd99a65fd3..e38010e5df7 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
index 76da042fd32..e09580ffad5 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
index 3639d103818..0bf026414c8 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
index 792e0f14cbe..923122118ec 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
index 1d13223f33b..1237398be5f 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
index 33d3fe3bbb5..39dddc820ae 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
index 31ca8944a10..e4a2ef46281 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2015 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
index 481a94c5f1f..719dac93dd5 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
index 9a6255b6ce9..1c7c16a85b9 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
index 336b54ad4b3..7a55aa07ecb 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
index 8b25dd0a69e..1b2cf615623 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
index 48a77478906..b58a6fb9550 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
index 2bd1fa27993..b3607aa7e5b 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
index feb42faf75e..db2c447b43d 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
index 4726e67050d..6e50bdbdbb8 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
index bb9d927bd62..487d82e0489 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
index 5d320f67e44..03d6b82b5d0 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
index c9a49509e90..9a7db53d0eb 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
index 4cf86309a0f..1d1eabd03c0 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
index e5150faf090..71760204bf9 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
index 10bc509e936..b2040c7c9e7 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
index f4502691f9e..50ad2e15adf 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
index 0effa24003c..568d0c64edb 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
index 4878577d5ef..9b2eba0738b 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
index 39f3cc63522..b49a4cc61a5 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
index bd3350cd549..71206de5e4e 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
index 098f301fca7..e0f8cb04773 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
index a524c37d443..bdec59e5e1b 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
index 4332b5fe30e..d806d4880f0 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
index 02fa02d00f0..0bba92475f8 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
index 6e8f2fd019d..7e4fa00b821 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc b/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
index dfb96de5107..7c0c5e49e9c 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc b/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
index dcd943b0316..5b3f8e0bea6 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc b/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
index 9bbd9536195..facdab9ae18 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc b/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
index c501bfd2f0b..452b35f4de2 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
index e6fecef2115..cf5357e2e55 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
index a6b6a3f7a80..a805549758a 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
index 948d907e310..d97d2d4e5bf 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
index f792e1740ab..28a525bde50 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
index 9ae721c86de..b73c3db3508 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
index 82f48724796..3447ad8e14a 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
index b6636413174..7e248612297 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
index 70c85ccf498..5bb244531e1 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
index 98a9a30741c..26fa341ec8b 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
index 58944783928..626bdc90635 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
index 820293a1ba1..4d60fb91b75 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
index 00458b190cb..ff720fb072a 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
index 59c67919747..1e49e9312c7 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
index f84edd86bb8..7ab4ea0988a 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
index e655a1e0a9e..d14dbed976b 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
index e6e3cd989c9..9b7c3d144af 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
index 28a98966bc8..dd99d669e77 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
index 6ad21af3a4b..38e61626b3d 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
index 3ad65a23e99..c7ec036c261 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
index 1fb7c2dedb3..054e44294f8 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
index caa7aff820e..8e2558d4118 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
index 994054a5912..5e4344e8572 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
index a10e090a0a2..89ffc218d0d 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
index 81cc52516fa..357dbdea871 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
index e85a64323c5..03bc64399d0 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
index 441594f2615..371501d0e05 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
index 208b809b5a1..02404b5cffc 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
index b9d83862244..456d98624d3 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
index 93315606cdb..78028bbdf07 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
@@ -69,7 +69,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -123,7 +123,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -177,7 +177,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -231,7 +231,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -285,7 +285,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -339,7 +339,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -393,7 +393,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -447,7 +447,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -501,7 +501,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -556,7 +556,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -610,7 +610,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -664,7 +664,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -718,7 +718,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -772,7 +772,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -826,7 +826,7 @@ template<typename Tp>
void
test015()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -880,7 +880,7 @@ template<typename Tp>
void
test016()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -934,7 +934,7 @@ template<typename Tp>
void
test017()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -988,7 +988,7 @@ template<typename Tp>
void
test018()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1042,7 +1042,7 @@ template<typename Tp>
void
test019()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1096,7 +1096,7 @@ template<typename Tp>
void
test020()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
index 49dc3edf9a7..d7cc1c63f1c 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
@@ -69,7 +69,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -123,7 +123,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -177,7 +177,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -231,7 +231,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -285,7 +285,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -339,7 +339,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -393,7 +393,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -447,7 +447,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -501,7 +501,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -556,7 +556,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -610,7 +610,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -664,7 +664,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -718,7 +718,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -772,7 +772,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -826,7 +826,7 @@ template<typename Tp>
void
test015()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -880,7 +880,7 @@ template<typename Tp>
void
test016()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -934,7 +934,7 @@ template<typename Tp>
void
test017()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -988,7 +988,7 @@ template<typename Tp>
void
test018()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1042,7 +1042,7 @@ template<typename Tp>
void
test019()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1096,7 +1096,7 @@ template<typename Tp>
void
test020()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
index 038aa2b2f95..d664d1eaf06 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
@@ -68,7 +68,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -121,7 +121,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -174,7 +174,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -227,7 +227,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -280,7 +280,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -333,7 +333,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -386,7 +386,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -439,7 +439,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -492,7 +492,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -545,7 +545,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -598,7 +598,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -652,7 +652,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -705,7 +705,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -758,7 +758,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -811,7 +811,7 @@ template<typename Tp>
void
test015()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -864,7 +864,7 @@ template<typename Tp>
void
test016()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -917,7 +917,7 @@ template<typename Tp>
void
test017()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -970,7 +970,7 @@ template<typename Tp>
void
test018()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1023,7 +1023,7 @@ template<typename Tp>
void
test019()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1076,7 +1076,7 @@ template<typename Tp>
void
test020()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1129,7 +1129,7 @@ template<typename Tp>
void
test021()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1182,7 +1182,7 @@ template<typename Tp>
void
test022()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
index 187bd02312a..f6262d0d399 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
@@ -68,7 +68,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -121,7 +121,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -174,7 +174,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -227,7 +227,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -273,7 +273,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -326,7 +326,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -372,7 +372,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -425,7 +425,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -478,7 +478,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -531,7 +531,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -584,7 +584,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -638,7 +638,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -691,7 +691,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -744,7 +744,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -797,7 +797,7 @@ template<typename Tp>
void
test015()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -850,7 +850,7 @@ template<typename Tp>
void
test016()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -903,7 +903,7 @@ template<typename Tp>
void
test017()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -956,7 +956,7 @@ template<typename Tp>
void
test018()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1009,7 +1009,7 @@ template<typename Tp>
void
test019()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1062,7 +1062,7 @@ template<typename Tp>
void
test020()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1115,7 +1115,7 @@ template<typename Tp>
void
test021()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -1168,7 +1168,7 @@ template<typename Tp>
void
test022()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
index b8605d8aea7..ff4b7b1c301 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
@@ -1,5 +1,3 @@
-// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
-//
// Copyright (C) 2016 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
index b62dc051a52..d4f32814ecf 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
@@ -69,7 +69,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -123,7 +123,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -177,7 +177,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -231,7 +231,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -285,7 +285,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -339,7 +339,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -394,7 +394,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -448,7 +448,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -502,7 +502,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -556,7 +556,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -610,7 +610,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -664,7 +664,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -718,7 +718,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -772,7 +772,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
index 396f15945d1..000cdfc6334 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
@@ -68,7 +68,7 @@ template<typename Tp>
void
test001()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -121,7 +121,7 @@ template<typename Tp>
void
test002()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -174,7 +174,7 @@ template<typename Tp>
void
test003()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -227,7 +227,7 @@ template<typename Tp>
void
test004()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -280,7 +280,7 @@ template<typename Tp>
void
test005()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -333,7 +333,7 @@ template<typename Tp>
void
test006()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -386,7 +386,7 @@ template<typename Tp>
void
test007()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -439,7 +439,7 @@ template<typename Tp>
void
test008()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -493,7 +493,7 @@ template<typename Tp>
void
test009()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -546,7 +546,7 @@ template<typename Tp>
void
test010()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -599,7 +599,7 @@ template<typename Tp>
void
test011()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -652,7 +652,7 @@ template<typename Tp>
void
test012()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -705,7 +705,7 @@ template<typename Tp>
void
test013()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -758,7 +758,7 @@ template<typename Tp>
void
test014()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -811,7 +811,7 @@ template<typename Tp>
void
test015()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
@@ -864,7 +864,7 @@ template<typename Tp>
void
test016()
{
- bool test [[gnu::unused]] = true;
+ bool test __attribute__((unused)) = true;
const Tp eps = std::numeric_limits<Tp>::epsilon();
Tp max_abs_diff = -Tp(1);
Tp max_abs_frac = -Tp(1);
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc
index caf154400f9..90013454ba9 100644
--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc
@@ -201,8 +201,9 @@ check_version(symbol& test, bool added)
known_versions.push_back("GLIBCXX_3.4.19");
known_versions.push_back("GLIBCXX_3.4.20");
known_versions.push_back("GLIBCXX_3.4.21");
- known_versions.push_back("GLIBCXX_3.4.22");
known_versions.push_back("GLIBCXX_LDBL_3.4.21");
+ known_versions.push_back("GLIBCXX_3.4.22");
+ known_versions.push_back("GLIBCXX_3.4.23");
known_versions.push_back("CXXABI_1.3");
known_versions.push_back("CXXABI_LDBL_1.3");
known_versions.push_back("CXXABI_1.3.1");
@@ -232,7 +233,7 @@ check_version(symbol& test, bool added)
test.version_status = symbol::incompatible;
// Check that added symbols are added in the latest pre-release version.
- bool latestp = (test.version_name == "GLIBCXX_3.4.22"
+ bool latestp = (test.version_name == "GLIBCXX_3.4.23"
|| test.version_name == "CXXABI_1.3.10"
|| test.version_name == "CXXABI_FLOAT128"
|| test.version_name == "CXXABI_TM_1");