aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-12-13 06:36:51 +0000
committerChris Lattner <sabre@nondot.org>2010-12-13 06:36:51 +0000
commit021c9d3bd41bc446ef0860c05a073e32afa5e20f (patch)
tree05f2227e7f3094e2e3b262357bbe82c9cc616d5b /lib/Transforms/Utils/SimplifyCFG.cpp
parent3d5121314ab4af435e1abf5bc09b45c305f2f4b0 (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.cpp41
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;
}