From: Iain Sandoe Date: Sun, 5 Apr 2020 10:50:10 +0000 (+0100) Subject: coroutines, testsuite: Renumber two tests (NFC). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b35e71d45afa257a21c5ae00e084df62aadc8aa;p=gcc.git coroutines, testsuite: Renumber two tests (NFC). Try to keep tests order by distinct number (and with a short descriptive name appended). 2020-04-05 Iain Sandoe * g++.dg/coroutines/torture/co-await-14-template-traits.C: Rename... * g++.dg/coroutines/torture/co-await-16-template-traits.C: to this. * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: Rename.. * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: to this. --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7d90855df0c..88bab5d3d19 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,13 @@ -2020-04-05 Nagaraju Mekala - - * gcc.target/microblaze/others/builtin-trap.c: Update expected output. +2020-04-05 Iain Sandoe + + * g++.dg/coroutines/torture/co-await-14-template-traits.C: Rename... + * g++.dg/coroutines/torture/co-await-16-template-traits.C: to this. + * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: Rename.. + * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: to this. + +2020-04-05 Nagaraju Mekala + + * gcc.target/microblaze/others/builtin-trap.c: Update expected output. 2020-04-04 Hannes Domani Jakub Jelinek diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-template-traits.C deleted file mode 100644 index 4e670b1c308..00000000000 --- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-template-traits.C +++ /dev/null @@ -1,24 +0,0 @@ -// { dg-do compile } -// Test we create co_await_expr with dependent type rather than type of awaitable class - -#include "../coro.h" -#include "../coro1-ret-int-yield-int.h" -#include - -struct TestAwaiter { - int recent_test; - TestAwaiter(int test) : recent_test{test} {} - bool await_ready() { return true; } - void await_suspend(coro::coroutine_handle<>) {} - int await_resume() { return recent_test;} - void return_value(int x) { recent_test = x;} -}; - -template -coro1 test_temparg (std::chrono::duration dur) -{ - auto sum = co_await TestAwaiter(1); - if (!sum) - dur.count(); - co_return 0; -} diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C deleted file mode 100644 index 93a43fbd298..00000000000 --- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C +++ /dev/null @@ -1,99 +0,0 @@ -// { dg-do run } - -#include "../coro.h" - -class resumable { -public: - struct promise_type; - using coro_handle = std::coroutine_handle; - resumable(coro_handle handle) : handle_(handle) { } - resumable(resumable&) = delete; - resumable(resumable&&) = delete; - ~resumable() { handle_.destroy(); } - coro_handle handle_; -}; - -struct resumable::promise_type { - using coro_handle = std::coroutine_handle; - int used; - auto get_return_object() { - return coro_handle::from_promise(*this); - } - auto initial_suspend() { return std::suspend_never(); } - auto final_suspend() { return std::suspend_always(); } - void return_value(int x) {used = x;} - void unhandled_exception() {} - - struct TestAwaiter { - int recent_test; - TestAwaiter(int test) : recent_test{test} {} - bool await_ready() { return false; } - void await_suspend(std::coroutine_handle) {} - int await_resume() { - return recent_test; - } - auto operator co_await() { - return *this; - } - }; - - struct TestAwaiterCH :TestAwaiter { - TestAwaiterCH(int test) : TestAwaiter(test) {}; - }; - - struct TestAwaiterCHCH :TestAwaiterCH { - TestAwaiterCHCH(int test) : TestAwaiterCH(test) {}; - - resumable foo(){ - int x = co_await *this; - co_return x; - } - }; -}; - -struct TestP { - resumable::promise_type::TestAwaiterCHCH tp = resumable::promise_type::TestAwaiterCHCH(6); -}; - -resumable foo1(int t){ - int x = co_await resumable::promise_type::TestAwaiterCH(t); - co_return x; -} - -resumable foo2(){ - struct TestP TP; - int x = co_await TP.tp; - co_return x; -} - -resumable foo3(){ - int x = co_await TestP{}.tp; - co_return x; -} - -int main(){ - auto t = resumable::promise_type::TestAwaiterCHCH(4); - resumable res = t.foo(); - while (!res.handle_.done()) - res.handle_.resume(); - if (res.handle_.promise().used != 4) - abort(); - - resumable res1 = foo1(5); - while (!res1.handle_.done()) - res1.handle_.resume(); - if (res1.handle_.promise().used != 5) - abort(); - - resumable res2 = foo2(); - while (!res2.handle_.done()) - res2.handle_.resume(); - if (res2.handle_.promise().used != 6) - abort(); - - resumable res3 = foo2(); - while (!res3.handle_.done()) - res3.handle_.resume(); - if (res3.handle_.promise().used != 6) - abort(); -} diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C new file mode 100644 index 00000000000..4e670b1c308 --- /dev/null +++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C @@ -0,0 +1,24 @@ +// { dg-do compile } +// Test we create co_await_expr with dependent type rather than type of awaitable class + +#include "../coro.h" +#include "../coro1-ret-int-yield-int.h" +#include + +struct TestAwaiter { + int recent_test; + TestAwaiter(int test) : recent_test{test} {} + bool await_ready() { return true; } + void await_suspend(coro::coroutine_handle<>) {} + int await_resume() { return recent_test;} + void return_value(int x) { recent_test = x;} +}; + +template +coro1 test_temparg (std::chrono::duration dur) +{ + auto sum = co_await TestAwaiter(1); + if (!sum) + dur.count(); + co_return 0; +} diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C new file mode 100644 index 00000000000..93a43fbd298 --- /dev/null +++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C @@ -0,0 +1,99 @@ +// { dg-do run } + +#include "../coro.h" + +class resumable { +public: + struct promise_type; + using coro_handle = std::coroutine_handle; + resumable(coro_handle handle) : handle_(handle) { } + resumable(resumable&) = delete; + resumable(resumable&&) = delete; + ~resumable() { handle_.destroy(); } + coro_handle handle_; +}; + +struct resumable::promise_type { + using coro_handle = std::coroutine_handle; + int used; + auto get_return_object() { + return coro_handle::from_promise(*this); + } + auto initial_suspend() { return std::suspend_never(); } + auto final_suspend() { return std::suspend_always(); } + void return_value(int x) {used = x;} + void unhandled_exception() {} + + struct TestAwaiter { + int recent_test; + TestAwaiter(int test) : recent_test{test} {} + bool await_ready() { return false; } + void await_suspend(std::coroutine_handle) {} + int await_resume() { + return recent_test; + } + auto operator co_await() { + return *this; + } + }; + + struct TestAwaiterCH :TestAwaiter { + TestAwaiterCH(int test) : TestAwaiter(test) {}; + }; + + struct TestAwaiterCHCH :TestAwaiterCH { + TestAwaiterCHCH(int test) : TestAwaiterCH(test) {}; + + resumable foo(){ + int x = co_await *this; + co_return x; + } + }; +}; + +struct TestP { + resumable::promise_type::TestAwaiterCHCH tp = resumable::promise_type::TestAwaiterCHCH(6); +}; + +resumable foo1(int t){ + int x = co_await resumable::promise_type::TestAwaiterCH(t); + co_return x; +} + +resumable foo2(){ + struct TestP TP; + int x = co_await TP.tp; + co_return x; +} + +resumable foo3(){ + int x = co_await TestP{}.tp; + co_return x; +} + +int main(){ + auto t = resumable::promise_type::TestAwaiterCHCH(4); + resumable res = t.foo(); + while (!res.handle_.done()) + res.handle_.resume(); + if (res.handle_.promise().used != 4) + abort(); + + resumable res1 = foo1(5); + while (!res1.handle_.done()) + res1.handle_.resume(); + if (res1.handle_.promise().used != 5) + abort(); + + resumable res2 = foo2(); + while (!res2.handle_.done()) + res2.handle_.resume(); + if (res2.handle_.promise().used != 6) + abort(); + + resumable res3 = foo2(); + while (!res3.handle_.done()) + res3.handle_.resume(); + if (res3.handle_.promise().used != 6) + abort(); +}