[libcxx] Recover no-exceptions XFAILs - I
First batch of changes to get some of these XFAILs working in the no-exceptions libc++ variant. Changed some XFAILs to UNSUPPORTED where the test is all about exception handling. In other cases, used the test macros TEST_THROW and TEST_HAS_NO_EXCEPTIONS to conditionally exclude those parts of the test that concerns exception handling behaviour. Reviewers: EricWF, mclow.lists Differential revision: https://reviews.llvm.org/D24562 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283441 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// XFAIL: libcpp-no-exceptions
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
|
||||
// <thread>
|
||||
@@ -33,7 +32,7 @@ std::atomic<unsigned> outstanding_new(0);
|
||||
void* operator new(std::size_t s) throw(std::bad_alloc)
|
||||
{
|
||||
if (throw_one == 0)
|
||||
throw std::bad_alloc();
|
||||
TEST_THROW(std::bad_alloc());
|
||||
--throw_one;
|
||||
++outstanding_new;
|
||||
void* ret = std::malloc(s);
|
||||
@@ -118,6 +117,7 @@ public:
|
||||
// 3 Finally check that a thread runs successfully if we throw after 'N+1'
|
||||
// allocations.
|
||||
void test_throwing_new_during_thread_creation() {
|
||||
#ifndef TEST_HAS_NO_EXCEPTIONS
|
||||
throw_one = 0xFFF;
|
||||
{
|
||||
std::thread t(f);
|
||||
@@ -142,6 +142,7 @@ void test_throwing_new_during_thread_creation() {
|
||||
}
|
||||
f_run = false;
|
||||
throw_one = 0xFFF;
|
||||
#endif
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -162,6 +163,7 @@ int main()
|
||||
assert(G::op_run);
|
||||
}
|
||||
G::op_run = false;
|
||||
#ifndef TEST_HAS_NO_EXCEPTIONS
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -178,6 +180,7 @@ int main()
|
||||
assert(!G::op_run);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if TEST_STD_VER >= 11
|
||||
{
|
||||
assert(G::n_alive == 0);
|
||||
|
||||
Reference in New Issue
Block a user