aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2021-02-28 01:13:50 +0000
committerIain Sandoe <iain@sandoe.co.uk>2021-02-28 16:28:12 +0000
commit3c173f7890cfd6649b687adc5b0598d9e01fcd6d (patch)
tree8a8c7c19826206fd788ef54e6502451d8f71ab3f /gcc
parent7e5d7fc7e6f99b7332284e2fd07502f4a049acc1 (diff)
downloadgcc-3c173f7890cfd6649b687adc5b0598d9e01fcd6d.zip
gcc-3c173f7890cfd6649b687adc5b0598d9e01fcd6d.tar.gz
gcc-3c173f7890cfd6649b687adc5b0598d9e01fcd6d.tar.bz2
testsuite, coroutines : Mark final awaiters and co_await operators noexcept.
This is part of the requirement of [dcl.fct.def.coroutine]/15. In addition to promise final_suspend() calls, the following cases must also be noexcept as per discussion in PR95616. - finalSuspendObj.operator co_await() - finalSuspendAwaiter.await_ready() - finalSuspendAwaiter.await_suspend() - finalSuspendAwaiter.await_resume() - finalSuspedObj destructor - finalSuspendAwaiter destructor Fixed for missing cases in the testsuite as a prerequisite to fixing PR95616. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr94879-folly-1.C: Make final suspend expression components noexcept. * g++.dg/coroutines/pr94883-folly-2.C: Likewise. * g++.dg/coroutines/pr95345.C: Likewise.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C8
-rw-r--r--gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C6
-rw-r--r--gcc/testsuite/g++.dg/coroutines/pr95345.C6
3 files changed, 10 insertions, 10 deletions
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C b/gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C
index e815ca7..11bcce0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C
@@ -18,14 +18,14 @@ class i {
namespace ac {
template <typename> class ad {
public:
- bool await_ready();
- void await_resume();
- void await_suspend(std::coroutine_handle<>);
+ bool await_ready() noexcept;
+ void await_resume() noexcept;
+ void await_suspend(std::coroutine_handle<>) noexcept;
i ae;
};
} // namespace ac
-template <typename ab> ac::ad<ab> operator co_await(ab);
+template <typename ab> ac::ad<ab> operator co_await(ab) noexcept;
class j {
class l {};
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C b/gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C
index c5fa659..ce06cfd 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C
@@ -16,9 +16,9 @@ int f;
class h {
class j {
public:
- bool await_ready();
- void await_suspend(std::coroutine_handle<>);
- void await_resume();
+ bool await_ready() noexcept;
+ void await_suspend(std::coroutine_handle<>) noexcept;
+ void await_resume() noexcept;
};
public:
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95345.C b/gcc/testsuite/g++.dg/coroutines/pr95345.C
index 8eae611..57b95cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95345.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95345.C
@@ -9,9 +9,9 @@ using namespace std::experimental;
struct dummy_coro
{
using promise_type = dummy_coro;
- bool await_ready() { return false; }
- void await_suspend(std::coroutine_handle<>) { }
- void await_resume() { }
+ bool await_ready() noexcept { return false; }
+ void await_suspend(std::coroutine_handle<>) noexcept { }
+ void await_resume() noexcept { }
dummy_coro get_return_object() { return {}; }
dummy_coro initial_suspend() { return {}; }
dummy_coro final_suspend() noexcept { return {}; }