diff options
author | Chris Lattner <sabre@nondot.org> | 2008-07-13 21:15:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-07-13 21:15:11 +0000 |
commit | 95044476c4f67f58175743760c77fa162c4aa6d0 (patch) | |
tree | 941f7575cf6cfbfd0c7121e4788c136161a70384 /lib/Transforms/Utils | |
parent | 79e6e6c8f6fbcf7f354e4230902c67ad36de7fc9 (diff) | |
download | external_llvm-95044476c4f67f58175743760c77fa162c4aa6d0.zip external_llvm-95044476c4f67f58175743760c77fa162c4aa6d0.tar.gz external_llvm-95044476c4f67f58175743760c77fa162c4aa6d0.tar.bz2 |
simplify logic a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53527 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils')
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 53725ea..1caf118 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1473,9 +1473,15 @@ static bool FoldBranchToCommonDest(BranchInst *BI) { PBI->setSuccessor(0, OldFalse); PBI->setSuccessor(1, OldTrue); } + + Instruction::BinaryOps Opc = Instruction::Shl; // sentinel. + + if (PBI->getSuccessor(0) == TrueDest && FalseDest != BB) + Opc = Instruction::Or; + else if (PBI->getSuccessor(1) == FalseDest && TrueDest != BB) + Opc = Instruction::And; - if ((PBI->getSuccessor(0) == TrueDest && FalseDest != BB) || - (PBI->getSuccessor(1) == FalseDest && TrueDest != BB)) { + if (Opc != Instruction::Shl) { // Clone Cond into the predecessor basic block, and or/and the // two conditions together. Instruction *New = Cond->clone(); @@ -1483,13 +1489,8 @@ static bool FoldBranchToCommonDest(BranchInst *BI) { New->takeName(Cond); Cond->setName(New->getName()+".old"); - Value *NewCond; - if (PBI->getSuccessor(0) == TrueDest) - NewCond = BinaryOperator::CreateOr(PBI->getCondition(), New, "or.cond", - PBI); - else - NewCond = BinaryOperator::CreateOr(PBI->getCondition(), New, "and.cond", - PBI); + Value *NewCond = BinaryOperator::Create(Opc, PBI->getCondition(), + New, "or.cond", PBI); PBI->setCondition(NewCond); if (PBI->getSuccessor(0) == BB) { AddPredecessorToBlock(TrueDest, PredBlock, BB); |