https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114277
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Jeffrey A. Law from comment #11) > Am I missing something here? I don't think so. Most likely should combine the 2 patterns too like: (for neeq (ne eq) (simplify (mult:c (convert? (neeq (bit_ior:c @0 @1) integer_zerop@2)) @0) (if (neeq == EQ_EXPR) { build_zero_cst (type); } @0))) But nothing else. Then again that would solve the simplified `(a | b) !=/== 0` case but not the `(a | b | c | d) !=/== 0` case maybe that is ok for now not to solve.