diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-12-17 04:03:08 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-12-17 04:03:08 +0000 |
| commit | 0eece8418647563e4111c21f2582a352bb645d6b (patch) | |
| tree | 54c28d6795a840305d227a2224e90734f6ce6bdb /llvm/lib | |
| parent | 0ea32b8dd3497f8494b2bb1cfd5bbbd4895eff81 (diff) | |
| download | bcm5719-llvm-0eece8418647563e4111c21f2582a352bb645d6b.tar.gz bcm5719-llvm-0eece8418647563e4111c21f2582a352bb645d6b.zip | |
New file
llvm-svn: 5097
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/MRegisterInfo.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/lib/Target/MRegisterInfo.cpp b/llvm/lib/Target/MRegisterInfo.cpp new file mode 100644 index 00000000000..c47bb45440b --- /dev/null +++ b/llvm/lib/Target/MRegisterInfo.cpp @@ -0,0 +1,32 @@ +//===- MRegisterInfo.cpp - Target Register Information Implementation -----===// +// +// This file implements the MRegisterInfo interface. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Target/MRegisterInfo.h" + +MRegisterInfo::MRegisterInfo(const MRegisterDesc *D, unsigned NR, + regclass_iterator RCB, regclass_iterator RCE) + : Desc(D), NumRegs(NR), RegClassBegin(RCB), RegClassEnd(RCE) { + assert(NumRegs < FirstVirtualRegister && + "Target has too many physical registers!"); + + PhysRegClasses = new const TargetRegisterClass*[NumRegs]; + for (unsigned i = 0; i != NumRegs; ++i) + PhysRegClasses[i] = 0; + + // Fill in the PhysRegClasses map + for (MRegisterInfo::regclass_iterator I = regclass_begin(), + E = regclass_end(); I != E; ++I) + for (unsigned i=0; i < (*I)->getNumRegs(); ++i) { + assert(PhysRegClasses[(*I)->getRegister(i)] == 0 && + "Register in more than one class?"); + PhysRegClasses[(*I)->getRegister(i)] = *I; + } +} + + +MRegisterInfo::~MRegisterInfo() { + delete[] PhysRegClasses; +} |

