diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-05-05 09:50:53 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-05-05 21:13:58 +0100 |
commit | b6b66006787b0991e94f15c7b5c56403f1eb85fb (patch) | |
tree | 18845b0f848d1cb6edcb7e866efb6e18a36ca2eb /libstdc++-v3/testsuite/22_locale | |
parent | b06a79b82366a53fffc113f3bb5f873dbc70e381 (diff) | |
download | gcc-b6b66006787b0991e94f15c7b5c56403f1eb85fb.zip gcc-b6b66006787b0991e94f15c7b5c56403f1eb85fb.tar.gz gcc-b6b66006787b0991e94f15c7b5c56403f1eb85fb.tar.bz2 |
libstdc++: Fixes for tests that fail with -fno-rtti
This disables a use of dynamic_cast that is not valid for -fno-rtti and
adjusts some tests so they don't FAIL with -fno-rtti. Some tests are
skipped completely, and others just make use of typeid conditional on
the __cpp_rtti macro. A couple of tests were using typeid to verify
typedefs denote the right type, which can be done at compile-time using
templates instead.
libstdc++-v3/ChangeLog:
* include/experimental/memory_resource [!__cpp_rtti]
(__resource_adaptor_imp::do_is_equal): Do not use dynamic_cast
when RTTI is disabled.
* testsuite/17_intro/freestanding.cc: Require RTTI.
* testsuite/18_support/exception/38732.cc: Likewise.
* testsuite/18_support/exception_ptr/rethrow_exception.cc:
Likewise.
* testsuite/18_support/nested_exception/68139.cc: Likewise.
* testsuite/18_support/nested_exception/rethrow_if_nested.cc:
Likewise.
* testsuite/18_support/type_info/103240.cc: Likewise.
* testsuite/18_support/type_info/fundamental.cc: Likewise.
* testsuite/18_support/type_info/hash_code.cc: Likewise.
* testsuite/20_util/any/assign/emplace.cc: Likewise.
* testsuite/20_util/any/cons/in_place.cc: Likewise.
* testsuite/20_util/any/misc/any_cast.cc: Likewise.
* testsuite/20_util/any/observers/type.cc: Likewise.
* testsuite/20_util/function/1.cc: Likewise.
* testsuite/20_util/function/2.cc: Likewise.
* testsuite/20_util/function/3.cc: Likewise.
* testsuite/20_util/function/4.cc: Likewise.
* testsuite/20_util/function/5.cc: Likewise.
* testsuite/20_util/function/6.cc: Likewise.
* testsuite/20_util/function/7.cc: Likewise.
* testsuite/20_util/function/8.cc: Likewise.
* testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
Likewise.
* testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
* testsuite/20_util/typeindex/comparison_operators.cc: Likewise.
* testsuite/20_util/typeindex/comparison_operators_c++20.cc:
Likewise.
* testsuite/20_util/typeindex/hash.cc: Likewise.
* testsuite/20_util/typeindex/hash_code.cc: Likewise.
* testsuite/20_util/typeindex/name.cc: Likewise.
* testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
* testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
Likewise.
* testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
Likewise.
* testsuite/22_locale/locale/13630.cc: Check type without using
RTTI.
* testsuite/23_containers/array/requirements/non_default_constructible.cc:
Require RTTI.
* testsuite/27_io/basic_ostream/emit/1.cc: Likewise.
* testsuite/27_io/fpos/14320-1.cc: Check type without using RTTI.
* testsuite/27_io/fpos/mbstate_t/12065.cc: Require RTTI.
* testsuite/27_io/ios_base/failure/dual_abi.cc: Likewise.
* testsuite/experimental/any/misc/any_cast.cc: Likewise.
* testsuite/experimental/any/observers/type.cc: Likewise.
* testsuite/experimental/memory_resource/resource_adaptor.cc:
Likewise.
* testsuite/lib/libstdc++.exp (check_effective_target_rtti):
Define new proc.
* testsuite/tr1/3_function_objects/function/1.cc: Likewise.
* testsuite/tr1/3_function_objects/function/2.cc: Likewise.
* testsuite/tr1/3_function_objects/function/3.cc: Likewise.
* testsuite/tr1/3_function_objects/function/4.cc: Likewise.
* testsuite/tr1/3_function_objects/function/5.cc: Likewise.
* testsuite/tr1/3_function_objects/function/6.cc: Likewise.
* testsuite/tr1/3_function_objects/function/7.cc: Likewise.
* testsuite/tr1/3_function_objects/function/8.cc: Likewise.
* testsuite/tr2/bases/value.cc: Likewise.
* testsuite/tr2/direct_bases/value.cc: Likewise.
* testsuite/util/exception/safety.h [!__cpp_rtti]: Don't print
types without RTTI.
Diffstat (limited to 'libstdc++-v3/testsuite/22_locale')
4 files changed, 10 insertions, 13 deletions
diff --git a/libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc b/libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc index 77bb1a6..7935c99 100644 --- a/libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc +++ b/libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc @@ -18,6 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-error "complete" "" { target *-*-* } 0 } +// { dg-error "invalid 'static_cast'" "" { target { ! rtti } } 0 } #include <locale> diff --git a/libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc b/libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc index fe55940..8f8762d 100644 --- a/libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc +++ b/libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc @@ -40,8 +40,10 @@ int main() VERIFY( has_facet<base_facet>(loc_derived) ); // Standard derived facet. +#if __cpp_rtti VERIFY( !has_facet<derived_facet>(loc_c) ); VERIFY( !has_facet<derived_facet>(loc_base) ); +#endif VERIFY( has_facet<derived_facet>(loc_derived) ); diff --git a/libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc b/libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc index 9944605..3d499a3 100644 --- a/libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc +++ b/libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc @@ -65,6 +65,7 @@ int main() // User defined derived facet. VERIFY( !has_facet<derived_facet>(loc_c) ); +#if __cpp_rtti VERIFY( !has_facet<derived_facet>(loc_base) ); VERIFY( has_facet<derived_facet>(loc_derived) ); @@ -97,6 +98,7 @@ int main() // Expect no exception. VERIFY( true ); } +#endif return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/locale/13630.cc b/libstdc++-v3/testsuite/22_locale/locale/13630.cc index bffc9fd..b6bd0fd 100644 --- a/libstdc++-v3/testsuite/22_locale/locale/13630.cc +++ b/libstdc++-v3/testsuite/22_locale/locale/13630.cc @@ -17,19 +17,11 @@ // 22.1.1 class locale [lib.locale] -#include <locale> -#include <typeinfo> -#include <testsuite_hooks.h> +// { dg-do compile } -void test01() -{ - using namespace std; +#include <locale> - VERIFY( typeid(locale::category) == typeid(int) ); -} +template<typename, typename> struct SameType; +template<typename T> struct SameType<T, T> { }; -int main() -{ - test01(); - return 0; -} +SameType<std::locale::category, int> check; |