me: i wish we could have tail calls in c
gcc: we have tail calls at home
the tail calls:

https://godbolt.org/z/GT5PvnxP9

a kind person shares this powerful incantation: `if (1) [[gnu::musttail]]` https://godbolt.org/z/f8fzf9b5M
Compiler Explorer - C (x86-64 gcc 15.2)

int f(void); static int g(void) { return f(); return 11; } static int h(void) { if (1) [[gnu::musttail]] return f(); return 42; }

lol gcc's tail call implementation is extraordinarily squirrely, it happily inlines functions that do tail calls but then dies because it fails to turn the inlined tail calls into regular calls. (clang fails in different ways :P)
"cannot tail-call: other reasons" this energy is sending meeeeee, the compiler has determined that it is friday
@wingo I see why you liked the if (1)… Good luck with the tail calls.
@void_friend fwiw, i got it to work if i __attribute__((noinline)) the functions that make tail calls 😅
@wingo Why doesn't enabling the tail-call optimization for the entire compilation unit work for you? You're already targeting a GCC-like compiler anyway, surely you're compiling the C file yourself or can tell the person who will compile it to use -foptimize-sibling-calls (I think the option is)?
@wingo Also, I wonder if you could implement tail calls in standard C from longjmp (pls do not implement tail calls from longjmp)
@void_friend in this case i am compiling from wasm which has guaranteed tail calls (in addition to normal calls); optimizations are great obviously but the sibling calls thing is both not guaranteed and doesn’t work at -O0
@wingo A transformation that is always a gain (although not for debugging perhaps, who knows what C developers expect to see in gdb), to the point that it's guaranteed with no way to disable it in many other programming languages, is not guaranteed when the option that turns it on is explicitly used? GCC keeps surprising me…

@wingo

GCC developers (a long time ago, do not hold them to it, actually it was possibly only RMS who said this): “we come from LISP and we will add many LISP-inspired extensions to standard C”

Also GCC developers: …