[libcxx-commits] [libcxx] [libcxx] Test `await_suspend` control flow & `coro_await_suspend_destroy` attr (PR #152820)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri Aug 8 19:29:53 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: None (snarkmaster)

<details>
<summary>Changes</summary>

When reviewing https://github.com/llvm/llvm-project/pull/152623, @@<!-- -->ChuanqiXu9 suggested that it's better to separate `clang` and `libcxx` changes, so I did that here.

This event-replay test is compatible with compilers lacking the new attribute `[[clang::coro_await_suspend_destroy]]`. The two PRs can be landed in any order.

The test does not just verify the attribute's correct behavior. By comparing "gold" event traces, it also provides some "change detector" protection against future breakage in the complex control flow of the main C++ coroutine implementation. Since suspension remains an area of active optimization work, such bugs are not ruled out.  For example, as a new contributor to LLVM, I made (and fixed) 2 control-flow bugs while working on #<!-- -->152623.  This test would've caught both.

---

Patch is 128.81 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/152820.diff


3 Files Affected:

- (added) libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.golden-exceptions.h (+1163) 
- (added) libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.golden-no-exceptions.h (+1156) 
- (added) libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.pass.cpp (+560) 


``````````diff
diff --git a/libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.golden-exceptions.h b/libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.golden-exceptions.h
new file mode 100644
index 0000000000000..2911e97ad9f59
--- /dev/null
+++ b/libcxx/test/std/language.support/support.coroutines/end.to.end/coro_await_suspend_destroy.golden-exceptions.h
@@ -0,0 +1,1163 @@
+// coro_await_suspend_destroy.golden-exceptions.h
++ test_coro_shortcircuits_to_empty(std::vector<test_driver>{
+    {.toggles_    = 0,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 18,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+    {.toggles_    = 1,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 19,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+    {.toggles_    = 2,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 18,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+    {.toggles_    = 3,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 19,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+    {.toggles_    = 4,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 5,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 6,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 7,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 8,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 22,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 65}},
+    {.toggles_    = 9,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 23,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 10,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 22,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 65}},
+    {.toggles_    = 11,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 23,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 12,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 13,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 14,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 15,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 16,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 18,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+    {.toggles_    = 17,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 19,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+    {.toggles_    = 18,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 18,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+    {.toggles_    = 19,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 19,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+    {.toggles_    = 20,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 21,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 22,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 23,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 24,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 22,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 65}},
+    {.toggles_    = 25,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 23,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 26,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 22,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 65}},
+    {.toggles_    = 27,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 23,
+     .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 28,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 29,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    {.toggles_    = 30,
+     .threw_      = 0,
+     .result_     = {},
+     .next_event_ = 15,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+    {.toggles_    = 31,
+     .threw_      = 1,
+     .result_     = -1,
+     .next_event_ = 16,
+     .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+}) +
+    test_coro_simple_await(std::vector<test_driver>{
+        {.toggles_    = 0,
+         .threw_      = 0,
+         .result_     = 12,
+         .next_event_ = 20,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 75, 2, 75, 1, 69, 66, 64, 65}},
+        {.toggles_    = 1,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 21,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 75, 2, 75, 1, 69, 66, 64, 81, 65}},
+        {.toggles_    = 2,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 22,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 71, 75, 2, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 3,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 71, 75, 2, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 4,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 5,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 6,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 7,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 8,
+         .threw_      = 0,
+         .result_     = 12,
+         .next_event_ = 20,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 75, 2, 75, 1, 69, 66, 64, 65}},
+        {.toggles_    = 9,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 21,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 75, 2, 75, 1, 69, 66, 64, 81, 65}},
+        {.toggles_    = 10,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 22,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 71, 75, 2, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 11,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 74, 2, 70, 12, 71, 75, 2, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 12,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 13,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 14,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 15,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 16,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 75, 2, 75, 1, 66, 64, 65}},
+        {.toggles_    = 17,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 75, 2, 75, 1, 66, 64, 81, 65}},
+        {.toggles_    = 18,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 75, 2, 75, 1, 66, 64, 65}},
+        {.toggles_    = 19,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 75, 2, 75, 1, 66, 64, 81, 65}},
+        {.toggles_    = 20,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 21,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 22,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 23,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 24,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 22,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 25,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 26,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 22,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 27,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 28,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 29,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 30,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 15,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 65}},
+        {.toggles_    = 31,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 72, 69, 66, 64, 81, 65}},
+    }) +
+    test_coro_catching_shortcircuits_to_empty(std::vector<test_driver>{
+        {.toggles_    = 0,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+        {.toggles_    = 1,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+        {.toggles_    = 2,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+        {.toggles_    = 3,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+        {.toggles_    = 4,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 5,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 6,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 7,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 8,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 9,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 24,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 10,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 11,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 24,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 12,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 13,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 14,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 15,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 16,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+        {.toggles_    = 17,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+        {.toggles_    = 18,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 18,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 65}},
+        {.toggles_    = 19,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 19,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 75, 2, 66, 64, 81, 65}},
+        {.toggles_    = 20,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 21,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 22,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 23,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 24,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 25,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 24,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 26,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 23,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 27,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 24,
+         .events_     = {67, 68, 73, 1, 74, 1, 75, 1, 73, 2, 79, 77, 2, 78, 2, 75, 2, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 28,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 29,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+        {.toggles_    = 30,
+         .threw_      = 0,
+         .result_     = {},
+         .next_event_ = 16,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 65}},
+        {.toggles_    = 31,
+         .threw_      = 1,
+         .result_     = -1,
+         .next_event_ = 17,
+         .events_     = {67, 68, 73, 1, 74, 1, 76, 1, 75, 1, 80, 72, 69, 66, 64, 81, 65}},
+    }) +
+    test_coro_catching_simple_await(std::vector<test_driver>{
+        {.toggles_    = 0,
+         .threw_      = 0,
+         .result_     = 12,
+         .next_event_ = 20,...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/152820


More information about the libcxx-commits mailing list