allow insertion of a conditional branch with fall-through
authorChris Lattner <sabre@nondot.org>
Sat, 21 Oct 2006 05:34:23 +0000 (05:34 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 21 Oct 2006 05:34:23 +0000 (05:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31095 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrInfo.cpp

index b2b9d557e1a1669482137c79091fc88a9d9fea9f..0cc4c39cfb51506dc53aa924e5ca96584c9df089 100644 (file)
@@ -374,15 +374,21 @@ void X86InstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
                                 const std::vector<MachineOperand> &Cond) const {
   // Shouldn't be a fall through.
   assert(TBB && "InsertBranch must not be told to insert a fallthrough");
-  
-  // Unconditional branch?
-  if (FBB == 0) {
-    BuildMI(&MBB, X86::JMP, 1).addMBB(TBB);
+  assert((Cond.size() == 1 || Cond.size() == 0) &&
+         "X86 branch conditions have one component!");
+
+  if (FBB == 0) { // One way branch.
+    if (Cond.empty()) {
+      // Unconditional branch?
+      BuildMI(&MBB, X86::JMP, 1).addMBB(TBB);
+    } else {
+      // Conditional branch.
+      unsigned Opc = GetCondBranchFromCond((X86::CondCode)Cond[0].getImm());
+      BuildMI(&MBB, Opc, 1).addMBB(TBB);
+    }
     return;
   }
   
-  assert(Cond.size() == 1 && "X86 branch conditions have one component!");
-  
   // Conditional branch.
   unsigned Opc = GetCondBranchFromCond((X86::CondCode)Cond[0].getImm());
   BuildMI(&MBB, Opc, 1).addMBB(TBB);