[Bug target/53976] [SH] Unnecessary clrt after bt

olegendo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Sep 23 21:27:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53976

--- Comment #2 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-09-23 21:26:54 UTC ---
Interestingly, the following function shows some improved behavior (notice the
removed volatile mem store):

int test_2_1 (int* a, int b, int c)
{
  a[1] = b != 0;

  if (b == 0)
    a[10] = c;

  return b == 0;
}

-O2 -m2a:
        tst     r5,r5
        movrt   r1
        mov.l   r1,@(4,r4)
        bf      .L4
        mov.l   r6,@(40,r4)
.L4:
        rts
        movt    r0


This is already minimal.
However, for non-SH2A it's still the same:
        tst     r5,r5
        mov     #-1,r1
        negc    r1,r1
        tst     r5,r5
        bf/s    .L4
        mov.l   r1,@(4,r4)
        mov.l   r6,@(40,r4)
        tst     r5,r5
.L4:
        rts
        movt    r0



More information about the Gcc-bugs mailing list