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

--- Comment #7 from Oleg Endo <olegendo at gcc dot gnu.org> ---
In bzip2-1.0.2/blocksort.s there is code such as:

.L294:
        mov.b   @(4,r11),r0
        extu.b  r0,r11
        mov.b   @(4,r3),r0
        extu.b  r0,r3
        cmp/eq  r3,r11
        bf      .L314
        mov.w   @(8,r2),r0
        extu.w  r0,r11
        mov.w   @(8,r1),r0
        extu.w  r0,r3
        cmp/eq  r3,r11
        bf      .L314
        mov     r4,r13
        add     r6,r13
        mov.b   @(5,r13),r0
        mov     r5,r3
        add     r6,r3
        extu.b  r0,r12
        mov.b   @(5,r3),r0
        extu.b  r0,r11
        cmp/eq  r11,r12
        bf      .L313
        mov.w   @(10,r2),r0
        extu.w  r0,r12
        mov.w   @(10,r1),r0
        extu.w  r0,r11
        cmp/eq  r11,r12
        bf      .L313
        mov.b   @(6,r13),r0
        extu.b  r0,r12
        mov.b   @(6,r3),r0
        extu.b  r0,r11
        cmp/eq  r11,r12
        bf      .L313
        mov.w   @(12,r2),r0
        extu.w  r0,r12
        mov.w   @(12,r1),r0
        extu.w  r0,r11
        cmp/eq  r11,r12
        bt      .L300
.L313:
        cmp/hi  r11,r12
        bra     .L308
        movt    r0

.L300:
        mov.b   @(7,r13),r0
        extu.b  r0,r11
        mov.b   @(7,r3),r0
        extu.b  r0,r3
        cmp/eq  r3,r11
        bt      .L301
.L314:
        cmp/hi  r3,r11
        bra     .L308
        movt    r0

In the BB at L294 the zero extensions can be omitted before the cmp/eq insns. 
Since the zero extended values are then compared using cmp/hi the zero
extensions must be inserted there again.  Sinking zero extensions for such
cases will reduce the code size.

Reply via email to