make this logic a bit simpler.

llvm-svn: 121689
This commit is contained in:
Chris Lattner 2010-12-13 06:36:51 +00:00
parent 25c3af35d8
commit 1d05761df4
1 changed files with 20 additions and 21 deletions

View File

@ -2200,7 +2200,7 @@ bool SimplifyCFGOpt::SimplifySwitch(SwitchInst *SI) {
// see if that predecessor totally determines the outcome of this switch.
if (BasicBlock *OnlyPred = BB->getSinglePredecessor())
if (SimplifyEqualityComparisonWithOnlyPredecessor(SI, OnlyPred))
return SimplifyCFG(BB) || 1;
return SimplifyCFG(BB) | true;
// If the block only contains the switch, see if we can fold the block
// away into any preds.
@ -2210,7 +2210,7 @@ bool SimplifyCFGOpt::SimplifySwitch(SwitchInst *SI) {
++BBI;
if (SI == &*BBI)
if (FoldValueComparisonIntoPredecessors(SI))
return SimplifyCFG(BB) || 1;
return SimplifyCFG(BB) | true;
return false;
}
@ -2397,27 +2397,26 @@ bool SimplifyCFGOpt::run(BasicBlock *BB) {
Changed |= FoldTwoEntryPHINode(PN);
if (BranchInst *BI = dyn_cast<BranchInst>(BB->getTerminator())) {
if (BI->isUnconditional())
return SimplifyUncondBranch(BI) | Changed;
return SimplifyCondBranch(BI) | Changed;
if (BI->isUnconditional()) {
if (SimplifyUncondBranch(BI)) return true;
} else {
if (SimplifyCondBranch(BI))
return true;
}
} else if (ReturnInst *RI = dyn_cast<ReturnInst>(BB->getTerminator())) {
if (SimplifyReturn(RI)) return true;
} else if (SwitchInst *SI = dyn_cast<SwitchInst>(BB->getTerminator())) {
if (SimplifySwitch(SI)) return true;
} else if (UnreachableInst *UI =
dyn_cast<UnreachableInst>(BB->getTerminator())) {
if (SimplifyUnreachable(UI)) return true;
} else if (UnwindInst *UI = dyn_cast<UnwindInst>(BB->getTerminator())) {
if (SimplifyUnwind(UI)) return true;
} else if (IndirectBrInst *IBI =
dyn_cast<IndirectBrInst>(BB->getTerminator())) {
if (SimplifyIndirectBr(IBI)) return true;
}
if (ReturnInst *RI = dyn_cast<ReturnInst>(BB->getTerminator()))
return SimplifyReturn(RI) | Changed;
if (SwitchInst *SI = dyn_cast<SwitchInst>(BB->getTerminator()))
return SimplifySwitch(SI) | Changed;
if (UnreachableInst *UI = dyn_cast<UnreachableInst>(BB->getTerminator()))
return SimplifyUnreachable(UI) | Changed;
if (UnwindInst *UI = dyn_cast<UnwindInst>(BB->getTerminator()))
return SimplifyUnwind(UI) | Changed;
if (IndirectBrInst *IBI = dyn_cast<IndirectBrInst>(BB->getTerminator()))
return SimplifyIndirectBr(IBI) | Changed;
return Changed;
}