Fix flawed logic that was breaking several SPEC benchmarks, including gzip and crafty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9731 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2003-11-05 17:31:36 +00:00
parent 7f1affe677
commit 1bcc70d240

View File

@ -1337,8 +1337,8 @@ Instruction *InstCombiner::visitSetCondInst(BinaryOperator &I) {
// because the source would be zero extended. // because the source would be zero extended.
unsigned SrcBits = unsigned SrcBits =
SrcTy == Type::BoolTy ? 1 : SrcTy->getPrimitiveSize()*8; SrcTy == Type::BoolTy ? 1 : SrcTy->getPrimitiveSize()*8;
bool HasSignBit = 1ULL << (DestTy->getPrimitiveSize()*8-1); bool HasSignBit = ConstVal & (1ULL << (DestTy->getPrimitiveSize()*8-1));
if (ConstVal & ((1ULL << SrcBits)-1)) { if (ConstVal & ~((1ULL << SrcBits)-1)) {
switch (I.getOpcode()) { switch (I.getOpcode()) {
default: assert(0 && "Unknown comparison type!"); default: assert(0 && "Unknown comparison type!");
case Instruction::SetEQ: case Instruction::SetEQ: