libstdc++: Make testsuite usable with -fno-exceptions
Previously it was not possible to add -fno-exceptions to the testsuite flags, because some files that are compiled by the v3-build_support procedure failed with exceptions disabled. This adjusts those files to still compile without exceptions (with degraded functionality in some cases). The sole testcase that explicitly checks for -fno-exceptions has also been adjusted to use the more robust exceptions_enabled effective-target keyword from gcc/testsuite/lib/target-supports.exp. libstdc++-v3/ChangeLog: * testsuite/23_containers/vector/bool/72847.cc: Use the exceptions_enabled effective-target keyword instead of checking for an explicit -fno-exceptions option. * testsuite/util/testsuite_abi.cc (examine_symbol): Remove redundant try-catch. * testsuite/util/testsuite_allocator.h [!__cpp_exceptions]: Do not define check_allocate_max_size and memory_resource. * testsuite/util/testsuite_containers.h: Replace comment with #error if wrong standard dialect used. * testsuite/util/testsuite_shared.cc: Likewise.
This commit is contained in:
parent
7d4ee8bc58
commit
4c27c6584d
5 changed files with 15 additions and 14 deletions
|
@ -15,7 +15,7 @@
|
|||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-skip-if "" { *-*-* } { "-fno-exceptions" } }
|
||||
// { dg-require-effective-target exceptions_enabled }
|
||||
|
||||
#include <vector>
|
||||
#include <ext/throw_allocator.h>
|
||||
|
|
|
@ -362,14 +362,9 @@ get_symbol(const string& name, const symbols& s)
|
|||
void
|
||||
examine_symbol(const char* name, const char* file)
|
||||
{
|
||||
try
|
||||
{
|
||||
symbols s = create_symbols(file);
|
||||
const symbol& sym = get_symbol(name, s);
|
||||
sym.print();
|
||||
}
|
||||
catch(...)
|
||||
{ __throw_exception_again; }
|
||||
symbols s = create_symbols(file);
|
||||
const symbol& sym = get_symbol(name, s);
|
||||
sym.print();
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -257,6 +257,7 @@ namespace __gnu_test
|
|||
return true;
|
||||
}
|
||||
|
||||
#if __cpp_exceptions
|
||||
template<typename Alloc>
|
||||
bool
|
||||
check_allocate_max_size()
|
||||
|
@ -276,6 +277,7 @@ namespace __gnu_test
|
|||
}
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
|
||||
// A simple allocator which can be constructed endowed of a given
|
||||
// "personality" (an integer), queried in operator== to simulate the
|
||||
|
@ -761,7 +763,7 @@ namespace __gnu_test
|
|||
#endif // C++11
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
#if __cpp_aligned_new && __cpp_rtti
|
||||
#if __cpp_aligned_new && __cpp_rtti && __cpp_exceptions
|
||||
// A concrete memory_resource, with error checking.
|
||||
class memory_resource : public std::pmr::memory_resource
|
||||
{
|
||||
|
|
|
@ -408,8 +408,9 @@ namespace __gnu_test
|
|||
void
|
||||
erase_external_iterators(std::multimap<int, int>& s);
|
||||
|
||||
// NB: "must be compiled with C++11"
|
||||
#if __cplusplus >= 201103L
|
||||
#if __cplusplus < 201103L
|
||||
# error "must be compiled with C++11 (or later)"
|
||||
#else
|
||||
template<typename _Tp>
|
||||
void
|
||||
linkage_check_cxx98_cxx11_erase(_Tp& container)
|
||||
|
|
|
@ -45,12 +45,14 @@ try_allocation()
|
|||
extern "C" void
|
||||
try_throw_exception()
|
||||
{
|
||||
#if __cpp_exceptions
|
||||
try
|
||||
{
|
||||
std::__throw_bad_exception();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{ }
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
|
@ -75,8 +77,9 @@ try_function_random_fail()
|
|||
std::__throw_bad_exception();
|
||||
}
|
||||
|
||||
#if __cplusplus < 201103L
|
||||
// "must be compiled with C++98"
|
||||
#if __cplusplus >= 201103L
|
||||
# error "must be compiled with C++98"
|
||||
#else
|
||||
void
|
||||
erase_external(std::set<int>& s)
|
||||
{ s.erase(s.begin()); }
|
||||
|
|
Loading…
Add table
Reference in a new issue