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

Richard Henderson <rth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|__builtin_add_overflow vs   |Missed ccmp optimizations
                   |ccmp                        |
             Target|                            |aarch64-*

--- Comment #1 from Richard Henderson <rth at gcc dot gnu.org> ---
Case 2:

void test2(unsigned long a, unsigned long l)
{
  if (l + 1 == 0 || a <= l + 1)
    doit();
}

currently generates as

        cmn     x1, #1
        beq     .L13
        add     x1, x1, 1
        cmp     x1, x0
        bcc     .L12

but could be

        adds    x2, x1, #1
        ccmp    x0, x2, #0, ne
        b.hi    .L12

Reply via email to