[Bug target/53987] [SH] Unnecessary zero-extensions
olegendo at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 25 01:11:00 GMT 2014
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.
More information about the Gcc-bugs
mailing list