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