https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109866
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- A small improvement would be: subl %esi, %edi je .L5 testl %edi, %edi jle .L3 jmp h() .L3: jmp t() .L5: jmp g() Not to mention the unoptimal handling of tail calls...