diff options
Diffstat (limited to 'lib/CodeGen/MachineBasicBlock.cpp')
| -rw-r--r-- | lib/CodeGen/MachineBasicBlock.cpp | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp index e2ce642cfd6d..9215bd583b59 100644 --- a/lib/CodeGen/MachineBasicBlock.cpp +++ b/lib/CodeGen/MachineBasicBlock.cpp @@ -378,7 +378,7 @@ bool MachineBasicBlock::canFallThrough() {    MachineBasicBlock *TBB = 0, *FBB = 0;    SmallVector<MachineOperand, 4> Cond;    const TargetInstrInfo *TII = getParent()->getTarget().getInstrInfo(); -  if (TII->AnalyzeBranch(*this, TBB, FBB, Cond, true)) { +  if (TII->AnalyzeBranch(*this, TBB, FBB, Cond)) {      // If we couldn't analyze the branch, examine the last instruction.      // If the block doesn't end in a known control barrier, assume fallthrough      // is possible. The isPredicable check is needed because this code can be @@ -524,7 +524,26 @@ bool MachineBasicBlock::CorrectExtraCFGEdges(MachineBasicBlock *DestA,    return MadeChange;  } +/// findDebugLoc - find the next valid DebugLoc starting at MBBI, skipping +/// any DEBUG_VALUE instructions.  Return UnknownLoc if there is none. +DebugLoc +MachineBasicBlock::findDebugLoc(MachineBasicBlock::iterator &MBBI) { +  DebugLoc DL; +  MachineBasicBlock::iterator E = end(); +  if (MBBI != E) { +    // Skip debug declarations, we don't want a DebugLoc from them. +    MachineBasicBlock::iterator MBBI2 = MBBI; +    while (MBBI2 != E && +           MBBI2->getOpcode()==TargetInstrInfo::DEBUG_VALUE) +      MBBI2++; +    if (MBBI2 != E) +      DL = MBBI2->getDebugLoc(); +  } +  return DL; +} +  void llvm::WriteAsOperand(raw_ostream &OS, const MachineBasicBlock *MBB,                            bool t) {    OS << "BB#" << MBB->getNumber();  } + | 
