https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121643
Bug ID: 121643 Summary: Internal compiler error when await_suspend takes default argument Product: gcc Version: 15.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc at nospam dot scs.stanford.edu CC: daniel.kruegler at googlemail dot com Target Milestone: --- CC: daniel.kruegler at googlemail dot com g++ 15.2.1 returns an internal compiler error when compiling code in which an awaiter's await_suspend method takes an extra default argument. Both g++ 14 and clang 20 accept the code without error. I'm attaching a short example source file that reproduces the problem. I place the code for this example in the public domain. Here's what happens when you compile it: $ g++ -std=c++23 -c bug.cc during RTL pass: expand bug.cc: In function 'void coroutine(_Z9coroutinev.Frame*)': bug.cc:34:20: internal compiler error: in make_decl_rtl, at varasm.cc:1459 34 | co_await Awaiter{}; | ^ 0x26ec391 diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag (*) [1], diagnostic_t) ???:0 0x2746498 internal_error(char const*, ...) ???:0 0x7154cb fancy_abort(char const*, int, char const*) ???:0 0xbd7d66 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) ???:0 0xbd834c expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) ???:0 0xbebf21 store_expr(tree_node*, rtx_def*, int, bool, bool) ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. Note: I'm not including pre-processed source because I believe it's easy to reproduce, and when bisecting versions of the compiler you will probably want to include the exact <coroutine> header that corresponds to that version of the compiler you are testing. However, if for any reason you really need the header files expanded, just let me know on here and I'll include the -freport-bug output.