diff options
Diffstat (limited to 'lib/CodeGen/MachineBasicBlock.cpp')
| -rw-r--r-- | lib/CodeGen/MachineBasicBlock.cpp | 22 | 
1 files changed, 18 insertions, 4 deletions
| diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp index 9215bd583b59..655a0bf4450d 100644 --- a/lib/CodeGen/MachineBasicBlock.cpp +++ b/lib/CodeGen/MachineBasicBlock.cpp @@ -14,15 +14,18 @@  #include "llvm/CodeGen/MachineBasicBlock.h"  #include "llvm/BasicBlock.h"  #include "llvm/CodeGen/MachineFunction.h" +#include "llvm/MC/MCAsmInfo.h" +#include "llvm/MC/MCContext.h"  #include "llvm/Target/TargetRegisterInfo.h"  #include "llvm/Target/TargetData.h"  #include "llvm/Target/TargetInstrDesc.h"  #include "llvm/Target/TargetInstrInfo.h"  #include "llvm/Target/TargetMachine.h" +#include "llvm/Assembly/Writer.h" +#include "llvm/ADT/SmallString.h"  #include "llvm/Support/Debug.h"  #include "llvm/Support/LeakDetector.h"  #include "llvm/Support/raw_ostream.h" -#include "llvm/Assembly/Writer.h"  #include <algorithm>  using namespace llvm; @@ -36,6 +39,18 @@ MachineBasicBlock::~MachineBasicBlock() {    LeakDetector::removeGarbageObject(this);  } +/// getSymbol - Return the MCSymbol for this basic block. +/// +MCSymbol *MachineBasicBlock::getSymbol(MCContext &Ctx) const { +  SmallString<60> Name; +  const MachineFunction *MF = getParent(); +  raw_svector_ostream(Name) +    << MF->getTarget().getMCAsmInfo()->getPrivateGlobalPrefix() << "BB" +    << MF->getFunctionNumber() << '_' << getNumber(); +  return Ctx.GetOrCreateSymbol(Name.str()); +} + +  raw_ostream &llvm::operator<<(raw_ostream &OS, const MachineBasicBlock &MBB) {    MBB.print(OS);    return OS; @@ -525,7 +540,7 @@ bool MachineBasicBlock::CorrectExtraCFGEdges(MachineBasicBlock *DestA,  }  /// findDebugLoc - find the next valid DebugLoc starting at MBBI, skipping -/// any DEBUG_VALUE instructions.  Return UnknownLoc if there is none. +/// any DBG_VALUE instructions.  Return UnknownLoc if there is none.  DebugLoc  MachineBasicBlock::findDebugLoc(MachineBasicBlock::iterator &MBBI) {    DebugLoc DL; @@ -533,8 +548,7 @@ MachineBasicBlock::findDebugLoc(MachineBasicBlock::iterator &MBBI) {    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) +    while (MBBI2 != E && MBBI2->isDebugValue())        MBBI2++;      if (MBBI2 != E)        DL = MBBI2->getDebugLoc(); | 
