https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68677
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I believe this is intentional and has been discussed in the past. E.g. one of the often used noreturn functions is abort and its callers, in that case we better not sibcall to that, as it will be harder to find out where exactly the code aborted. Also, often not doing a sibcall is shorter, you can stay where you were with the stack pointer, while for sibcall you'd bump the stack pointer first.