https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117469
--- Comment #2 from Alexander Monakov <amonakov at gcc dot gnu.org> --- (In reply to Xi Ruoyao from comment #1) > So if the tail-call uses [[musttail]] the alternative 3 should be "fine"? Yes, plus annotating the callees that return twice with the attribute is still required. And with that we are currently refusing to emit a sibcall: __attribute__((returns_twice)) void foo(void); __attribute__((returns_twice)) void bar() { [[gnu::musttail]] return foo(); } t.c: In function 'bar': t.c:7:30: error: cannot tail-call: caller uses setjmp