https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118739
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |target
Keywords|needs-bisection |
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The difference between GCC 14 and GCC 15 is.
GCC 14:
.L2:
xorl %eax, %eax
cmpl $1, %ebx
movl $.LC0, %edi
movl $1, b(%rip)
sete %al
movl %eax, %ebp
movl %eax, %r12d
xorl $1, %ebp
testl %eax, %eax
setle %al
orl %eax, %ebp
call puts
testb %r12b, %r12b
jne .L8
GCC 15:
.L2:
xorl %r12d, %r12d
cmpl $1, %ebx
movl $.LC0, %edi
movl $1, b(%rip)
sete %r12b
movl %r12d, %ebp
xorl $1, %ebp
testl %r12d, %r12d
setle %al
orl %eax, %ebp
call puts
testb %r12b, %r12b
jne .L8
There is a missing zero extend from al to eax.
But the RTL for GCC 14 does not have represent that though.
Note using -fdisable-rtl-late_combine1 allows this to work again but I think it
is latent.