diff options
author | Chris Lattner <sabre@nondot.org> | 2010-12-13 06:36:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-12-13 06:36:51 +0000 |
commit | 021c9d3bd41bc446ef0860c05a073e32afa5e20f (patch) | |
tree | 05f2227e7f3094e2e3b262357bbe82c9cc616d5b /lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | 3d5121314ab4af435e1abf5bc09b45c305f2f4b0 (diff) |
make this logic a bit simpler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121689 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index e1c9611f9d..503e5bcb23 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -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; } |