[ConstantRange] Fix a couple cases where we were possibly throwing away an APInt...
authorCraig Topper <craig.topper@gmail.com>
Sun, 30 Apr 2017 00:44:05 +0000 (00:44 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sun, 30 Apr 2017 00:44:05 +0000 (00:44 +0000)
This uses setAllBits to replace getMaxValue and operator=(uint64_t) instead of constructing an APInt from uint64_t.

llvm-svn: 301761

llvm/lib/IR/ConstantRange.cpp

index 4d7e73eb07faa68dec1c7bda12ce8ff1aa38d7d0..5425676e4edcfe6074f0463cb1f003b2d1dfa91d 100644 (file)
@@ -581,7 +581,7 @@ ConstantRange ConstantRange::truncate(uint32_t DstTySize) const {
       return ConstantRange(DstTySize, /*isFullSet=*/true);
 
     Union = ConstantRange(APInt::getMaxValue(DstTySize),Upper.trunc(DstTySize));
-    UpperDiv = APInt::getMaxValue(getBitWidth());
+    UpperDiv.setAllBits();
 
     // Union covers the MaxValue case, so return if the remaining range is just
     // MaxValue.
@@ -837,7 +837,7 @@ ConstantRange::udiv(const ConstantRange &RHS) const {
     if (RHS.getUpper() == 1)
       RHS_umin = RHS.getLower();
     else
-      RHS_umin = APInt(getBitWidth(), 1);
+      RHS_umin = 1;
   }
 
   APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1;