https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114391
--- Comment #2 from Antony Polukhin <antoshkka at gmail dot com> --- > Is there something to optimize when foo() cannot be tail-called? Yes. Just `catch (...) { throw; }`, no more restrictions. I do not even think, that it should be the outer most EH region: void foo(); void bar(); void test() { try { foo(); } catch (...) { throw; } bar(); } is fine to optimize to just void test() { foo(); bar(); }