ComputeNumSignBits function was missing a case for BUILD_PAIR node.
Handle it by computing sign bits of upper part. If it's all ones, add sign bits
of the lower part.
I've encountered it in some test with really big BB that got split in ISel, so sext i32 to i64 happened in one "subDAG", while the actual operation (in this case - mul) in the other.
I wasn't able to produce some small self-contained test-case, but the change seems small and straight-forward enough to not require one.
Still, I'd be happy if someone has ideas w.r.t testing.
I don't think this is correct. If the first call returns "all sign bits" then we check operand(0) that call will always return at least 1. So we increase the total by at least 1. So its impossible for this code to ever return that the number of sign bits of a build_pair is exactly half the total size of the build_pair. That seems wrong.