diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-14 13:25:55 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-14 13:25:55 +0000 |
commit | e01017bba4f44ab65eba11fd065c9cd16b5edb33 (patch) | |
tree | 0e00cdbaa95fda8271e657dcc497b5ac972ef9c6 /lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | |
parent | b0a1cbff0d9893631fb0a9ad5c6f4d0766645199 (diff) |
Fix PR1325: Case range optimization was performed in the case it
shouldn't. Also fix some "latent" bug on 64-bit platforms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35990 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 8a9efadd5b..1f982ce40c 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -1678,8 +1678,6 @@ bool SelectionDAGLowering::handleBitTestsSwitchCase(CaseRec& CR, CaseRecVector& WorkList, Value* SV, MachineBasicBlock* Default){ - return false; // DISABLED FOR NOW: PR1325. - unsigned IntPtrBits = getSizeInBits(TLI.getPointerTy()); Case& FrontCase = *CR.Range.first; @@ -1732,7 +1730,7 @@ bool SelectionDAGLowering::handleBitTestsSwitchCase(CaseRec& CR, // word without having to subtract minValue. In this case, // we can optimize away the subtraction. if (cast<ConstantInt>(minValue)->getSExtValue() >= 0 && - cast<ConstantInt>(maxValue)->getSExtValue() <= IntPtrBits) { + cast<ConstantInt>(maxValue)->getSExtValue() < IntPtrBits) { range = cast<ConstantInt>(maxValue)->getSExtValue(); } else { lowBound = cast<ConstantInt>(minValue)->getSExtValue(); @@ -1757,7 +1755,7 @@ bool SelectionDAGLowering::handleBitTestsSwitchCase(CaseRec& CR, uint64_t hi = cast<ConstantInt>(I->High)->getSExtValue() - lowBound; for (uint64_t j = lo; j <= hi; j++) { - CasesBits[i].Mask |= 1 << j; + CasesBits[i].Mask |= 1ULL << j; CasesBits[i].Bits++; } |