[InstCombine] Remove insertRangeTest code that handles the equality case.

For equality, the function called getTrue/getFalse with the VT
of the comparison input. But getTrue/getFalse need the boolean VT.
So if this code ever executed, it would assert.

I believe these cases are removed by InstSimplify so we don't get here.

So this patch just fixes up an assert to exclude the equality
possibility and removes the broken code.

llvm-svn: 366649
This commit is contained in:
Craig Topper 2019-07-21 06:43:38 +00:00
parent 8fabdfe9fc
commit 1d149d08d3
1 changed files with 2 additions and 4 deletions

View File

@ -164,12 +164,10 @@ Instruction *InstCombiner::OptAndOp(BinaryOperator *Op,
/// whether to treat V, Lo, and Hi as signed or not. /// whether to treat V, Lo, and Hi as signed or not.
Value *InstCombiner::insertRangeTest(Value *V, const APInt &Lo, const APInt &Hi, Value *InstCombiner::insertRangeTest(Value *V, const APInt &Lo, const APInt &Hi,
bool isSigned, bool Inside) { bool isSigned, bool Inside) {
assert((isSigned ? Lo.sle(Hi) : Lo.ule(Hi)) && assert((isSigned ? Lo.slt(Hi) : Lo.ult(Hi)) &&
"Lo is not <= Hi in range emission code!"); "Lo is not < Hi in range emission code!");
Type *Ty = V->getType(); Type *Ty = V->getType();
if (Lo == Hi)
return Inside ? ConstantInt::getFalse(Ty) : ConstantInt::getTrue(Ty);
// V >= Min && V < Hi --> V < Hi // V >= Min && V < Hi --> V < Hi
// V < Min || V >= Hi --> V >= Hi // V < Min || V >= Hi --> V >= Hi