https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61578

--- Comment #19 from Fredrik Hederstierna 
<fredrik.hederstie...@securitas-direct.com> ---
I'm not sure why bug 59535 was closed, same problem might still exist, quote:

> Zhenqiang Chen 2014-09-03 06:17:44 UTC
> 
> Here is a small case to show lra introduces one more register copy (tested 
> with trunk and 4.9).

int isascii (int c)
{
  return c >= 0 && c < 128;
}
With options: -Os -mthumb -mcpu=cortex-m0, I got

isascii:
        mov     r3, #0
        mov     r2, #127
        mov     r1, r3   //???
        cmp     r2, r0
        adc     r1, r1, r3
        mov     r0, r1
        bx      lr

With options: -Os -mthumb -mcpu=cortex-m0 -mno-lra, I got

isascii:
        mov     r2, #127
        mov     r3, #0
        cmp     r2, r0
        adc     r3, r3, r3
        mov     r0, r3
        bx      lr

Testing 4.8.5 and 5.2.0 still still produces same bigger code in GCC 5.2.
So something adds a register copy in this small case.
/Fredrik

Reply via email to