summaryrefslogtreecommitdiff
path: root/lib/Target/MRegisterInfo.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-12-17 04:03:08 +0000
committerChris Lattner <sabre@nondot.org>2002-12-17 04:03:08 +0000
commit9208bbf5c9f12099de3f0a0716c33b0759075f03 (patch)
treef0cfc26ef4c789e348deea5f279838ae34b7c96d /lib/Target/MRegisterInfo.cpp
parent86c69a6cbe0c4c08ab3f57bcd47b11b0479849fc (diff)
downloadllvm-9208bbf5c9f12099de3f0a0716c33b0759075f03.tar.gz
llvm-9208bbf5c9f12099de3f0a0716c33b0759075f03.tar.bz2
llvm-9208bbf5c9f12099de3f0a0716c33b0759075f03.tar.xz
New file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5097 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/MRegisterInfo.cpp')
-rw-r--r--lib/Target/MRegisterInfo.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/Target/MRegisterInfo.cpp b/lib/Target/MRegisterInfo.cpp
new file mode 100644
index 0000000000..c47bb45440
--- /dev/null
+++ b/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;
+}