https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114338
--- Comment #6 from Kang-Che Sung <Explorer09 at gmail dot com> --- (In reply to Richard Biener from comment #5) > For canonicalization the BIT_AND variants might be preferable since they > possibly combine with other logical ops. Also more constant operands > when the number of operations is the same might be preferable. I got your point (and Richard Earnshaw in comment #1 suggested the same, too). When processing an array of numbers, e.g. `(array[i] & (-1U << count))` would work faster than `((array[i] >> count) << count)` since the `(-1U << count)` can be processed outside of a loop.