Fix PR571, removing code that does just the WRONG thing :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22225 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-06-16 03:00:08 +00:00
parent aa457ac2e7
commit 8d7089e1d5

View File

@ -3102,33 +3102,7 @@ Instruction *InstCombiner::visitSetCondInstWithCastAndCast(SetCondInst &SCI) {
return 0;
}
return 0; //The rest of this function is broken. See bug 571
// Okay, we have the two reduced sized operands. If we are doing a <,>
// comparison, make sure we perform the compare with the same signedness as
// the DestTy. We don't have to do this if the comparison is !=/== or if the
// source is a bool.
if (isSignSrc != isSignDest && SrcTy != Type::BoolTy &&
SCI.getOpcode() != Instruction::SetEQ &&
SCI.getOpcode() != Instruction::SetNE) {
// Insert noop casts of the two operands to change the sign of the
// comparison.
const Type *NewSrcTy;
if (isSignDest)
NewSrcTy = SrcTy->getSignedVersion();
else
NewSrcTy = SrcTy->getUnsignedVersion();
// Insert the new casts.
LHSCIOp = InsertNewInstBefore(new CastInst(LHSCIOp, NewSrcTy,
LHSCIOp->getName()), SCI);
if (Constant *RHSC = dyn_cast<Constant>(RHSCIOp))
RHSCIOp = ConstantExpr::getCast(RHSC, NewSrcTy);
else
RHSCIOp = InsertNewInstBefore(new CastInst(RHSCIOp, NewSrcTy,
RHSCIOp->getName()), SCI);
}
// Okay, just insert a compare of the reduced operands now!
return BinaryOperator::create(SCI.getOpcode(), LHSCIOp, RHSCIOp);
}