https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109227
Bug ID: 109227 Summary: coroutines: ICE in tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.cc:11067 Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: avi at scylladb dot com, iains at gcc dot gnu.org, jason at gcc dot gnu.org Target Milestone: --- It's probably similar to PR98056 and it's reduced from ScyllaDB: $ g++ bad.cc -c -std=gnu++20 bad.cc: In member function ‘future<boost::basic_result<void, utils::exception_container<>, utils::exception_container_throw_policy> > cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const’: bad.cc:273:1: warning: no return statement in function returning non-void [-Wreturn-type] 273 | } | ^ bad.cc: In instantiation of ‘cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)> [with auto:1 = cql3::statements::primary_key]’: bad.cc:39:11: required from ‘void std::__invoke(_Callable, _Args ...) [with _Callable = cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)>; _Args = {cql3::statements::primary_key}]’ bad.cc:67:11: required from ‘void std::invoke(_Callable, _Args ...) [with _Callable = cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)>; _Args = {cql3::statements::primary_key}]’ bad.cc:158:16: required from ‘auto coroutine::lambda<Func>::operator()(Args ...) [with Args = {cql3::statements::primary_key}; Func = cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)>]’ bad.cc:10:39: required from ‘struct std::__result_of_impl<false, false, coroutine::lambda<cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)> >, cql3::statements::primary_key>’ bad.cc:16:8: required from ‘struct std::__invoke_result<coroutine::lambda<cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)> >, cql3::statements::primary_key>’ bad.cc:83:56: required from ‘void futurize_invoke(Func, Args ...) [with Func = coroutine::lambda<cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)> >; Args = {cql3::statements::primary_key}]’ bad.cc:240:18: required from ‘void utils::result_map_reduce(Iterator, Iterator, Mapper, Reducer) [with Iterator = __normal_iterator<cql3::statements::primary_key*>; Mapper = coroutine::lambda<cql3::statements::indexed_table_select_statement::do_execute_base_query(cql3::query_processor&, std::vector<cql3::statements::primary_key>&&, service::query_state&, const {anonymous}::query_options&, gc_clock::time_point, lw_shared_ptr<const service::pager::paging_state>) const::<lambda(auto:1)> >; Reducer = void (*)()]’ bad.cc:259:27: required from here bad.cc:271:11: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.cc:11067 271 | }), | ^ 0x87916a tree_check_failed(tree_node const*, char const*, int, char const*, ...) /home/marxin/Programming/gcc/gcc/tree.cc:8881 0x96c34b tree_check3(tree_node*, char const*, int, char const*, tree_code, tree_code, tree_code) /home/marxin/Programming/gcc/gcc/tree.h:3580 0x95f539 build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) /home/marxin/Programming/gcc/gcc/cp/call.cc:11067 0x9c16a7 maybe_promote_temps /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3146 0x9c16a7 await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3757 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c1198 await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3428 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c129c await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3417 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c1198 await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3428 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c129c await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3417 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c1198 await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3428 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x149b25f 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11558 0x9c1198 await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3428 0x149b05d 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*> >*)) /home/marxin/Programming/gcc/gcc/tree.cc:11327 0x9c129c await_statement_walker /home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3417 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.