Ah, now I see that indeed we agree without understanding each other. The source is a misinterpretation of your sentence far up the thread:
> I can't see why the calling convention could matter.
The "could matter" was understood as "would influence TCO" and so the rest of the thread was devoted to explain how the two are connected, while you meant "should be fixed and not be changed at the compiler's whims".
And you are right, of course: if a function is static and its address is never taken, the compiler can choose whatever calling strategy it wants, possibly one that facilitates TCO.
No, I meant the former. Even if those conditions are not met, TCO is not off the table. The compiler can simply generate a second copy of the function specifically for the recursive call.