This adds support for loops like
unsigned clz(unsigned x) { unsigned w = sizeof (x) * 8; while (x) { w--; x >>= 1; } return w; }
and
unsigned clz(unsigned x) { unsigned w = sizeof (x) * 8 - 1; while (x >>= 1) { w--; } return w; }
To support these we look for add x, -1 as well as add x, 1 that
we already matched. If the value was -1 we need to subtract from
the initial counter value instead of adding to it.
Fixes PR48404.
clang-format not found in user's PATH; not linting file.