https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64621
Bug ID: 64621 Summary: MIssed tail call oppurtunity Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hubicka at gcc dot gnu.org Compiling the following at x86_64: extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; extern __inline int __attribute__ ((__nothrow__)) atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } will not produce tailcall even though it is perfectly possible because of the extra (int) conversion that is noop and could be ignored.