https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70076
--- Comment #6 from Martin Sebor <msebor at gcc dot gnu.org> --- The current behavior in this case is undefined. That should be avoided when it can be done without excessive overhead. Throwing an exception instead has only negligible overhead and is preferable to letting programs trash their stack. The original patch that did that was approved and committed but caused a linker error while building libgcj.so due to its own problems (pr70652). Because it was too close to GCC 6 release it ended up getting reverted instead of fixing libgcj. I've been meaning to resubmit the patch for each release after that but I never seem to get around to it. Hopefully for GCC 10.