https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84527
--- Comment #1 from Kai Tietz <ktietz at gcc dot gnu.org> --- For x86 we produce for sample: movl 8(%esp), %eax cmpl %eax, 4(%esp) setge %al movzbl %al, %eax leal -1(%eax,%eax), %eax ret which could be expressed with one instruction less as movl 4(%esp), %eax cmpl %eax, 8(%esp) sbbl %eax, %eax orb $1, %al ret