This patch adds support for a new function attribute "notail". The attribute is used to disable tail call optimization on calls to functions marked with the attribute.
This is different from the attribute proposed in D12547, which disables tail call optimizations on call sites within the marked function.
It would be good to clarify what you mean by direct calls, as not all of the readers are going to understand that easily. Perhaps a simple code example showing a call to the function, and a call to the same function through a function pointer, with comments showing which one has TCO.
You should also call out that it is mutually exclusive with always_inline.