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.

Reply via email to