https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110166
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` /* Max<bool0, bool1> -> bool0 | bool1 Min<bool0, bool1> -> bool0 & bool1 . */ (for op (max min) logic (bit_ior bit_and) (simplify (op zero_one_valued_p@0 zero_one_valued_p@1) (if (TYPE_PRECISION (type) != 1 || TYPE_UNSIGNED (type)) (logic @0 @1)))) ``` Should fix it.