https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109364
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is an intentional change in GCC 13, see PR 104642. The comments in Bug 43943 describe old behaviour, things have changed. The crash is not guaranteed though. The missing return is treated as unreachable by the compiler. If the -funreachable-traps option is enabled, then calls to that function will result in a trap (and crash). The -funreachable-traps option is enabled by default for -O0 and -Og but at higher optimization levels the code is not guaranteed to crash unless you explicitly use -funreachable-traps.