diff options
author | Chris Lattner <sabre@nondot.org> | 2005-05-14 05:34:15 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-05-14 05:34:15 +0000 |
commit | 38135af219c48a8626d6af34a92e7e8bb957c81f (patch) | |
tree | 3abc90b90f8cb8654fcb59ab57ec12745fb38f79 /lib | |
parent | a88a260dbd874a3bdd3e47f4f15ab0d7c7803044 (diff) | |
download | llvm-38135af219c48a8626d6af34a92e7e8bb957c81f.tar.gz llvm-38135af219c48a8626d6af34a92e7e8bb957c81f.tar.bz2 llvm-38135af219c48a8626d6af34a92e7e8bb957c81f.tar.xz |
Print the symbolic register name in a register allocator debug dump.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22002 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/LiveInterval.cpp | 28 | ||||
-rw-r--r-- | lib/CodeGen/LiveInterval.h | 8 | ||||
-rw-r--r-- | lib/CodeGen/LiveIntervalAnalysis.cpp | 10 |
3 files changed, 29 insertions, 17 deletions
diff --git a/lib/CodeGen/LiveInterval.cpp b/lib/CodeGen/LiveInterval.cpp index ffa4caab06..01298e9c6c 100644 --- a/lib/CodeGen/LiveInterval.cpp +++ b/lib/CodeGen/LiveInterval.cpp @@ -20,6 +20,7 @@ #include "LiveInterval.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/Target/MRegisterInfo.h" #include <algorithm> #include <iostream> #include <map> @@ -351,17 +352,22 @@ void LiveRange::dump() const { std::cerr << *this << "\n"; } - -std::ostream& llvm::operator<<(std::ostream& os, const LiveInterval& li) { - os << "%reg" << li.reg << ',' << li.weight; - if (li.empty()) - return os << "EMPTY"; - - os << " = "; - for (LiveInterval::Ranges::const_iterator i = li.ranges.begin(), - e = li.ranges.end(); i != e; ++i) - os << *i; - return os; +void LiveInterval::print(std::ostream &OS, const MRegisterInfo *MRI) const { + if (MRI && MRegisterInfo::isPhysicalRegister(reg)) + OS << MRI->getName(reg); + else + OS << "%reg" << reg; + + OS << ',' << weight; + + if (empty()) + OS << "EMPTY"; + else { + OS << " = "; + for (LiveInterval::Ranges::const_iterator I = ranges.begin(), + E = ranges.end(); I != E; ++I) + OS << *I; + } } void LiveInterval::dump() const { diff --git a/lib/CodeGen/LiveInterval.h b/lib/CodeGen/LiveInterval.h index d67e018b47..6cac0960b2 100644 --- a/lib/CodeGen/LiveInterval.h +++ b/lib/CodeGen/LiveInterval.h @@ -26,6 +26,8 @@ #include <cassert> namespace llvm { + class MRegisterInfo; + /// LiveRange structure - This represents a simple register range in the /// program, with an inclusive start point and an exclusive end point. /// These ranges are rendered as [start,end). @@ -175,6 +177,7 @@ namespace llvm { return beginNumber() < other.beginNumber(); } + void print(std::ostream &OS, const MRegisterInfo *MRI = 0) const; void dump() const; private: @@ -185,7 +188,10 @@ namespace llvm { LiveInterval& operator=(const LiveInterval& rhs); // DO NOT IMPLEMENT }; - std::ostream& operator<<(std::ostream& os, const LiveInterval& li); + inline std::ostream &operator<<(std::ostream &OS, const LiveInterval &LI) { + LI.print(OS); + return OS; + } } #endif diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index d75bf3fb0e..9f0bce8296 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -142,11 +142,11 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) { numIntervals += getNumIntervals(); -#if 1 - DEBUG(std::cerr << "********** INTERVALS **********\n"); - DEBUG(for (iterator I = begin(), E = end(); I != E; ++I) - std::cerr << I->second << "\n"); -#endif + DEBUG(std::cerr << "********** INTERVALS **********\n"; + for (iterator I = begin(), E = end(); I != E; ++I) { + I->second.print(std::cerr, mri_); + std::cerr << "\n"; + }); // join intervals if requested if (EnableJoining) joinIntervals(); |