https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101116
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Take: unsigned char foo(unsigned *i) { return !(*i & 1); } GCC and clang/LLVM produce similar code. In fact similar to what GCC produces before. Note also ICC produces the same code as GCC for original case. So does Microsoft compiler. So I think we can say this is not a missed optimization for GCC.