InstCombine didn't perform (sext bool X) * (sext bool X) --> zext (and X, X) which can result in just (zext X). The patch adds regression tests to check this transformation and adds a check for equality of mul's operands for that case.
Alive says that it is a correct transformation:
https://alive2.llvm.org/ce/z/27ryac
https://alive2.llvm.org/ce/z/k4l6Hj
Equality check is faster, it should go first.