OSDN Git Service

[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301761 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/ConstantRange.cpp

index 4d7e73e..5425676 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;