https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115392
--- Comment #4 from Daniel Petrovic <daniel-dev at hotmail dot de> ---
The following generalizatin applies:
let op = { |, ^ }
Case 1:
(a op b) <=//> C <=> b <=//> C
if:
a = 2^m-1
a & C = a (all lower m bits are set in C)
Case 2:
(a op b) <//>= C <=> b <//>= C
if:
a = 2^m-1
a & C == 0 (all lower m bits are cleared in C)
