From 34a84ac81c1ab3cd017203f69ce74283f42be15a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 21 Oct 2006 05:34:23 +0000 Subject: [PATCH] allow insertion of a conditional branch with fall-through git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31095 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrInfo.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp index b2b9d557e1a..0cc4c39cfb5 100644 --- a/lib/Target/X86/X86InstrInfo.cpp +++ b/lib/Target/X86/X86InstrInfo.cpp @@ -374,15 +374,21 @@ void X86InstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, const std::vector &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);