diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-01-09 21:17:37 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-01-09 21:17:37 +0000 |
| commit | b83a6b23dc6f2ee9aa7e92d34dfe7ff8f6746b47 (patch) | |
| tree | f699ae5de7b8a21ea2cc665c30a069e6c8f490c5 /llvm/lib/Target | |
| parent | 3e06bd90b59dbc084cc21a77a3570f16efcbcb83 (diff) | |
| download | bcm5719-llvm-b83a6b23dc6f2ee9aa7e92d34dfe7ff8f6746b47.tar.gz bcm5719-llvm-b83a6b23dc6f2ee9aa7e92d34dfe7ff8f6746b47.zip | |
Teach TargetRegisterInfo how to cram stack slot indexes in with the virtual and
physical register numbers.
This makes the hack used in LiveInterval official, and lets LiveInterval be
oblivious of stack slots.
The isPhysicalRegister() and isVirtualRegister() predicates don't know about
this, so when a variable may contain a stack slot, isStackSlot() should always
be tested first.
llvm-svn: 123128
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/TargetRegisterInfo.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/TargetRegisterInfo.cpp b/llvm/lib/Target/TargetRegisterInfo.cpp index 9c0bfa11b0e..11d57fe2b0c 100644 --- a/llvm/lib/Target/TargetRegisterInfo.cpp +++ b/llvm/lib/Target/TargetRegisterInfo.cpp @@ -43,9 +43,11 @@ TargetRegisterInfo::~TargetRegisterInfo() {} void PrintReg::print(raw_ostream &OS) const { if (!Reg) OS << "%noreg"; + else if (TargetRegisterInfo::isStackSlot(Reg)) + OS << "SS#" << TargetRegisterInfo::stackSlot2Index(Reg); else if (TargetRegisterInfo::isVirtualRegister(Reg)) OS << "%vreg" << TargetRegisterInfo::virtReg2Index(Reg); - else if (TRI) + else if (TRI && Reg < TRI->getNumRegs()) OS << '%' << TRI->getName(Reg); else OS << "%physreg" << Reg; |

