https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96923
--- Comment #1 from Gabriel Ravier <gabravier at gmail dot com> --- _Bool f2(_Bool a, _Bool b) { return a ? !b : 1; } This similar pattern can be optimized to `return !(a & b);`. This transformation is done by LLVM, but not by GCC.