https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61578
--- Comment #21 from Fredrik Hederstierna <fredrik.hederstie...@securitas-direct.com> --- Great, thanks! Just a note as you are looking into this, neither GCC 4.8.x nor GCC 5.2.x produces the optimal code I think for this case, isn't it better to load result register r0, instead of go over r3? GCC 4.8.5 (good version): isascii: mov r2, #127 mov r3, #0 cmp r2, r0 adc r3, r3, r3 mov r0, r3 bx lr better ??: isascii: mov r2, #127 mov r3, #0 cmp r2, r0 + adc r0, r3, r3 <----- put result in R0 directly? - adc r3, r3, r3 - mov r0, r3 bx lr This would save one more instruction if I'm thinking right. BR, Fredrik