https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125865
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2026-06-17
Ever confirmed|0 |1
Summary|Unnecessary branches when |[16/17 Regression]
|expanding memset |Unnecessary branches when
| |expanding memset by
| |r16-2047-g401199377c5004
Status|UNCONFIRMED |NEW
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
GCC 15 doesn't have unnecessary branches:
[hjl@gnu-zen4-1 pr125856]$ /usr/gcc-15.2.1-x32/bin/gcc -S -O2 z.c -o z.15
-minline-all-stringops
[hjl@gnu-zen4-1 pr125856]$ cat z.s
.file "z.c"
.text
.p2align 4
.globl bounded_copy
.type bounded_copy, @function
bounded_copy:
.LFB0:
.cfi_startproc
cmpq $15, %rdx
jbe .L9
.L1:
ret
.p2align 4,,10
.p2align 3
.L9:
movabsq $72340172838076673, %rcx
movzbl %sil, %eax
imulq %rcx, %rax
cmpl $8, %edx
jnb .L10
cmpl $4, %edx
jnb .L5
cmpl $1, %edx
ja .L6
jb .L1
movb %sil, (%rdi)
ret
.p2align 4,,10
.p2align 3
.L10:
movl %edx, %edx
movq %rax, (%rdi)
movq %rax, -8(%rdi,%rdx)
ret
.p2align 4,,10
.p2align 3
.L5:
movl %edx, %edx
movl %eax, (%rdi)
movl %eax, -4(%rdi,%rdx)
ret
.p2align 4,,10
.p2align 3
.L6:
movl %edx, %edx
movw %ax, (%rdi)
movw %ax, -2(%rdi,%rdx)
ret
.cfi_endproc
.LFE0:
.size bounded_copy, .-bounded_copy
.ident "GCC: (GNU) 17.0.0 20260617 (experimental)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 pr125856]$