Without this patch, we attempt to distribute And over Xor even in
unsafe circumstances like so:
undef & (true ^ true) ==> (undef & true) ^ (undef & true)
and evaluate it to undef instead of false. Note that "true ^ true"
may show up implicitly with one true being part of a PHI node.
This patch fixes the problem by teaching SimplifyAndInst and
SimplifyUsingDistributiveLaws to not use undef as part of
simplifications when they distribute And over Xor.
Please use llvm/util/update_test_checks.py to generate CHECK lines.