The ffs function can be converted to ctz if the operand is known not to be zero, as is the case for example in
while (x != 0) {
bit = ffs(x) - 1;
...
x &= ~(1 << bit);
}
CSE can already do this on x86, but the attached patch implements this
folding in VRP in a target-independent way.
Bootstrapped/regtested x86_64-pc-linux-gnu, ok?
Paolo
fold-ffs.patch
Description: Binary data
