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.