https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102217
--- Comment #10 from Arsen Arsenović <arsen at gcc dot gnu.org> --- (In reply to John Eivind Helset from comment #9) > Hit this as well on master (9d5c500c4fa) in something like `co_return > co_await f(a, b ? c : d);`, if I lift the conditional out of await it seems > ok. > > 0x2af0211 internal_error(char const*, ...) > ../../gcc/diagnostic-global-context.cc:491 > 0xb4e45d fancy_abort(char const*, int, char const*) > ../../gcc/diagnostic.cc:1772 > 0x79bd3b flatten_await_stmt > ../../gcc/cp/coroutines.cc:3097 > 0xbdcc14 flatten_await_stmt > ../../gcc/cp/coroutines.cc:3126 > 0xbdcc14 flatten_await_stmt > ../../gcc/cp/coroutines.cc:3126 > 0xbdcc14 flatten_await_stmt > ../../gcc/cp/coroutines.cc:3126 > 0xbde478 maybe_promote_temps > ../../gcc/cp/coroutines.cc:3309 > 0xbde478 await_statement_walker > ../../gcc/cp/coroutines.cc:3948 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 > 0xbde138 await_statement_walker > ../../gcc/cp/coroutines.cc:3619 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 > 0xbde984 await_statement_walker > ../../gcc/cp/coroutines.cc:3896 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 > 0xbde138 await_statement_walker > ../../gcc/cp/coroutines.cc:3619 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 > 0xbde642 await_statement_walker > ../../gcc/cp/coroutines.cc:3608 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 > 0x19c68ac 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*> >*)) > ../../gcc/tree.cc:11713 > 0xbde642 await_statement_walker > ../../gcc/cp/coroutines.cc:3608 > 0x19c6754 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*> >*)) > ../../gcc/tree.cc:11479 hm, that's possibly unrelated, best open a new PR with the usual bug reproduction steps (especially with preprocessed sources)