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.

Reply via email to