Fix mul expansion to check the correct number of bits for
zero extension when checking if an unsigned multiply is
safe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48171 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index abd569b..1ef19ff 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -6436,10 +6436,9 @@
       unsigned InnerBitSize = RH.getValueSizeInBits();
       unsigned LHSSB = DAG.ComputeNumSignBits(Op.getOperand(0));
       unsigned RHSSB = DAG.ComputeNumSignBits(Op.getOperand(1));
-      if (DAG.MaskedValueIsZero(Op.getOperand(0),
-                                APInt::getHighBitsSet(OuterBitSize, LHSSB)) &&
-          DAG.MaskedValueIsZero(Op.getOperand(1),
-                                APInt::getHighBitsSet(OuterBitSize, RHSSB))) {
+      APInt HighMask = APInt::getHighBitsSet(OuterBitSize, InnerBitSize);
+      if (DAG.MaskedValueIsZero(Node->getOperand(0), HighMask) &&
+          DAG.MaskedValueIsZero(Node->getOperand(1), HighMask)) {
         // The inputs are both zero-extended.
         if (HasUMUL_LOHI) {
           // We can emit a umul_lohi.