https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126698
Bug ID: 126698
Summary: Fold ceil (X / 2^C) ==/!= 0 -> X ==/!= 0
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Keywords: easyhack, missed-optimization
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ktkachov at gcc dot gnu.org
Target Milestone: ---
int f (unsigned x) { return ((x >> 4) + ((x & 15) != 0)) == 0; }
Currently generates for aarch64 -O2:
f:
tst w0, 15
lsr w0, w0, 4
cinc w0, w0, ne
cmp w0, 0
cset w0, eq
ret
but can generate just:
f:
cmp w0, #0
cset w0, eq
ret