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