diff options
author | Martin Jambor <mjambor@suse.cz> | 2016-08-10 09:28:11 +0000 |
---|---|---|
committer | Martin Jambor <mjambor@suse.cz> | 2016-08-10 09:28:11 +0000 |
commit | 03677eaa7c439c47380d2722638bc6a900b4c90d (patch) | |
tree | 6c161ef23e78c67b1824e06ba1de372bd1643d7e /libstdc++-v3 | |
parent | 235409ecd427505297676d22cabbe90553a46086 (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')
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 >= 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 >= 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 >= 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(<variant>)</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(<optional>)</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(<any>)</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(<string_view>)</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(<memory_resource>)</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 >= 201603</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Library Fundamentals V1 TS Components: <code class="code">shared_ptr<T[]></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 >= 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 >= 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 >= 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 >= 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"><functional></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 >= 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 >= 201603 </code></td></tr><tr><td align="left"> Safe conversions in <code class="code">unique_ptr<T[]></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<T[]></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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 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 >= 201606</code></td></tr><tr><td align="left"> Polishing <code class="code"><chrono></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 >= 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 >= 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 >= 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 >= 201411</code>, + <code class="code"> __cpp_lib_unordered_map_try_emplace >= 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 >= 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 >= 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 >= 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(<execution>) </code>, + <code class="code"> __cpp_lib_parallel_algorithm >= 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 >= 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 >= 201606 </code>, + <code class="code"> __cpp_lib_lcm >= 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 >= 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 >= 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__ >= 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(<filesystem>) </code>, + <code class="code"> __cpp_lib_filesystem >= 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<T>::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 >= 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 >= 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 >= 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(<variant>)</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(<optional>)</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(<any>)</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(<string_view>)</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(<memory_resource>)</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<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/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><functional></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<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/n4089.pdf"> - N4089 + N4089 </link> </entry> - <entry>Safe conversions in <code>unique_ptr<T[]></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><chrono></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(<execution>) </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(<filesystem>) </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<T>::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"); |