allow insertion of a conditional branch with fall-through

llvm-svn: 31095
This commit is contained in:
Chris Lattner 2006-10-21 05:34:23 +00:00
parent 4fe01c42ca
commit 6fca75ec05
1 changed files with 12 additions and 6 deletions

View 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);