https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115660

            Bug ID: 115660
           Summary: internal compiler error: in build_special_member_call,
                    at cp/call.cc:11085
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vipcxj at 126 dot com
  Target Milestone: ---

```c++
    do_async([]() -> asio::awaitable<void> {
        using namespace cfgo;
        close_chan closer {};
        auto token = co_await get_token("1", "root.*", false);
        auto signal = make_websocket_signal(closer,
cfgo::WebsocketSignalConfigure{
            .url = fmt::format("ws://{}:{}/ws", SIGNAL_HOST, SIGNAL_PORT),
            .token = token,
            .ready_timeout = std::chrono::seconds(30),
        });
        {
            co_await signal->join(closer, {"root.room1"}); // this line
            EXPECT_EQ(1, signal->rooms().size());
            EXPECT_TRUE(signal->rooms().contains("root.room1"));
        }
    });
```
I think the initializer_list in the await expr cause the crash.
full error:

```
[build]    64 |     });
[build]       |     ^
[build] 0x85a411 build_special_member_call(tree_node*, tree_node*,
vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int)
[build]         ../../src/gcc/cp/call.cc:11085
[build] 0xbe851b maybe_promote_temps
[build]         ../../src/gcc/cp/coroutines.cc:3146
[build] 0xbe851b await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3757
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0xbe7c4e await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3428
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0xbe7bfd await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3417
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0xbe7c4e await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3428
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0x126b23c walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11558
[build] 0xbe7c4e await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3428
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0x126b23c walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11558
[build] 0xbe7c4e await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3428
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0x126b23c walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11558
[build] 0xbe7c4e await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3428
[build] 0x126b106 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
[build]         ../../src/gcc/tree.cc:11327
[build] 0xbe7bfd await_statement_walker
[build]         ../../src/gcc/cp/coroutines.cc:3417
[build] Please submit a full bug report, with preprocessed source (by using
-freport-bug).
[build] Please include the complete backtrace with any bug report.
[build] See <file:///usr/share/doc/gcc-13/README.Bugs> for instructions.
```

Reply via email to