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

Reply via email to