https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67382

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I don't know what to say, did __builtin_ia32_addcarryx_u32 change represenation
on the RTL level?  If so then we are getting almost the best code on the trunk:

        .cfi_startproc
        subq    $24, %rsp
        .cfi_def_cfa_offset 32
        movl    $-2, %eax
        movl    %eax, 12(%rsp)
        cmpl    $-2, %eax
        je      .L1
        call    abort()

Note combine is able to figure out the jump is unconditional but there is no
"pattern" to match it:
Trying 10 -> 17:
   10: r85:QI=0x1
   17: {flags:CCC=cmp(r85:QI-0x1,r85:QI);clobber scratch;}
      REG_DEAD r85:QI
      REG_EQUAL cmp(0,0x1)
Failed to match this instruction:
(parallel [
        (set (pc)
            (pc))
        (clobber (scratch:QI))
    ])
Failed to match this instruction:
(set (pc)
    (pc))

Reply via email to