mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
Skip the linear search if the answer is already known.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30251 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
996f7050db
commit
3fc68ccd83
@ -501,30 +501,32 @@ Value *PredicateSimplifier::resolve(SetCondInst *SCI,
|
|||||||
|
|
||||||
Value *SCI0 = resolve(SCI->getOperand(0), KP),
|
Value *SCI0 = resolve(SCI->getOperand(0), KP),
|
||||||
*SCI1 = resolve(SCI->getOperand(1), KP);
|
*SCI1 = resolve(SCI->getOperand(1), KP);
|
||||||
PropertySet::ConstPropertyIterator NE =
|
|
||||||
KP.findProperty(PropertySet::NE, SCI0, SCI1);
|
|
||||||
|
|
||||||
if (NE != KP.Properties.end()) {
|
|
||||||
switch (SCI->getOpcode()) {
|
|
||||||
case Instruction::SetEQ:
|
|
||||||
return ConstantBool::False;
|
|
||||||
case Instruction::SetNE:
|
|
||||||
return ConstantBool::True;
|
|
||||||
case Instruction::SetLE:
|
|
||||||
case Instruction::SetGE:
|
|
||||||
case Instruction::SetLT:
|
|
||||||
case Instruction::SetGT:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
assert(0 && "Unknown opcode in SetCondInst.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ConstantIntegral *CI1 = dyn_cast<ConstantIntegral>(SCI0),
|
ConstantIntegral *CI1 = dyn_cast<ConstantIntegral>(SCI0),
|
||||||
*CI2 = dyn_cast<ConstantIntegral>(SCI1);
|
*CI2 = dyn_cast<ConstantIntegral>(SCI1);
|
||||||
|
|
||||||
if (!CI1 || !CI2) return SCI;
|
if (!CI1 || !CI2) {
|
||||||
|
PropertySet::ConstPropertyIterator NE =
|
||||||
|
KP.findProperty(PropertySet::NE, SCI0, SCI1);
|
||||||
|
|
||||||
|
if (NE != KP.Properties.end()) {
|
||||||
|
switch (SCI->getOpcode()) {
|
||||||
|
case Instruction::SetEQ:
|
||||||
|
return ConstantBool::False;
|
||||||
|
case Instruction::SetNE:
|
||||||
|
return ConstantBool::True;
|
||||||
|
case Instruction::SetLE:
|
||||||
|
case Instruction::SetGE:
|
||||||
|
case Instruction::SetLT:
|
||||||
|
case Instruction::SetGT:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert(0 && "Unknown opcode in SetCondInst.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SCI;
|
||||||
|
}
|
||||||
|
|
||||||
switch(SCI->getOpcode()) {
|
switch(SCI->getOpcode()) {
|
||||||
case Instruction::SetLE:
|
case Instruction::SetLE:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user