diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-02-10 02:38:19 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-02-10 02:38:19 +0000 |
commit | bcf1d7faef6237d6b72b5e89185825493655af30 (patch) | |
tree | f020110c460864f197097536cf188dbc385d1f03 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
parent | de6083463d45c5f7f4e7669a59aa0524bf8f269a (diff) | |
download | bcm5719-llvm-bcf1d7faef6237d6b72b5e89185825493655af30.tar.gz bcm5719-llvm-bcf1d7faef6237d6b72b5e89185825493655af30.zip |
Add live-ins to MachineBasicBlock.
llvm-svn: 34111
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index a626f4fdd15..d67159d61e7 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -15,6 +15,7 @@ #include "llvm/BasicBlock.h" #include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/Target/MRegisterInfo.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" @@ -89,8 +90,20 @@ void MachineBasicBlock::dump() const { print(*cerr.stream()); } +static inline void OutputReg(std::ostream &os, unsigned RegNo, + const MRegisterInfo *MRI = 0) { + if (!RegNo || MRegisterInfo::isPhysicalRegister(RegNo)) { + if (MRI) + os << " %" << MRI->get(RegNo).Name; + else + os << " %mreg(" << RegNo << ")"; + } else + os << " %reg" << RegNo; +} + void MachineBasicBlock::print(std::ostream &OS) const { - if(!getParent()) { + const MachineFunction *MF = getParent(); + if(!MF) { OS << "Can't print out MachineBasicBlock because parent MachineFunction" << " is null\n"; return; @@ -101,6 +114,14 @@ void MachineBasicBlock::print(std::ostream &OS) const { if (LBB) OS << LBB->getName(); OS << " (" << (const void*)this << ", LLVM BB @" << (const void*) LBB << ", ID#" << getNumber()<< "):\n"; + + const MRegisterInfo *MRI = MF->getTarget().getRegisterInfo(); + if (livein_begin() != livein_end()) { + OS << "Live Ins:"; + for (livein_iterator I = livein_begin(), E = livein_end(); I != E; ++I) + OutputReg(OS, *I, MRI); + OS << "\n"; + } // Print the preds of this block according to the CFG. if (!pred_empty()) { OS << " Predecessors according to CFG:"; |