diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-03-23 12:48:54 +0000 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-03-23 12:48:54 +0000 |
commit | 0125e4484e263e513af266516f011a9d6dfd157f (patch) | |
tree | f0666266da367934c1821e6fa9038e7f4f3e4234 /llvm/lib/Transforms/Utils/LowerSwitch.cpp | |
parent | f4f01f3cffde43af9539212158a5a9fd5a34ded5 (diff) | |
download | bcm5719-llvm-0125e4484e263e513af266516f011a9d6dfd157f.tar.gz bcm5719-llvm-0125e4484e263e513af266516f011a9d6dfd157f.zip |
[LowerSwitch] Use ConstantRange::fromKnownBits(); NFC
Using an unsigned range to stay NFC, but a signed range would really
be more useful here.
llvm-svn: 356831
Diffstat (limited to 'llvm/lib/Transforms/Utils/LowerSwitch.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LowerSwitch.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/lib/Transforms/Utils/LowerSwitch.cpp b/llvm/lib/Transforms/Utils/LowerSwitch.cpp index 08db63ed8d6..3c973e7c142 100644 --- a/llvm/lib/Transforms/Utils/LowerSwitch.cpp +++ b/llvm/lib/Transforms/Utils/LowerSwitch.cpp @@ -436,14 +436,6 @@ unsigned LowerSwitch::Clusterify(CaseVector& Cases, SwitchInst *SI) { return NumSimpleCases; } -static ConstantRange getConstantRangeFromKnownBits(const KnownBits &Known) { - APInt Lower = Known.One; - APInt Upper = ~Known.Zero + 1; - if (Upper == Lower) - return ConstantRange(Known.getBitWidth(), /*isFullSet=*/true); - return ConstantRange(Lower, Upper); -} - /// Replace the specified switch instruction with a sequence of chained if-then /// insts in a balanced binary search. void LowerSwitch::processSwitchInst(SwitchInst *SI, @@ -501,7 +493,9 @@ void LowerSwitch::processSwitchInst(SwitchInst *SI, // switch, while LowerSwitch only needs to call LVI once per switch. const DataLayout &DL = F->getParent()->getDataLayout(); KnownBits Known = computeKnownBits(Val, DL, /*Depth=*/0, AC, SI); - ConstantRange KnownBitsRange = getConstantRangeFromKnownBits(Known); + // TODO Shouldn't this create a signed range? + ConstantRange KnownBitsRange = + ConstantRange::fromKnownBits(Known, /*ForSigned=*/false); const ConstantRange LVIRange = LVI->getConstantRange(Val, OrigBlock, SI); ConstantRange ValRange = KnownBitsRange.intersectWith(LVIRange); // We delegate removal of unreachable non-default cases to other passes. In |