simplify logic a bit
authorChris Lattner <sabre@nondot.org>
Sun, 13 Jul 2008 21:15:11 +0000 (21:15 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 13 Jul 2008 21:15:11 +0000 (21:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53527 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/SimplifyCFG.cpp

index 53725ea76c433ff1127b3b61f902743008640d0f..1caf1182d528564422867b513416fed7d420a557 100644 (file)
@@ -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);