https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82854
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2021-08-07 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Summary of some of these /* x + (x & 0x80000000) -> x & 0x7fffffff */ No one does /* (x | 0x80000000) + 0x80000000 -> x & 0x7FFFFFFF */ LLVM does /* x & (0x7FFFFFFF - x) -> x & 0x80000000 */ No one does, ICC does (-x + 0x7FFFFFFF) & x /* x | (x + 0x80000000) -> x | 0x80000000 */ LLVM does /* x | (0x7FFFFFFF - x) -> x | 0x7FFFFFFF */ No one does, ICC does (-x + 0x7FFFFFFF) | x /* x | (x ^ y) -> x | y */ GCC and LLVM /* -x | 0xFFFFFFFE -> x | 0xFFFFFFFE */ LLVM does /* 0 - (x & 0x80000000) -> x & 0x80000000 */ LLVM does /* ~(x + c) -> ~c - x */ GCC and LLVM /* (x | c) - c -> x & ∼c */ GCC and LLVM /* 0x7FFFFFFF - (x ^ c) -> x ^ (0x7FFFFFFF - c) */ LLVM does