From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp001-out.apm-internet.net (smtp001-out.apm-internet.net [85.119.248.222]) by sourceware.org (Postfix) with ESMTPS id 7CC833858D33 for ; Sun, 28 Feb 2021 16:31:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7CC833858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sandoe.co.uk Authentication-Results: sourceware.org; spf=none smtp.mailfrom=iain@sandoe.co.uk Received: (qmail 48894 invoked from network); 28 Feb 2021 16:31:31 -0000 X-APM-Out-ID: 16145298914889 X-APM-Authkey: 257869/1(257869/1) 3 Received: from unknown (HELO ?192.168.1.212?) (81.138.1.83) by smtp001.apm-internet.net with SMTP; 28 Feb 2021 16:31:31 -0000 From: Iain Sandoe Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: [pushed] testsuite, coroutines : Mark final awaiters and co_await operators noexcept. Message-Id: Date: Sun, 28 Feb 2021 16:31:30 +0000 To: GCC-patches@gcc.gnu.org X-Mailer: Apple Mail (2.3273) X-Spam-Status: No, score=-17.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_COUK, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Feb 2021 16:31:37 -0000 Hi, Fixing up some non-conforming testcases. 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. tested on x86_64-darwin, x86_64-linux-gnu pushed to master, thanks Iain 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. --- gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C | 8 ++++---- gcc/testsuite/g++.dg/coroutines/pr94883-folly-2.C | 6 +++--- gcc/testsuite/g++.dg/coroutines/pr95345.C | 6 +++--- 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 e815ca70735..11bcce04b7d 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 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 ac::ad operator co_await(ab); +template ac::ad 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 c5fa65931e0..ce06cfddb0a 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 8eae611b8d3..57b95cbebb2 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 {}; } -- 2.24.1